單片機(jī)控制系統(tǒng)中不可缺少的“中斷”基礎(chǔ)知識(shí)
本連載講解作為嵌入式系統(tǒng)開發(fā)技術(shù)人員所必需具備的單片機(jī)的基礎(chǔ)知識(shí)。繼《《嵌入式編程之單片機(jī)的基本構(gòu)成、工作原理》、《嵌入式編程之單片機(jī)的外圍功能電路》、《單片機(jī)的編程語言和開發(fā)環(huán)境》和《單片機(jī)外圍功能電路控制的基礎(chǔ)知識(shí)》后,最后一期將為大家介紹在單片機(jī)控制系統(tǒng)中不可缺少的處理方式--“中斷”的基礎(chǔ)知識(shí)。
本文引用地址:http://www.ex-cimer.com/article/201710/366326.htm“中斷”與“輪詢”
本期是單片機(jī)入門連載的最后一期。本期我們將說明在單片機(jī)編程過程中一定會(huì)遇到的、也是單片機(jī)控制中不可缺少的一種處理方式---“中斷”。
“中斷”處理并非單片機(jī)控制系統(tǒng)所特有的現(xiàn)象,在我們的日常生活中“中斷”的例子也隨處可見。 讓我們來看看身邊的例子吧。比如盡管您知道今天有快遞送到,但卻不知道快遞送來的具體時(shí)間,在這種情況下,也許您會(huì)選擇坐在客廳里邊看書,邊等快遞送來。在您看書其間,門鈴響的時(shí)候就表明快遞到了(有事件發(fā)生)。這就是“中斷”的例子。
圖1:“中斷”處理示意圖
如果不用“中斷”處理等待方式的話,在看書的過程中,您就不得不經(jīng)常走到門口去確認(rèn)快遞是否到了。 像這樣頻繁地確認(rèn)是否有“事件”發(fā)生的現(xiàn)象,在單片機(jī)控制中是通過軟件編程完成的。我們把這種處理方式稱為“輪詢”(圖2)。
圖2:“輪詢”處理示意圖
單片機(jī)中的中斷處理
實(shí)際上單片機(jī)的中斷處理更加復(fù)雜,還是以上述事例(邊看書邊等待快遞送來)進(jìn)行說明。
邊看書邊等待快遞送來單片機(jī)中的處理
1) 看書時(shí)主程序正在執(zhí)行時(shí)
2) 快遞送來的門鈴響了有事件發(fā)生,向單片機(jī)發(fā)送中斷信號(hào)通知
3) 中斷看書過程單片機(jī)接收中斷信號(hào),暫停正在執(zhí)行的主程序
4) 記錄正在看的頁碼保存當(dāng)前單片機(jī)的狀態(tài)(保存到寄存器中)
5) 接收快遞執(zhí)行對(duì)應(yīng)中斷源的處理(中斷程序)
6) 確認(rèn)剛才所作的記錄返回剛才所保存的單片機(jī)的狀態(tài)
7) 繼續(xù)看書從暫停的地方開始繼續(xù)執(zhí)行程序
現(xiàn)在,相信大家對(duì)“中斷” 已經(jīng)有所了解了。下面我們來看看在實(shí)際的“中斷”處理中,單片機(jī)內(nèi)部是怎樣進(jìn)行的。
在單片機(jī)中,通知事件發(fā)生的中斷信號(hào)一般來自于外部INT引腳的輸入信號(hào),或是來自定時(shí)器、串行I/F等內(nèi)部的外圍功能電路的信號(hào)。接收中斷信號(hào)的是中斷控制器。中斷控制器根據(jù)產(chǎn)生的中斷信號(hào)的優(yōu)先級(jí),按優(yōu)先級(jí)順序發(fā)送給CPU。當(dāng)然,被設(shè)定為無效的設(shè)備所傳送來的中斷信號(hào)是不會(huì)傳給CPU的,您也可以屏蔽或忽略它們。CPU根據(jù)從中斷控制器接收到的指示,執(zhí)行相應(yīng)的程序(中斷處理)。
圖3:單片機(jī)內(nèi)部的“中斷”處理
實(shí)時(shí)處理中斷
“中斷”與“輪詢”看起來好象可以進(jìn)行同樣的處理,實(shí)際上它們有很大的區(qū)別。區(qū)別在于當(dāng)事件發(fā)生時(shí),中斷方式可以立刻執(zhí)行對(duì)應(yīng)事件的處理。中斷的這種處理方式被稱為是實(shí)時(shí)處理。
而在“輪詢”方式中,如果對(duì)發(fā)生事件的監(jiān)視周期較短的話也可以實(shí)現(xiàn)實(shí)時(shí)處理,但是在通常情況下,總是有多個(gè)事件發(fā)生,有時(shí)主程序也不允許太短的循環(huán),所以,難以實(shí)現(xiàn)實(shí)時(shí)處理。
當(dāng) “中斷” 發(fā)生時(shí),由于從檢測(cè)到事件發(fā)生到切換到中斷處理只需要幾十至幾百個(gè)時(shí)鐘,所以可以在短時(shí)間內(nèi)對(duì)應(yīng)事件進(jìn)行處理。
例如,在鍵輸入或開關(guān)輸入的情況下,對(duì)于單片機(jī)來說開關(guān)何時(shí)將被按下是不可預(yù)測(cè)的事件。所以,如果在主程序中以“輪詢”的方式監(jiān)視的話,將會(huì)無端浪費(fèi)CPU的處理時(shí)間,而且,如果要進(jìn)行多個(gè)“輪詢”處理,則“輪詢”的周期將會(huì)變長。
如果不具備單片機(jī)的硬件知識(shí),是很難理解和應(yīng)用“中斷”的。“中斷”的內(nèi)容也確實(shí)有些難度,但是它卻是單片機(jī)系統(tǒng)控制中無法避開的一種處理。所以,大家一定要加深對(duì)單片機(jī)知識(shí)的理解,并熟練掌握“中斷”的基本知識(shí)和使用方法!
評(píng)論