看板 ASM 關於我們 聯絡資訊
※ 引述《peterweli (Fang)》之銘言: : 我現在要用兩個中斷 , int0和timer0 , int0優先 : 假如已經進入了timer0正在數 : 在timer0其間 , 使int0中斷 : int0後 , 理論上會跳回timer0 : 有辦法執行完int0後 , 不跳回timer0 ,跳到我指定的地方去嗎? 你的敘述有點怪,是指說 1. timer0 中斷發生 2. int0 中斷發生 3. int0 reti 4. timer0 reti 這樣嗎? 不過這樣的話,會有一個現象,就是根本不會跳到 int0 的中斷才對 中斷優先權是指當中斷同時發生時,先處理那一個中斷 而中斷發生時,一般為了避免重覆發生中斷,會在中斷發生時,讓其他中斷不發生 所以,除非你在 timer0 中有把那個 bit 重設,不然不可能在 timer0 中斷程式中 讓 int0 中斷產生 不過你有可能是想要做這樣的動作: 1. timer0 計數,時間到後產生中斷 2. int0 中斷發生 3. int0 reti 4. timer0 不產生中斷 也就是在 int0 產生後,讓 timer0 的中斷不再發生 如果是這樣的話,那就是在 int0 的中斷程式中,將 timer0 interrupt disable 如果要跳到特定的位置時,要把那個位置 push 進 stack 然後 reti,並記得把中斷 前的位置 pop 掉 只看你的敘述,不太清楚你要做啥東西 -- 我是路人甲 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.117.120
peterweli:我是要做計時器,計時直到int0中斷為止,所以int0後,不要 07/24 21:03
peterweli:回到之前數到一半的timer0,所以才想他直接跳出不要回去. 07/24 21:05
peterweli:感謝r大喔~ 07/24 21:14
ruemann:那沒有那麼麻煩,在int0中把timer0的interrupt disable 07/24 21:55
ruemann:就可以了,至於要不要跳到特定的位址,我想是沒有必要的 07/24 21:55
peterweli:有可以直接將timer0 interrupt disable的指令嗎?組合語 07/25 20:45
peterweli:言有喔?課本好像沒看到捏... 07/25 20:46
ruemann:以8051為例,是把 ET0 清除(disable interrupt) 07/26 00:40
ruemann:或是把 TR0 清除 (stop timer0) 07/26 00:40
peterweli:恩恩 我會哩 謝謝r大唷~~ 07/27 19:48