请问这个程序执行完一次中断之后返回到哪里继续执行呢?
我怎么一直觉得它只执行一次P1.0取反之后就不再返回到主程序执行什么了呢?
究竟返回后到哪?又去执行什么呢?
START: | MOV TMOD,#01H | ;T0为定时器状态,工作方式1 |
MOV TL0,#0CH | ;T0的低位定时初值 | |
MOV TH0,#0FEH | ;T0的高位定时初值 | |
MOV TCON,#10H | ;打开T0 | |
SETB ET0 | ;1ET0,即允许T0中断 | |
SETB EA | ;1EA,即充许全局中断 | |
AJMP $ | ;动态暂存 | |
000BH: | AJMP IST0 | ;转入T0中断服务程序入口地址IST0 |
IST0: | MOV TL0,#0CH | ;重置定时器初值 |
MOV TH0,#0FEH | ;重置定时器初值 | |
CPL P1.0 | ;P1.0取反 | |
RET1 | ;中断返回 |
楼主应该是典型的一窍不通
不是想打击你,,,,后面的注释是多么的清晰
程序上看到的是只有一个P1.0取反,但不是说这个地方只会运行一次,每次T0产生中断,都会执行CPL P1.0
RETI 后面的 注释说得很清楚,该指令是中断返回,也就是退出中断,会到原来的地方也就是AJMP $
对呀 不是您打击 确实是小白
貌似懂了些 就是说 AJMP $是在原地跳转 等到定时器溢出后 TF0=1 中断T0响应 再次给定时器赋初值 再次开始计时 同时TF0自动被清零 程序返回 AJMP $继续等待定时器溢出
我的理解对吗 还是说在TF0被清零之后 中断开关EA ET0也清零 程序回到AJMP $不再允许中断程序执行?
摸索吧,本人不看教程,没有你需要的东西
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |