ORG 000H
LJMP START
ORG 000BH
LJMP TO_ISR
START: MOV TMOD,#11H
MOV TH0,#0DBH
MOV TL0,#0FFH
CLR TF0
SETB TR0
SETB ET0 ;T0中断允许位
SETB EA ;中断允许控制位
LOOP: SJMP LOOP
TO_ISR: CLR TF0
MOV TH0,#0DBH
MOV TL0,#0FFH
RETI
END
这是个定时中断程序,想问下大神,这个程序是不是执行LOOP:SJMP LOOP后
跳转到ORG 000BH进入中断程序?那么执行完TO—ISR程序碰到RETI后是不是
又返回LOOP:SJMP LOOP执行呢?若不是,返回的是哪个位置呢?谢谢解答!
第二个问题是对的。第一个问题不对。
中断,顾名思义,不管你的程序运行在哪儿,一旦发生中断(包括各种中断源),就会暂停下正在执行的程序,转去执行中断服务程序(比如你的T0_ISR !注意只能是下划线!)。
当执行完中断服务程序,也就是到“RETI”处,再回到刚才暂停处继续向下运行。至于怎么回到原来暂停处的你暂时可以不去管它。知道是由硬件来实现的就可以了。
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |