主题:中断的应用问题???
strugglemyself
[专家分:100] 发布于 2008-11-13 22:38:00
org 0100h
ajmp main
org 0003h
ajmp ZD
main:mov a,#01h
mov p1,#00h
mov r5,0ffh
setb ea
setb ex0
setb it0
here: sjmp $
loop:mov p1,a
rl a
acall delay
ajmp loop
delay:mov r4,#0ffh
delay1:djnz r4,delay1
djnz r5,delay
ret
ZD: mov p1,#0aah
reti
end
请问:中断执行完后,为什么不继续执行 loop呢???
那么中断执行完后,具体返回到什么地方??
回复列表 (共1个回复)
沙发
cnhanxiao [专家分:450] 发布于 2008-11-14 10:09:00
org 0100h ;!!!——建议改成org 0000h
ajmp main
org 0003h ;!!!你使用外部中断0?
ajmp ZD
;建议增加org 0030h
main:mov a,#01h
mov p1,#00h
mov r5,0ffh
setb ea
setb ex0
setb it0 ;???你其实好象用定时器0中断吧?
;而你开始的程序定义的是外部中断0
here: ;标号没用处
sjmp $ ;!!!这是死循环,程序在此等待外部中断却永远得不到
loop: ;这段程序,即使你确实改正成定时器中断,也永远不会被执行,想想为什么?
mov p1,a
rl a
acall delay
ajmp loop
delay:
mov r4,#0ffh
delay1:
djnz r4,delay1
djnz r5,delay
ret
ZD: mov p1,#0aah ;你的中断程序似乎永远只向P1口发0aah,状态不发生变化,似乎成了多余的啊:)
reti
end
我来回复