ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INTRP0 ;外部中断0
ORG 000BH
LJMP TIME0;T0中断
ORG 0030H
MAIN:
MOV SP,#05FH
MOV PSW,#00H
MOV TCON,#00H
MOV IE,#00H
MOV TMOD,#00H
SETB IT0 ;下降沿触发外部中断0
SETB EX0 ;外部中断0 允许
MOV TMOD,#01H ;T0模式1
MOV TL0,#00H ;time0设初值
MOV TH0,#04CH
SETB ET0 ;time0中断允许
SETB PT0 ;time0中断高优先级
SETB EA ;开中断
SETB TR0
LOOP:
MOV TL0,#00H ;喂狗
MOV TH0,#04CH
LJMP LOOP ; LOOP
INTRP0: CLR P0.0 ;外部中断0服务程序
CGQ1PD: JNB P1.0,CGQ1 ;SENSOR1
SJMP CGQ1PD
CGQ1: RETI
TIME0: ;time0服务程序
MOV TL0,#00H
MOV TH0,#04CH
POP ACC
POP ACC
CLR A
PUSH ACC
PUSH ACC
FANHUI:RETI
END
1.51单片机。当我触发外部中断0后执行外部中断0服务程序,保持p1.0一直为1,一直执行外部中断0服务程序不退出,此时time0高优先级溢出中断,跳到time0终端服务程序执行,后调到ORG 0000H处从头执行,执行一段时间后,我再触发外部中断0,怎么不跳外部中断0执行啊。我的问题出在哪里?
2.用kei uvison3调试,在执行外部中断0服务程序中,再给一次外部中断0触发,当程序退出外部中断0服务程序后回到主程序,刚执行一步就又调回外部中断0服务程序。为什么。单片机不是屏蔽同级中断的吗?
以上问题都是在kei uvison3调试发现的。其中第一个问题烧到板子上问题依旧。 |