帶你了解8XC552 中斷系統(tǒng)
中斷裝置和中斷處理程序統(tǒng)稱為中斷系統(tǒng)。
中斷系統(tǒng)是計(jì)算機(jī)的重要組成部分。實(shí)時(shí)控制、故障自動(dòng)處理、計(jì)算機(jī)與外圍設(shè)備間的數(shù)據(jù)傳送往往采用中斷系統(tǒng)。中斷系統(tǒng)的應(yīng)用大大提高了計(jì)算機(jī)效率。
不同的計(jì)算機(jī)其硬件結(jié)構(gòu)和軟件指令是不完全相同的,因此,中斷系統(tǒng)也是不相同的。計(jì)算機(jī)的中斷系統(tǒng)能夠加強(qiáng)CPU對(duì)多任務(wù)事件的處理能力。中斷機(jī)制是現(xiàn)代計(jì)算機(jī)系統(tǒng)中的基礎(chǔ)設(shè)施之一,它在系統(tǒng)中起著通信網(wǎng)絡(luò)作用,以協(xié)調(diào)系統(tǒng)對(duì)各種外部事件的響應(yīng)和處理。中斷是實(shí)現(xiàn)多道程序設(shè)計(jì)的必要條件。
中斷是CPU對(duì)系統(tǒng)發(fā)生的某個(gè)事件作出的一種反應(yīng)。 引起中斷的事件稱為中斷源。中斷源向CPU提出處理的請(qǐng)求稱為中斷請(qǐng)求。發(fā)生中斷時(shí)被打斷程序的暫停點(diǎn)成為斷點(diǎn)。CPU暫?,F(xiàn)行程序而轉(zhuǎn)為響應(yīng)中斷請(qǐng)求的過(guò)程稱為中斷響應(yīng)。處理中斷源的程序稱為中斷處理程序。CPU執(zhí)行有關(guān)的中斷處理程序稱為中斷處理。而返回?cái)帱c(diǎn)的過(guò)程稱為中斷返回。中斷的實(shí)現(xiàn)由實(shí)行軟件和硬件綜合完成,硬件部分叫做硬件裝置,軟件部分稱為軟件處理程序。
8XC552的中斷系統(tǒng)如圖10.31所示,共有15個(gè)中斷源,分為2個(gè)中斷優(yōu)先級(jí)。這15個(gè)中斷源分別是:2個(gè)定時(shí)/計(jì)數(shù)器T0和T1溢出中斷;3個(gè)T2比較中斷;2個(gè)外部中斷INT/INT1;1個(gè)T2溢出中斷;異步串行口中斷UART;A/D轉(zhuǎn)換結(jié)束中斷;4個(gè)T2捕捉中斷;I2 C同步串行口中斷。
圖10.31 8XC552中斷系統(tǒng)
中斷的允許由兩個(gè)特殊功能寄存器IEN0和IEN1控制。IEN0的地址為A8H,格式如圖10.32所示。
IEN0各位的功能說(shuō)明如下:
EA:中斷系統(tǒng)總允許控制位。
EAD:A/D轉(zhuǎn)換器中斷允許位。
ES1:I2 C中斷允許位。
ES0:UART中斷允許位。
ET0、ET1:定時(shí)器T0、T1中斷允許位。
EX0、EX1:外部中斷INT0、INT1允許位。
IEN1的地址為E8H,其格式如圖10.33所示。
IEN1各位的功能說(shuō)明如下:
ET2:T2溢出中斷允許位。
ECM0~ECM2:比較器0~2中斷允許位。
ECT0~ECT3:捕捉器0~3輸入端CT0I~CT3I的中斷允許位。
中斷優(yōu)先級(jí)由兩個(gè)特殊功能寄存器IP0和IP1控制。IP0的地址為B8H,其格式如圖10.34所示。
IP0各位的功能說(shuō)明如下:
PAD:ADC中斷優(yōu)先級(jí)控制位。
PS1:I2 C總線中斷優(yōu)先級(jí)控制位。
PS0:UART中斷優(yōu)先級(jí)控制位。
PT0、PT1:定時(shí)器T0、T1中斷優(yōu)先級(jí)控制位。
PX0、PX1:外部中斷INT0、INT1中斷優(yōu)先級(jí)控制位。
IP1的地址為F8H,其格式定義如圖10.35所示。
IP1格式的功能說(shuō)明如下:
PT2:定時(shí)器T2中斷優(yōu)先級(jí)控制位;
PCM0~PCM2:比較寄存器0~2中斷優(yōu)先級(jí)控制位;
PCT0~PCT3:捕捉寄存器0~3中斷優(yōu)先級(jí)控制位。
8XC552單片機(jī)與MCS 51單片機(jī)的中斷結(jié)構(gòu)相似,采用兩級(jí)中斷方式,1個(gè)低優(yōu)先級(jí)中斷可被1個(gè)高優(yōu)先級(jí)中斷,反之則不行。如果有幾個(gè)同級(jí)中斷同時(shí)請(qǐng)求中斷,則按內(nèi)部規(guī)定的中斷優(yōu)先級(jí)順序響應(yīng)中斷。表10.14為8XC552內(nèi)部中斷硬件查詢次序和中斷矢量地址。
需要指出的是,8XC552在響應(yīng)中斷后,硬件只自動(dòng)清除定時(shí)器T0、T1的溢出中斷標(biāo)志TF0、TF1和由邊沿觸發(fā)的外部中斷標(biāo)志IE0、IE1,其余各中斷標(biāo)志必須由用戶用軟件加以清除。
大多數(shù)中斷系統(tǒng)都具有如下幾方面的操作,這些操作是按照中斷的執(zhí)行先后次序排列的。
①接收中斷請(qǐng)求。
②查看本級(jí)中斷屏蔽位,若該位為1則本級(jí)中斷源參加優(yōu)先權(quán)排隊(duì)。
③中斷優(yōu)先權(quán)選擇。
④處理機(jī)執(zhí)行完一條指令后或者這條指令已無(wú)法執(zhí)行完,則立即中止現(xiàn)行程序。接著,中斷部件根據(jù)中斷級(jí)去指定相應(yīng)的主存單元,并把被中斷的指令地址和處理機(jī)當(dāng)前的主要狀態(tài)信息存放在此單元中。
⑤中斷部件根據(jù)中斷級(jí)又指定另外的主存單元,從這些單元中取出處理機(jī)新的狀態(tài)信息和該級(jí)中斷控制程序的起始地址。
⑥執(zhí)行中斷控制程序和相應(yīng)的中斷服務(wù)程序。
⑦執(zhí)行完中斷服務(wù)程序后,利用專用指令使處理機(jī)返回被中斷的程序或轉(zhuǎn)向其他程序。