MCS-51 單片機(jī)中斷系統(tǒng)的基本工作流程是什么
MCS-51單片機(jī)中斷系統(tǒng)的結(jié)構(gòu)如圖4-1所示。MCS-51單片機(jī)有5個中斷源,分別是2個外部中斷源、2個定時/計數(shù)器中斷源和1個串行接口中斷源。與中斷系統(tǒng)有關(guān)的寄存器有TCON、SCON、IE和IP,它們都可以按位尋址,其中的每一位都可以通過指令來設(shè)置。
圖4-1 MCS-51中斷系統(tǒng)的結(jié)構(gòu)
下面結(jié)合圖4-1介紹MCS-51單片機(jī)中斷系統(tǒng)的基本工作流程。
(1)中斷的觸發(fā)
單片機(jī)兩個外部中斷源INT0和INT1的中斷請求信號來自單片機(jī)的外部引腳INT0和INT1。有效的外部中斷請求信號(即中斷觸發(fā)方式)可以是低電平信號或電平的下降沿信號。
定時/計數(shù)器T0和T1可以工作在計數(shù)和定時兩種工作方式下,兩種工作方式都可以產(chǎn)生中斷請求。工作于計數(shù)方式時,定時/計數(shù)器記錄T0和T1引腳上的脈沖個數(shù),當(dāng)脈沖數(shù)達(dá)到指定值時,將產(chǎn)生中斷請求;工作于定時方式時,定時/計數(shù)器通過記錄機(jī)器周期的個數(shù)完成定時工作,定時時間到時將產(chǎn)生中斷請求。
單片機(jī)的串行通信接口(簡稱串口)可以向外發(fā)送數(shù)據(jù)或從外部接收數(shù)據(jù),通常TXD引腳發(fā)送數(shù)據(jù),RXD引腳接收數(shù)據(jù)。串口每發(fā)送或接收完一個字符幀后都會發(fā)出中斷請求,分別被稱為發(fā)送中斷請求和接收中斷請求。
另外,在MCS-51單片機(jī)中,串口的發(fā)送中斷和接收中斷雖然不同,但卻被當(dāng)作同一個中斷源,對應(yīng)同一個中斷服務(wù)處理程序。
(2)中斷請求
單片機(jī)給每個中斷事件分配了一個中斷請求標(biāo)志位,當(dāng)某一中斷源發(fā)出中斷請求時,其對應(yīng)的中斷請求標(biāo)志位被置1,以表示該中斷發(fā)出了中斷請求。外部中斷INT0和INT1、定時/計數(shù)器T0和T1以及串口發(fā)送中斷和接收中斷的中斷請求標(biāo)志位分別為IE0、IE1、TF0、TF1、TI和RI,這些中斷請求標(biāo)志位分別存放在定時/計數(shù)器控制寄存器TCON(見表4-1)和串口控制寄存器SCON(見表4-2)中。
單片機(jī)只能根據(jù)中斷請求標(biāo)志位的狀態(tài)判斷中斷請求是否發(fā)生,若中斷發(fā)生則中斷請求標(biāo)志位為1,否則為0。若中斷請求標(biāo)志位為1且該中斷沒有被屏蔽,則單片機(jī)將執(zhí)行該中斷的中斷服務(wù)處理程序。中斷請求被處理后,應(yīng)及時地將其中斷請求標(biāo)志位清0,否則單片機(jī)將誤認(rèn)為中斷請求未消失。
需要特別注意的是,對于2個外部中斷和2個定時/計數(shù)器中斷,單片機(jī)響應(yīng)中斷請求并進(jìn)入中斷服務(wù)處理程序后,單片機(jī)硬件會自動將中斷源所對應(yīng)的中斷請求標(biāo)志位清0;而串口中斷的中斷請求標(biāo)志位不會被單片機(jī)硬件自動清0,需要在程序通過指令清0,即“CLR TI”或“CLR RI”。
(3)中斷的開放與屏蔽MCS-51單片機(jī)的所有中斷源均可被屏蔽。中斷源的開放與屏蔽由中斷允許寄存器IE(見表4-3)控制。IE寄存器中各位的定義如下:
1)EX0:外部中斷0(INT0)的中斷允許位。
2)ET0:定時/計數(shù)器0(T0)的中斷允許位。
3)EX1:外部中斷1(INT1)的中斷允許位。
4)ET1:定時/計數(shù)器1(T1)的中斷允許位。
5)ES:串口的中斷允許位。
6)EA:CPU中斷總允許位。
上述標(biāo)志位被置1,則對應(yīng)的中斷源被開放(即允許),被清0則屏蔽(即禁止)對應(yīng)的中斷源。例如:若EX0=0、ET0=0、EX1=1、ET1=0和ES=1,則除了外部中斷1和串口中斷被開放外,其他幾個中斷均被屏蔽。中斷總允許位EA相當(dāng)于中斷的總開關(guān),若EA=0,則所有中斷被禁止;若EA=1,則中斷源是否被禁止,將由其自身的中斷允許位決定。
(4)中斷優(yōu)先級別和中斷嵌套MCS-51單片機(jī)僅有兩個中斷優(yōu)先級別,即高級和低級。中斷源的中斷優(yōu)先級別由中斷優(yōu)先級寄存器IP(見表4-4)決定。IP寄存器各位的定義如下:
1)PX0:外部中斷0(INT0)的中斷優(yōu)先級設(shè)定位。
2)PT0:定時/計數(shù)器0(T0)的中斷優(yōu)先級設(shè)定位。
3)PX1:外部中斷1(INT1)的中斷優(yōu)先級設(shè)定位。
4)PT1:定時/計數(shù)器1(T1)的中斷優(yōu)先級設(shè)定位。
5)PS:串口中斷的優(yōu)先級設(shè)定位。
上述位若被置1,則對應(yīng)的中斷源被設(shè)定為高級別中斷,否則被設(shè)定為低級別中斷,即單片機(jī)利用寄存器IP將所有中斷源分成高級別和低級別兩類。例如:若PX0=0、PT0=1、PX1=1、PT1=0和PS=1,則外部中斷0和定時/計數(shù)器1被設(shè)定為低級別中斷,而定時/計數(shù)器0、外部中斷1和串口中斷均為高級別中斷。此時,若串口和定時/計數(shù)器1同時發(fā)出中斷請求,單片機(jī)將首先響應(yīng)和處理其中的高級別中斷,即串口中斷。
另外,MCS-51單片機(jī)又在同一中斷優(yōu)先級別內(nèi)設(shè)定了自然優(yōu)先級別,見表4-5。當(dāng)多個同級別中斷同時發(fā)出中斷請求時,單片機(jī)中斷系統(tǒng)將按照自然優(yōu)先級別進(jìn)行中斷排序,并首先響應(yīng)其中自然優(yōu)先級別最高的中斷。