在單片機(jī)的應(yīng)用領(lǐng)域中,MCS - 51 單片機(jī)憑借其穩(wěn)定的性能和廣泛的適用性,占據(jù)著重要的地位。而其中斷系統(tǒng)更是該單片機(jī)的功能之一,它能夠使單片機(jī)在運(yùn)行過程中及時(shí)響應(yīng)外部事件,大大提高了單片機(jī)的工作效率和實(shí)時(shí)處理能力。下面我們將詳細(xì)介紹 MCS - 51 單片機(jī)中斷系統(tǒng)的基本工作流程。
MCS - 51 單片機(jī)中斷系統(tǒng)的結(jié)構(gòu)如圖所示。該單片機(jī)擁有 5 個(gè)中斷源,分別為 2 個(gè)外部中斷源、2 個(gè)定時(shí) / 計(jì)數(shù)器中斷源以及 1 個(gè)串行接口中斷源。與中斷系統(tǒng)相關(guān)的寄存器包括 TCON、SCON、IE 和 IP,這些寄存器均支持按位尋址,并且每一位都可以通過特定的指令進(jìn)行設(shè)置。

(圖 1:MCS - 51 中斷系統(tǒng)的結(jié)構(gòu))
- 外部中斷源:單片機(jī)的兩個(gè)外部中斷源 INT0 和 INT1 的中斷請求信號源自單片機(jī)的外部引腳 INT0 和 INT1。有效的外部中斷請求信號(也就是中斷觸發(fā)方式)可以是低電平信號或者電平的下降沿信號。例如,在一些外部設(shè)備需要及時(shí)向單片機(jī)反饋狀態(tài)的場景中,就可以利用這兩種觸發(fā)方式將設(shè)備的狀態(tài)變化轉(zhuǎn)化為中斷請求信號發(fā)送給單片機(jī)。
- 定時(shí) / 計(jì)數(shù)器中斷源:定時(shí) / 計(jì)數(shù)器 T0 和 T1 能夠在計(jì)數(shù)和定時(shí)這兩種工作方式下運(yùn)行,并且這兩種工作方式都可以產(chǎn)生中斷請求。當(dāng)工作于計(jì)數(shù)方式時(shí),定時(shí) / 計(jì)數(shù)器會記錄 T0 和 T1 引腳上的脈沖個(gè)數(shù),一旦脈沖數(shù)達(dá)到指定值,就會產(chǎn)生中斷請求;而工作于定時(shí)方式時(shí),定時(shí) / 計(jì)數(shù)器通過記錄機(jī)器周期的個(gè)數(shù)來完成定時(shí)工作,當(dāng)定時(shí)時(shí)間到達(dá)時(shí),便會產(chǎn)生中斷請求。在工業(yè)自動(dòng)化控制中,常常會利用定時(shí) / 計(jì)數(shù)器的中斷功能來實(shí)現(xiàn)的時(shí)間控制。
- 串行接口中斷源:單片機(jī)的串行通信接口(簡稱串口)可以向外發(fā)送數(shù)據(jù)或者從外部接收數(shù)據(jù),通常 TXD 引腳用于發(fā)送數(shù)據(jù),RXD 引腳用于接收數(shù)據(jù)。串口每發(fā)送或接收完一個(gè)字符幀后都會發(fā)出中斷請求,分別被稱為發(fā)送中斷請求和接收中斷請求。需要注意的是,在 MCS - 51 單片機(jī)中,串口的發(fā)送中斷和接收中斷雖然有所不同,但卻被當(dāng)作同一個(gè)中斷源,對應(yīng)同一個(gè)中斷服務(wù)處理程序。
單片機(jī)為每個(gè)中斷事件都分配了一個(gè)中斷請求標(biāo)志位。當(dāng)某一中斷源發(fā)出中斷請求時(shí),其對應(yīng)的中斷請求標(biāo)志位會被置為 1,以此表示該中斷發(fā)出了中斷請求。外部中斷 INT0 和 INT1、定時(shí) / 計(jì)數(shù)器 T0 和 T1 以及串口發(fā)送中斷和接收中斷的中斷請求標(biāo)志位分別為 IE0、IE1、TF0、TF1、TI 和 RI,這些中斷請求標(biāo)志位分別存放在定時(shí) / 計(jì)數(shù)器控制寄存器 TCON 和串口控制寄存器 SCON 中。

(圖 2:定時(shí) / 計(jì)數(shù)器控制寄存器 TCON 和串口控制寄存器 SCON)
單片機(jī)只能依據(jù)中斷請求標(biāo)志位的狀態(tài)來判斷中斷請求是否發(fā)生。若中斷發(fā)生,中斷請求標(biāo)志位為 1;否則為 0。若中斷請求標(biāo)志位為 1 且該中斷沒有被屏蔽,那么單片機(jī)將執(zhí)行該中斷的中斷服務(wù)處理程序。在中斷請求被處理之后,應(yīng)及時(shí)將其中斷請求標(biāo)志位清 0,否則單片機(jī)將會誤認(rèn)為中斷請求未消失。特別需要注意的是,對于 2 個(gè)外部中斷和 2 個(gè)定時(shí) / 計(jì)數(shù)器中斷,當(dāng)單片機(jī)響應(yīng)中斷請求并進(jìn)入中斷服務(wù)處理程序后,單片機(jī)硬件會自動(dòng)將中斷源所對應(yīng)的中斷請求標(biāo)志位清 0;而串口中斷的中斷請求標(biāo)志位不會被單片機(jī)硬件自動(dòng)清 0,需要在程序中通過指令清 0,即 “CLR TI” 或 “CLR RI”。
MCS - 51 單片機(jī)的所有中斷源均可被屏蔽。中斷源的開放與屏蔽由中斷允許寄存器 IE 控制。IE 寄存器中各位的定義如下:
- EX0:外部中斷 0(INT0)的中斷允許位。
- ET0:定時(shí) / 計(jì)數(shù)器 0(T0)的中斷允許位。
- EX1:外部中斷 1(INT1)的中斷允許位。
- ET1:定時(shí) / 計(jì)數(shù)器 1(T1)的中斷允許位。
- ES:串口的中斷允許位。
- EA:CPU 中斷總允許位。

(圖 3:中斷允許寄存器 IE)
當(dāng)上述標(biāo)志位被置為 1 時(shí),對應(yīng)的中斷源被開放(即允許);被清 0 則屏蔽(即禁止)對應(yīng)的中斷源。例如,若 EX0 = 0、ET0 = 0、EX1 = 1、ET1 = 0 和 ES = 1,那么除了外部中斷 1 和串口中斷被開放外,其他幾個(gè)中斷均被屏蔽。中斷總允許位 EA 相當(dāng)于中斷的總開關(guān),若 EA = 0,則所有中斷被禁止;若 EA = 1,則中斷源是否被禁止,將由其自身的中斷允許位決定。
MCS - 51 單片機(jī)僅有兩個(gè)中斷優(yōu)先級別,即和低級。中斷源的中斷優(yōu)先級別由中斷優(yōu)先級寄存器 IP 決定。IP 寄存器各位的定義如下:
- PX0:外部中斷 0(INT0)的中斷優(yōu)先級設(shè)定位。
- PT0:定時(shí) / 計(jì)數(shù)器 0(T0)的中斷優(yōu)先級設(shè)定位。
- PX1:外部中斷 1(INT1)的中斷優(yōu)先級設(shè)定位。
- PT1:定時(shí) / 計(jì)數(shù)器 1(T1)的中斷優(yōu)先級設(shè)定位。
- PS:串口中斷的優(yōu)先級設(shè)定位。

(圖 4:中斷優(yōu)先級寄存器 IP)
若上述位被置為 1,則對應(yīng)的中斷源被設(shè)定為別中斷;否則被設(shè)定為低級別中斷。也就是說,單片機(jī)利用寄存器 IP 將所有中斷源分成別和低級別兩類。例如,若 PX0 = 0、PT0 = 1、PX1 = 1、PT1 = 0 和 PS = 1,那么外部中斷 0 和定時(shí) / 計(jì)數(shù)器 1 被設(shè)定為低級別中斷,而定時(shí) / 計(jì)數(shù)器 0、外部中斷 1 和串口中斷均為別中斷。此時(shí),若串口和定時(shí) / 計(jì)數(shù)器 1 同時(shí)發(fā)出中斷請求,單片機(jī)將首先響應(yīng)和處理其中的別中斷,即串口中斷。
此外,MCS - 51 單片機(jī)又在同一中斷優(yōu)先級別內(nèi)設(shè)定了自然優(yōu)先級別。當(dāng)多個(gè)同級別中斷同時(shí)發(fā)出中斷請求時(shí),單片機(jī)中斷系統(tǒng)將按照自然優(yōu)先級別進(jìn)行中斷排序,并首先響應(yīng)其中自然優(yōu)先級別的中斷。

(圖 5:同一中斷優(yōu)先級別內(nèi)的自然優(yōu)先級別)
綜上所述,MCS - 51 單片機(jī)中斷系統(tǒng)通過中斷的觸發(fā)、請求、開放與屏蔽以及優(yōu)先級的設(shè)定等一系列流程,實(shí)現(xiàn)了對外部事件的高效響應(yīng)和處理,為單片機(jī)在各種復(fù)雜應(yīng)用場景中的穩(wěn)定運(yùn)行提供了有力保障。