注册 登录
编程论坛 单片机编程

一个89c51单片机外中断程序,请大家帮忙改改错

cgh961907340 发布于 2012-03-28 16:28, 718 次点击
    一个外中断程序,老师说最好不要再中断里加入延时,为什么呢?要怎么改?可不可以用等待?程序如下:

  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
3 回复
#2
cgh9619073402012-03-28 17:45
唉唉。。。。各位都来帮帮忙啊,我自己改了可是不行啊,一按开关没反应的,为什么呢???
  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
#3
lcawen2012-04-10 13:26
你改的还是用了延时,只不过不是调用延时函数而已
#4
huaziforever2012-06-24 22:34
告诉你,把你在中断里想要做的事设一个标志flag,然后到主程序循环里来做这件事,就对了。
1