請問這個程序執(zhí)行完一次中斷之后返回到哪里繼續(xù)執(zhí)行呢?
我怎么一直覺得它只執(zhí)行一次P1.0取反之后就不再返回到主程序執(zhí)行什么了呢?
究竟返回后到哪?又去執(zhí)行什么呢?
START: | MOV TMOD,#01H | ;T0為定時器狀態(tài),工作方式1 |
MOV TL0,#0CH | ;T0的低位定時初值 | |
MOV TH0,#0FEH | ;T0的高位定時初值 | |
MOV TCON,#10H | ;打開T0 | |
SETB ET0 | ;1ET0,即允許T0中斷 | |
SETB EA | ;1EA,即充許全局中斷 | |
AJMP $ | ;動態(tài)暫存 | |
000BH: | AJMP IST0 | ;轉(zhuǎn)入T0中斷服務(wù)程序入口地址IST0 |
IST0: | MOV TL0,#0CH | ;重置定時器初值 |
MOV TH0,#0FEH | ;重置定時器初值 | |
CPL P1.0 | ;P1.0取反 | |
RET1 | ;中斷返回 |
樓主應(yīng)該是典型的一竅不通
不是想打擊你,,,,后面的注釋是多么的清晰
程序上看到的是只有一個P1.0取反,但不是說這個地方只會運(yùn)行一次,每次T0產(chǎn)生中斷,都會執(zhí)行CPL P1.0
RETI 后面的 注釋說得很清楚,該指令是中斷返回,也就是退出中斷,會到原來的地方也就是AJMP $
對呀 不是您打擊 確實是小白
貌似懂了些 就是說 AJMP $是在原地跳轉(zhuǎn) 等到定時器溢出后 TF0=1 中斷T0響應(yīng) 再次給定時器賦初值 再次開始計時 同時TF0自動被清零 程序返回 AJMP $繼續(xù)等待定時器溢出
我的理解對嗎 還是說在TF0被清零之后 中斷開關(guān)EA ET0也清零 程序回到AJMP $不再允許中斷程序執(zhí)行?
摸索吧,本人不看教程,沒有你需要的東西
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |