我对外部中断有点疑问。刚刚写了个小程序。
我实验之后,效果有点怪。理论上,应该是
上电复位——>循环主程序——>外部触发时,执行中断程序,全灭全亮【一】次——>中断结束,返回主程序
但现在,实验发现,实际是:
上电复位——>循环主程序——>外部触发时,执行中断程序,全灭全亮【两】次——>【全亮】约10秒——>中断结束,返回主程序
我的程序如下
ORG 0000H
JMP START ;跳转至主程序
ORG 0013H
JMP INT00 ;外部中断1入口
ORG 0030H
START:
MOV SP,#60H ;初始化堆栈
SETB P3.3 ;INT1口置1
SETB EA ;使能中断
SETB IT1 ;外部中断1 使用低电平触发
SETB EX1 ;使能外部中断
LOOP:
MOV P2,#10101010b ;p2口接8个led的负极, 1为灯灭,0为灯亮
CALL DELAY ;调用延时程序
MOV P2,#01010101b ;
CALL DELAY
JMP LOOP ;循环
INT00:
MOV P2,#0FFH ;全灭
CALL DELAY
MOV P2,#00H ;全亮
CALL DELAY
SETB P3.3
RETI
DELAY: ;延时0.5秒
MOV R1,#10
D1:
MOV R2,#100
D2:
MOV R3,#248
DJNZ R3,$
DJNZ R2,D2
DJNZ R1,D1
RET
END