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