标题:一个89c51单片机外中断程序,请大家帮忙改改错
只看楼主
cgh961907340
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-12-1
结帖率:0
 问题点数:0 回复次数:3 
一个89c51单片机外中断程序,请大家帮忙改改错
    一个外中断程序,老师说最好不要再中断里加入延时,为什么呢?要怎么改?可不可以用等待?程序如下:

  ORG   00H
  SJMP  MIAN
  ORG   03H
  SJMP  INT0S
MAIN:MOV IE,#81H
     MOV TCON,#01H
     MOV A,#0FEH
     MOV P3,#0FFH
ST1:MOV P2,A
     ACALL DELAY
     RL A
     SJMP  ST1
INT0S:PUSH ACC
      MOV  R2,#08H
LOOP:CLR A
     MOV P2,A
     ACALL DEALY
     MOV A,#0FFH
     MOV P2,A
     ACALL DELAY
     DJNZ  R2,LOOP
     POP ACC
     RETI
DELAY:MOV R7,#250
D1:  MOV R6,#250
D2: NOP
     NOP
     NOP
     NOP
     NOP
     NOP
     DJNZ R6,D2
     DJNZ R7,D1
     RET
     END
搜索更多相关主题的帖子: 单片机 延时 最好 
2012-03-28 16:28
cgh961907340
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-12-1
得分:0 
唉唉。。。。各位都来帮帮忙啊,我自己改了可是不行啊,一按开关没反应的,为什么呢???
  ORG   00H
  SJMP  STAR
  ORG   03H
  SJMP  INT0S
STAR:MOV IE,#81H
     MOV TCON,#01H
     MOV A,#0FEH
     MOV P3,#0FFH
ST1:MOV P2,A
     ACALL DELAY
     RL A
     SJMP  ST1
INT0S:PUSH ACC
      MOV  R2,#8
      MOV  R3,#20
LOOP:MOV TMOD,#10H
     MOV TH0,#3CH
     MOV TL0,#0B0H
     SETB TR1
     CLR A
     MOV P2,A
     DJNZ R3,LOOP
     MOV A,#0FFH
     MOV P2,A
     DJNZ R2,LOOP
     POP ACC
     RETI
DELAY:MOV R7,#250
D1:  MOV R6,#250
D2: NOP
     NOP
     NOP
     NOP
     NOP
     NOP
     DJNZ R6,D2
     DJNZ R7,D1
     RET
     END
2012-03-28 17:45
lcawen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:184
注 册:2011-8-11
得分:0 
你改的还是用了延时,只不过不是调用延时函数而已
2012-04-10 13:26
huaziforever
Rank: 1
等 级:新手上路
帖 子:7
专家分:8
注 册:2010-12-24
得分:0 
告诉你,把你在中断里想要做的事设一个标志flag,然后到主程序循环里来做这件事,就对了。
2012-06-24 22:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-364587-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.854323 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved