嵌入式學(xué)習(xí)筆記9——51單片機(jī)之中斷外部中斷
CPU暫時(shí)中斷當(dāng)前的工作(這叫中斷響應(yīng)),轉(zhuǎn)去處理事件B(這叫中斷服務(wù))。
本文引用地址:http://www.ex-cimer.com/article/201611/318672.htm2. 89C51的中斷系統(tǒng)有5個(gè)中斷源(按優(yōu)先級(jí)高低排序?yàn)椋?strong>外部中斷0、計(jì)時(shí)器中斷0、外部中斷1、計(jì)時(shí)器中斷1、串口中斷),2個(gè)優(yōu)先級(jí),可實(shí)現(xiàn)二級(jí)中斷嵌套(中斷處理過程又有優(yōu)先級(jí)更高的中斷發(fā)生)。高級(jí)單片機(jī)中可能有更多的中斷源和更多的優(yōu)先級(jí)等。
3. 89C51單片機(jī)的中斷優(yōu)先級(jí)有三個(gè)原則:
(1)CPU同時(shí)接收到幾個(gè)中斷時(shí),首先響應(yīng)優(yōu)先級(jí)別最高的中斷請求。 (2)正在進(jìn)行的中斷過程不能被新的同級(jí)或低優(yōu)先級(jí)的中斷請求所中斷。 (3)正在進(jìn)行的低優(yōu)先級(jí)中斷服務(wù),能被高優(yōu)先級(jí)中斷請求所中斷。(為實(shí)現(xiàn)后兩個(gè)原則,系統(tǒng)設(shè)有兩個(gè)不能尋址的優(yōu)先級(jí)觸發(fā)器。其中一個(gè)置1,表示正在響應(yīng)高優(yōu)先級(jí)的中斷,將阻斷后來所有的中斷請求;另一個(gè)置1,表示正在響應(yīng)低優(yōu)先級(jí)中斷,將阻斷后來所有低優(yōu)先級(jí)中斷請求。)
4. CPU對中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開發(fā)和屏蔽是由中斷允許寄存器IE控制的。
5. 中斷響應(yīng)條件:
(1)中斷源有中斷請求;(2)此中斷源的中斷允許位為1;(3)CPU開中斷(即EA=1)。
6. 程序員使用中斷需要做什么?
(1)使用哪個(gè)中斷(外部中斷,計(jì)時(shí)器中斷,串口中斷等),便確定了響應(yīng)的中斷號(hào);(2)希望觸發(fā)中斷的條件是什么,比如下降沿觸發(fā)還是低電平觸發(fā);(3)中斷之后要干什么(中斷服務(wù)程序要盡量簡短)。
舉例:a.設(shè)置IE中響應(yīng)的值——EA置1(允許CPU中斷)、打開要使用的中斷;b.設(shè)置TCON中相應(yīng)中斷的觸發(fā)方式(如下圖所示TCON寄存器);c.寫中斷服務(wù)程序(void 函數(shù)名() interrupt 中斷號(hào) using 0~3中的任意值 { 函數(shù)體 },其中0~3中的值表示選擇片內(nèi)四組寄存器中的一組來保存中斷前的現(xiàn)場,通常建議初學(xué)者不寫“using 0~3中的任意值”,因?yàn)槟悴磺宄?nèi)部寄存器的使用情況,不寫的情況下,Keil會(huì)自動(dòng)幫你指定的。)
7. 外部中斷:
IT0(TCON.0)決定外部中斷0是低電平有效還是下降沿有效(從高電平變到低電平)。同樣地,IT1(TCON.2)對應(yīng)外部中斷1。
評論