中斷是為使單片機(jī)具有對(duì)外部或內(nèi)部隨機(jī)發(fā)生的事件實(shí)時(shí)處理而設(shè)置的,中斷功能的存在,很大程度上提高了單片機(jī)處理外部或內(nèi)部事件的能力。它也是單片機(jī)最重要的功能之一,是我們學(xué)習(xí)單片機(jī)必須要掌握的。很多初學(xué)者被困在中斷中,學(xué)了很久仍然不知道中斷究竟是個(gè)什么東西,大家千萬(wàn)不要認(rèn)為它有多難,其實(shí)只要掌握正確的學(xué)習(xí)方法,沒(méi)有哪個(gè)知識(shí)點(diǎn)是學(xué)不會(huì)的。 為了能讓大家更容易理解中斷概念,我們先來(lái)舉一個(gè)生活事例:你打開(kāi)火,燒上一壺水。然后去洗衣服,在洗衣服的過(guò)程中,突然聽(tīng)到水壺發(fā)出水開(kāi)的報(bào)警聲,這時(shí),你停止洗衣服動(dòng)作,立即去關(guān)掉火,然后將開(kāi)水灌入暖水瓶中,灌完開(kāi)水后,你又回去繼續(xù)洗衣服。這個(gè)過(guò)程中實(shí)際上就發(fā)生了一次中斷。 對(duì)于單片機(jī)來(lái)講,中斷是指CPU在處理某一事件A時(shí),發(fā)生了另一事件B,請(qǐng)求CPU迅速去處理(中斷發(fā)生);CPU暫時(shí)停止當(dāng)前的工作(中斷響應(yīng)),轉(zhuǎn)去處理事件B(中斷服務(wù));待CPU將事件I.,處理完畢后,再回到原來(lái)事件A被中斷的地方繼續(xù)處理事件A(中斷返回),這一過(guò)程稱為中斷。 再回來(lái)看前面講的生活事例,與單片機(jī)中斷結(jié)合分析,你的主任務(wù)是洗衣服,水開(kāi)報(bào)警這是一個(gè)中斷請(qǐng)求,這一時(shí)刻相當(dāng)于斷點(diǎn)處,你響應(yīng)中斷去關(guān)火,然后將開(kāi)水灌入暖水瓶中,這一動(dòng)作實(shí)際上就是處理中斷程序,灌完開(kāi)水后再回去繼續(xù)洗衣服,相當(dāng)于處理完中斷程序后再返回主程序繼續(xù)執(zhí)行主程序。這里需要注意的是,水開(kāi)是隨時(shí)都有可能的,但是無(wú)論什么時(shí)候開(kāi),只要一開(kāi)你將立即去處理它,處理完后再回來(lái)繼續(xù)接著洗剛才那件衣服。單片機(jī)在執(zhí)行程序時(shí),中斷也隨時(shí)有可能發(fā)生,但無(wú)論何時(shí)發(fā)生,只要一旦發(fā)生,單片機(jī)將立即暫停當(dāng)前程序,趕去處理中斷程序,處理完中斷程序后再返回剛才暫停處接著執(zhí)行原來(lái)的程序。單片機(jī)在執(zhí)行程序時(shí)其程序流程圖。 引起CPU中斷的根源,稱為中斷源,中斷源向CPU提出中斷請(qǐng)求,CPU暫時(shí)中斷原來(lái)的事務(wù)A,轉(zhuǎn)去處理事件B,對(duì)事件B處理完畢后,再回到原來(lái)被中斷的地方(即斷點(diǎn)),稱為中斷返回。實(shí)現(xiàn)上述中斷功能的部件稱為中斷系統(tǒng)(中斷機(jī)構(gòu))。 中斷的開(kāi)啟與關(guān)閉、設(shè)置啟用哪一個(gè)中斷等都是由單片機(jī)內(nèi)部的一些特殊功能寄存器來(lái)決定的,在以前的學(xué)習(xí)中我們僅對(duì)單片機(jī)內(nèi)部的特殊功能寄存器IO口寄存器設(shè)置過(guò),從下節(jié)起我們將會(huì)設(shè)置單片機(jī)內(nèi)部更多的特殊功能寄存器。
當(dāng)中央處理機(jī)CPU正在處理某件事的時(shí)候外界發(fā)生了緊急事件請(qǐng)求,要求CPU暫停當(dāng)前的工作,轉(zhuǎn)而去處理這個(gè)緊急事件,處理完以后,再回到原來(lái)被中斷的地方,繼續(xù)原來(lái)的工作,這樣的過(guò)程稱為中斷。實(shí)現(xiàn)這種功能的部件稱為中斷系統(tǒng),請(qǐng)示CPU中斷的請(qǐng)求源稱為中斷源。微型機(jī)的中斷系統(tǒng)一般允許多個(gè)中斷源,當(dāng)兒個(gè)中斷源同時(shí)向CPU請(qǐng)求中斷,要求為它服務(wù)的時(shí)候,這就存在CPU優(yōu)先響應(yīng)哪一個(gè)中斷源請(qǐng)求的問(wèn)題。通常根據(jù)中斷源的輕重緩急排隊(duì),優(yōu)先處理最緊急事件的中斷請(qǐng)求源,即規(guī)定每一個(gè)中斷源有一個(gè)優(yōu)先級(jí)別。CPU總是先響應(yīng)優(yōu)先級(jí)別最高的中斷請(qǐng)求。
|