当前位置: 代码迷 >> 单片机 >> 单片机中外部中断怎么退出
  详细解决方案

单片机中外部中断怎么退出

热度:110   发布时间:2016-04-28 16:25:25.0
单片机中外部中断如何退出
我是51单片机的初学者,最近用汇编编一个流水灯的程序,要求当按下p3.2的按钮时,流水灯由原来的按顺序依次亮变为同时闪烁。触发方式为边沿触发,下面是我的中断服务程序:
AA: PUSH PSW
PUSH ACC
L5: MOV A,#0
MOV R2,#6
MOV P1,A
CALL DELAY
L6: MOV A,#0FFH
MOV P1,A
CALL DELAY
DJNZ R2,L5
POP ACC
POP PSW
RETI
但是仿真的时候,只要按下那个键,就陷入死循环了。那位高手帮我看一下,谢谢了!

------解决方案--------------------
照理应该不会,外部中断标志为硬件清零,可能按键问题使得反复触发中断~作下述修改即可。
AA: PUSH PSW
PUSH ACC
L5: MOV A,#0
MOV R2,#6
MOV P1,A
CALL DELAY
L6: MOV A,#0FFH
MOV P1,A
CALL DELAY
DJNZ R2,L5
POP ACC
POP PSW
CLR EA
RETI
祝顺利~
------解决方案--------------------
如果确是按键问题,硬件上加消抖电路,软件上可加延时程序,一般为5~10ms即可。
------解决方案--------------------
AA: PUSH PSW
PUSH ACC
MOV R2,#6
L5: MOV A,#0
//MOV R2,#6 移到上面吧,否则R2永远是6怎么退出
MOV P1,A
CALL DELAY
L6: MOV A,#0FFH
MOV P1,A
CALL DELAY
DJNZ R2,L5
POP ACC
POP PSW
RETI
  相关解决方案