單片機之中斷優先級

當單片機正在處理某一事件的時候外界發生了緊急事件請求,要求單片機暫停當前的工作而去處理這個緊急的事件,處理完成後,再回到原來被中斷的地方繼續原來的工作,這樣的過程就叫做中斷。但是中斷髮生時或者同時幾個中斷髮生時,究竟先執行哪個中斷,就是所謂的中斷優先級,中斷優先級有兩種,一種是搶佔優先級,一種是固有優先級。


搶佔優先級:搶佔的概念就是優先級高的中斷可以打斷優先級低的中斷。當進入低優先級中斷中執行時,又發生了高級優先的中斷,則立即進入高優先級中斷,執行完之後再返回處理低優先級的中斷。搶佔優先級由圖1的IP寄存器控制,設置了某一位為1,則這一位的優先級就比其他為的優先級高。

單片機之中斷優先級

圖1:中斷優先級控制寄存器

PS:串口中斷優先級控制位

PT1:定時器1中斷優先級控制位

PX1:外部中斷1中斷優先級控制位

PT0: 定時器0中斷優先級控制位

PX0:外部中斷0中斷優先級控制位


固有優先級:也稱為非搶佔優先級。各個中斷都有一個默認的優先級順序,如圖2所示。

單片機之中斷優先級

圖2:中斷優先順序

這裡的優先級並不具有搶佔的特性,也就是說即使在低優先級中斷執行過程中又發生了高優先級的中斷,那麼高優先級的中斷也只能等到低優先級的中斷執行完成後才能得到響應。既然不能搶佔,那這個優先級有什麼作用呢?

答案是當多箇中斷同時存在時,就需要根據這個優先級順序,當然幾個中斷能夠同時發生的概率很低,但是有一種情況卻很常見,就是當關閉了總中斷,即EA=0後,經過一段時間重新打開中斷,在這段時間裡,因為總中斷關閉了,這段時間裡即使有幾個中斷先後發生了也得不到響應,而當總中斷再次打開後,它們就會同時請求響應了,這個時候就需要有先後順序才行,而固有優先級就是這個順序。


搶佔優先級和固有優先級相互補充,才使得單片機的中斷系統能夠有條不紊的工作,因此只有理解了中斷優先級才能正確的編寫中斷程序。


分享到:


相關文章: