請問這個程序執行完一次中斷之后返回到哪里繼續執行呢?
我怎么一直覺得它只執行一次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.denmoz.com/bbs/) | Powered by Discuz! X3.1 |