“中斷”與“輪詢”
“中斷”處理并非單片機控制系統所特有的現象,在我們的日常生活中“中斷”的例子也隨處可見。讓我們來看看身邊的例子吧。比如盡管您知道今天有快遞送到,但卻不知道快遞送來的具體時間,在這種情況下,也許您會選擇坐在客廳里邊看書,邊等快遞送來。在您看書其間,門鈴響的時候就表明快遞到了(有事件發生)。這就是“中斷”的例子。
圖1:“中斷”處理示意圖
如果不用“中斷”處理等待方式的話,在看書的過程中,您就不得不經常走到門口去確認快遞是否到了。像這樣頻繁地確認是否有“事件”發生的現象,在單片機控制中是通過軟件編程完成的。我們把這種處理方式稱為“輪詢”(圖2)。
圖2:“輪詢”處理示意圖
單片機中的中斷處理
實際上單片機的中斷處理更加復雜,還是以上述事例(邊看書邊等待快遞送來)進行說明。
現在,相信大家對“中斷”已經有所了解了。下面我們來看看在實際的“中斷”處理中,單片機內部是怎樣進行的。
在單片機中,通知事件發生的中斷信號一般來自于外部INT引腳的輸入信號,或是來自定時器、串行I/F等內部的外圍功能電路的信號。接收中斷信號的是中斷控制器。中斷控制器根據產生的中斷信號的優先級,按優先級順序發送給CPU。當然,被設定為無效的設備所傳送來的中斷信號是不會傳給CPU的,您也可以屏蔽或忽略它們。CPU根據從中斷控制器接收到的指示,執行相應的程序(中斷處理)。
實時處理中斷
“中斷”與“輪詢”看起來好象可以進行同樣的處理,實際上它們有很大的區別。區別在于當事件發生時,中斷方式可以立刻執行對應事件的處理。中斷的這種處理方式被稱為是實時處理。
而在“輪詢”方式中,如果對發生事件的監視周期較短的話也可以實現實時處理,但是在通常情況下,總是有多個事件發生,有時主程序也不允許太短的循環,所以,難以實現實時處理。
當“中斷”發生時,由于從檢測到事件發生到切換到中斷處理只需要幾十至幾百個時鐘,所以可以在短時間內對應事件進行處理。
例如,在鍵輸入或開關輸入的情況下,對于單片機來說開關何時將被按下是不可預測的事件。所以,如果在主程序中以“輪詢”的方式監視的話,將會無端浪費CPU的處理時間,而且,如果要進行多個“輪詢”處理,則“輪詢”的周期將會變長。
如果不具備單片機的硬件知識,是很難理解和應用“中斷”的。“中斷”的內容也確實有些難度,但是它卻是單片機系統控制中無法避開的一種處理。所以,大家一定要加深對單片機知識的理解,并熟練掌握“中斷”的基本知識和使用方法!
責任編輯人:CC
-
單片機
+關注
關注
6043文章
44622瀏覽量
638535 -
中斷處理
+關注
關注
0文章
94瀏覽量
11015
發布評論請先 登錄
相關推薦
評論