為什麼微控制器執行中斷後不能跳回主程式程式如下

2021-03-03 20:52:09 字數 1500 閱讀 7445

1樓:匿名使用者

象你的程式,應該跳回主程式p2=a,並且一直保持p2=0x3f,再次中斷後還是這樣p2=0x3f,所以中斷一次和多次中斷沒有什麼區別 你是根據什麼現象說明沒有跳回主程式

2樓:匿名使用者

是不是一直有中斷觸發啊

微控制器中中斷服務子程式沒執行完能強行跳回主程式嗎,若不能為什麼?若能,相應的中斷標誌位會被清零嗎

3樓:匿名使用者

當然可以強行跳回主程式,不影響中斷標誌位的清零,只要進入中斷,該硬體清零的就自動清零,但強行跳回主程式,微控制器會認為一直在執行中斷程式,因此以後有中斷髮生時也不會再進入中斷程式。所以不能這樣做,用reti就會跳回主程式。

4樓:寡人天才

goto語句能隨便跳

硬體清零的中斷標誌會清0

軟體手動清0的中斷標誌不會自動清0

為什麼微控制器中斷程式執行時主程式還在慢慢執行?初學~~~

5樓:匿名使用者

你從哪看出來程式還在執行的,你的中斷只有一句,馬上就執行完成了,就跳出中斷函式繼續執行之前的程式了,你要是想觀察中斷後主程式是否執行,應該用死迴圈或者延時吧程式指標留在中斷函式裡,比如你可以在中斷裡延時個2s,等跳出中斷後再觀察主程式跑到哪兒了就一目瞭然了

6樓:

前面的說的都有各自的說明,我想說的是,你選擇低電平觸發,你怎麼觸發它?

手動?還是一直給它一個低電平?如果一直給它低電平的話,因為中斷是隨機的,我們不可能知道它什麼時候會發生中斷,又因為你的終端函式太短了,執行一次中斷只需要一個機器週期,一直接地的話,隨時都在發生中斷,所以你原先設定的0.

5s變一次,就變成了差不多3s變一次,其實你仔細觀察它或許不是精確的幾s變一次,由於中斷的隨機性,導致你的0.5s的時間也發生了隨機性。

7樓:生活如歌

和前面的朋友說的一樣。你的中斷程式太短,執行時間很快,所以你感覺不到它的執行。

8樓:匿名使用者

微控制器是單執行緒的,不可能同時執行。

9樓:匿名使用者

建議先了解一下中斷的概念。它是處理異常事件時暫停正在執行的程式,跳轉到一個特定地址去響應異常事件。隨後繼續執行原來的程式。詳細概念到書上查查或網上搜一下

10樓:匿名使用者

遇到和您一樣的問題,請問您現在知道原因嗎?

微控制器定時中斷執行完中斷程式後將返回主程式**

11樓:匿名使用者

當中斷髮生時,微控制器如果響應中斷,則立即將正在執行的程式停住;記錄執行程式的位置;然後轉中斷服務程式;中斷服務程式執行完後,返回剛才中斷打斷程式執行的位置繼續執行,就好像沒有中斷過一樣

12樓:舊而久之

在哪中斷的就回到**唄,這個不一定看你定時多少

c語言為什麼微控制器中斷中不能用跳轉

在中斷子函式中是不能用跳轉語句跳轉回主程式的,而是中斷子函式執行完了,自己返回到斷點的,只有自己返回到斷點處,才能恢復中斷狀態,幷包括恢復堆疊,否則就會出現中斷混亂,而用多次中斷後堆疊溢位了。通俗點bai講吧,中斷就是一個 du 插隊者,也就是zhi 你插隊也就dao行了,你現在 還搞得 拉一幫小弟...

51微控制器程式出錯不執行定時器中斷1同時delay函式也有錯求高手指點

tmod 0x01 65536 50 6 改為tmod 0x11 65536 50 256 只有程式沒有電路原理很難找錯誤 可以同時執行兩個定時器 51微控制器程式定時器怎麼這麼不準確啊,求高手指點!這是編譯器造成的,你最好用debug模式看看生成的彙編 是什麼摸樣,比較一下你那三種方 式給th0和...

什麼是微控制器的中斷序號?中斷序號1表示什麼中斷序號3表示什麼

中斷向量的位置,你可以看微控制器的組合語言。0表示外部中斷0,1表示定時器中斷0,2表示外部中斷1,3表示定時器中斷1,4表示串列埠中斷。微控制器的中斷序號決定該中斷的中斷向量的位置 即中斷服務程式的入口地址 即 中斷序號就是中斷源在微控制器的中斷向量表中的位置序號。具體關係 中斷向量 0003h ...