51微控制器,如果中斷函式比較長,執行到一半又觸發了這個中斷

2021-03-27 22:38:07 字數 1600 閱讀 8787

1樓:

51微控制器中,中斷分高低兩個優先順序,高優先順序的中斷能打斷低優先順序的中斷。

但同級中斷是不能打斷同級中斷的!無論該中斷函式有多長,在執行到一半這個中斷又發生了,還是要等到該中斷函式執行完畢,並再執行了一條主程式指令後才會再次進入該中斷。

不過,若樓主恰好在這個低優先順序中斷服務程式中修改了該中斷為高優先順序,那麼如果該中斷函式比較長,執行到一半又觸發了這個中斷,則該中斷函式就會被重新從頭開始執行(中斷巢狀)。這是因為除串列埠中斷以外的其他中斷,在 cpu 響應該中斷,程式轉入該中斷函式前就已經將該中斷的中斷標誌清零了。

另外,51的串列埠中斷比較特別,因為需要軟體清除串列埠中斷標誌,所以只要在未清串列埠中斷標誌前,是不會發生上述這樣的中斷巢狀的。

2樓:匿名使用者

如果同一個中斷觸發的話,會在你中斷退出後馬上又進入中斷。如果退出中斷時清除了標誌的話,就當什麼都沒發生。

不會把你正在執行的中斷程式給中斷了。除非是另外一個更高優先順序的中斷被觸發。

3樓:in奮鬥

會重新執行中斷函式 執行完以後再接著剛才的一半執行

51系列微控制器在處理中斷時影響主程式嗎??處理中斷程式時主程式還在繼續執行嗎??還是已經停止了

4樓:

遇到中斷,程式執行中斷程式,中斷程式執行完成後,主程式繼續往下執行。

比方你正在喝茶,喝到一半時候,來個個**,這時候你得放下茶杯去接**,**接完後,剩餘一半的茶繼續喝。明白了嗎?

5樓:做而論道

微控制器裡面只有一個cpu,cpu只能執行一個程式。

cpu執行中斷程式時,就把主程式停下了。

因此,這才叫做「中斷」。

6樓:詹古香喬慧

主程程式出現多箇中斷按中斷優先順序處理,處理中斷程式後返回原中斷處繼續執行下面程式。

7樓:練鴻才荀悅

你還沒有理解中斷的意義!中斷產生了,微控制器就停止執行主函式,進入中斷執行中斷(中斷得開啟),當執行完中斷後,微控制器又回到主函式執行。就像我現在在看別人提出的問題,當我看到你的問題時(中斷產生),我就進來回答(執行中斷),回答完後我得繼續看別人提出的問題(返回主函式),我回去看別人提出的問題時既不會從頭看起,也不會往後看很多,而是從你問題後的問題繼續看!

51微控制器執行完外部中斷0後,想讓他返回主函式的開頭從新執行,繼續檢測中斷執行中斷在返回主函式開頭

8樓:匿名使用者

你主函式中除了初始化的語句外,其它的處理部分都放在while(1)的迴圈中啊,然後 外部中

專斷中設定一

屬個標誌位,舉例說明,比如。下面例子,是外中斷一次,p0取反一次,你如果還想有其它資料處理,可以把語句寫在while(1)中。中斷執行後,判斷flag,然後會自動回到主函式中。

void main(void)

可以在此新增語句。 }

}void it0(void) interrupt 0 using 0

9樓:匿名使用者

這個思路不對吧?中斷來了自然就去執行中斷函式了,還要到主函式開頭等待嗎?

51微控制器中斷執行過程?坐等,51微控制器中斷中的斷點地址問題,坐等!!!!

51微控制器中斷執行過程,如外部中斷。當 cpu 檢測到 有 中斷觸發 訊號後,首先 執行完成 當前執行的指令,將下一條指令 的 地址 壓入堆疊,cpu 進入中斷 入口 地址,開始 執行 中斷服務程式,當然在中斷服務程式中不能破壞正常執行 程式的各種 暫存器的 狀態 和 資料,中斷服務 程式執行 完...

51微控制器URAT中斷接收資料,51微控制器串列埠接收多個字元 假如是4位元組 ,是分4次中斷傳輸的,還是一次中斷完成的?

t1定時器的初始化程式 void init1 main void main tmod 0x01 th0 th0 tl0 tl0 es 1 允許uart串列埠的中斷ri 0 ea 1 et0 1 tr0 1 init1 main tmod,被初始化了兩次不同的數值,只有最後一次,才是有效的。應該統一使...

簡述MCS 51微控制器的中斷響應過程

正在看書是 響了,暫停看書,去接 接完 從剛才的地方繼續看書!這個過程就是中斷響應的過程!而且呼叫方是否是美女直接影響中斷響應級別!中斷,無非就是你正在執行當前 程式的時候有中斷條件產生,進入中斷函式,中如專果是屬彙編寫的程式就要手動保護中斷要用的暫存器裡之前的程式執行的資料,壓棧 執行完中斷程式後...