單片機(jī)的中斷系統(tǒng)
1、中斷概述中斷是指計(jì)算機(jī)暫時(shí)停止原程序執(zhí)行轉(zhuǎn)而響應(yīng)需要服務(wù)的緊急事件(執(zhí)行中斷服務(wù)程序),并在服務(wù)完后自動(dòng)返回原程序執(zhí)行的過程。
中斷由中斷源產(chǎn)生,中斷源在需要時(shí)可以向CPU提出 “ 中斷請(qǐng)求 ” 。 “ 中斷請(qǐng)求 ” 通常是一種電信號(hào), CPU一旦對(duì)這個(gè)電信號(hào)進(jìn)行檢測(cè)和響應(yīng)便可自動(dòng)轉(zhuǎn)入該中斷源的中斷服務(wù)程序執(zhí)行,并在執(zhí)行完后自動(dòng)返回原程序繼續(xù)執(zhí)行,中斷源不同中斷服務(wù)程序的功能也不同。
1.1采用中斷控制方式的優(yōu)點(diǎn)
(1)可以提高CPU的工作效率
?。?)可以提高實(shí)時(shí)數(shù)據(jù)的處理時(shí)效
1.2中斷源
中斷源是指引起中斷的設(shè)備、部件或事件。通常,中斷源有以下幾種:
?。?)外部設(shè)備中斷源
?。?)控制對(duì)象中斷源
(3)故障中斷
?。?)定時(shí)脈沖中斷源
1.3中斷優(yōu)先級(jí)與中斷嵌套
?。?)中斷優(yōu)先級(jí):一個(gè)CPU總會(huì)有若干中斷源,但在同一瞬間,CPU只能響應(yīng)其中的一個(gè)中斷請(qǐng)求,為了避免在同一瞬間若干個(gè)中斷源請(qǐng)求中斷而帶來的混亂,必須給每個(gè)中斷源的中斷請(qǐng)求設(shè)定一個(gè)中斷優(yōu)先級(jí),CPU先響應(yīng)中斷優(yōu)先級(jí)高的中斷請(qǐng)求。
?。?)中斷嵌套:在某一瞬間,CPU因響應(yīng)某一中斷源的中斷請(qǐng)求而正在執(zhí)行其它的中斷服務(wù)程序時(shí),若有中斷優(yōu)先級(jí)更高的中斷源提出中斷請(qǐng)求,那它可以把正在執(zhí)行的中斷服務(wù)程序停下來,轉(zhuǎn)而響應(yīng)和處理中斷優(yōu)先權(quán)更高中斷源的中斷請(qǐng)求,等到處理完后再轉(zhuǎn)回來繼續(xù)執(zhí)行原來的中斷服務(wù)程序,這就是中斷嵌套。
1.4中斷系統(tǒng)功能
?。?)進(jìn)行中斷優(yōu)先級(jí)排隊(duì)
?。?)實(shí)現(xiàn)中斷嵌套
?。?)自動(dòng)響應(yīng)中斷
(4)實(shí)現(xiàn)中斷返回
2、MCS-51 單片機(jī)中斷系統(tǒng)
(1)外部中斷INT0、INT1
輸入/輸出設(shè)備的中斷請(qǐng)求,系統(tǒng)故障的中斷請(qǐng)求等都可以作為外部中斷源,從引腳INT0或INT1輸入。
外部中斷請(qǐng)求INT0、INT1的兩種觸發(fā)方式:
電平觸發(fā)及跳沿觸發(fā),由TCON的ITO位及IT1位選擇。
ITO(IT1)= “ 0 ” 時(shí),為 INT0、INT1電平觸發(fā)方式,CPU響應(yīng)中斷后要采取措施撤消中斷請(qǐng)求信號(hào),使INT0或INT1恢復(fù)高電平。
ITO(IT1)= “ 1 ” 時(shí)為跳沿觸發(fā)方式,當(dāng) INT0或INT1引腳上出現(xiàn)負(fù)跳變時(shí),該負(fù)跳變經(jīng)邊沿檢測(cè)器使IEO(TCON.1)或IE1(TCON.3)置1,向CPU申請(qǐng)中斷。CPU響應(yīng)中斷轉(zhuǎn)入中斷服務(wù)程序時(shí),由硬件自動(dòng)清除IEO或IE1。
?。?)定時(shí)器/計(jì)數(shù)器0、l溢出中斷
定時(shí)器/計(jì)數(shù)器計(jì)數(shù)溢出時(shí),由硬件分別置TF0 = “ 1 ” 或 TF1 = “ 1 ” ,向 CPU申請(qǐng)中斷。CPU響應(yīng)中斷轉(zhuǎn)入中斷服務(wù)程序時(shí),由硬件自動(dòng)清除TFO或TF1。
?。?)串行口中斷
串行口中斷由單片機(jī)內(nèi)部串行口中斷源產(chǎn)生。串行口中斷分為單行口發(fā)送中斷和串行口接收中斷兩種。在串行口進(jìn)行發(fā)送/接收數(shù)據(jù)時(shí),每當(dāng)發(fā)送/接收完一組數(shù)據(jù),使串行口控制寄存器 SCON中的 RI = “ 1 ” 或 TI = “ 1 ” ,并向 CPU發(fā)出串行口中斷請(qǐng)求,CPU響應(yīng)串行口中斷后轉(zhuǎn)入中斷服務(wù)程序執(zhí)行。由于RI和TI作為一個(gè)中斷源,所以需要在中斷服務(wù)程序中安排一段對(duì)RI和TI中斷標(biāo)志位狀態(tài)的判斷程序,以區(qū)分發(fā)生了接收中斷請(qǐng)求還是發(fā)送中斷請(qǐng)求,而且必須用軟件清除TI和RI。
3、中斷控制寄存器的設(shè)置
3.1中斷允許控制
MCS - 51單片機(jī)有 5個(gè)(8052有 6個(gè))中斷源, 為了使每個(gè)中斷源都能獨(dú)立地被允許或禁止, 以便用戶能靈活使用, CPU內(nèi)部在每個(gè)中斷信號(hào)的通道中設(shè)置了一個(gè)中斷允許觸發(fā)器, 它控制CPU能否響應(yīng)中斷。只有對(duì)應(yīng)的中斷允許觸發(fā)器被使能(置“1”),相應(yīng)的中斷才能得到相應(yīng)。
中斷允許控制寄存器IE (0A8H)
EA | - | - | ES | ET1 | EX1 | ET0 | EX0 |
EX0:外部中斷0允許位
ET0:定時(shí)器/計(jì)數(shù)器0中斷允許位
EX1:外部中斷1允許位
ET1:定時(shí)器/計(jì)數(shù)器1中斷允許位
ES : 串行口中斷允許位
EA :中斷總允許位
3.2中斷優(yōu)先級(jí)控制寄存器IP(0B8H)
- | - | - | PS | PT1 | PX1 | PT0 | PX0 |
PX0:外部中斷0允許位
PT0:定時(shí)器/計(jì)數(shù)器0中斷允許位
PX1:外部中斷1允許位
PT1:定時(shí)器/計(jì)數(shù)器1中斷允許位
PS:串行口中斷允許位
同一級(jí)中的5個(gè)中斷源的優(yōu)先順序是:
/INT0中斷
T0溢出中斷
/INT1中斷
T1溢出中斷
串口中斷
MCS-51系列單片機(jī)的中斷響應(yīng)順序:
CPU同時(shí)接收到幾個(gè)中斷請(qǐng)求時(shí),首先響應(yīng)優(yōu)先權(quán)最高的中斷請(qǐng)求。正在進(jìn)行的低優(yōu)先級(jí)中斷服務(wù)程序能被高優(yōu)先級(jí)中斷請(qǐng)求所中斷,實(shí)現(xiàn)二級(jí)中斷嵌套。正在進(jìn)行的中斷過程不能被新的同級(jí)或低優(yōu)先級(jí)的中斷請(qǐng)求所中斷,一直到該中斷服務(wù)程序結(jié)束,返回了主程序且執(zhí)行了主程序中的一條指令后,CPU才響應(yīng)新的中斷請(qǐng)求。
各中斷源優(yōu)先級(jí)的設(shè)置要注意各個(gè)要求服務(wù)的中斷事件的輕重緩急和中斷服務(wù)程序的執(zhí)行時(shí)間。原則是:緊急事件和處理時(shí)間短的中斷優(yōu)先級(jí)別高。
3.4 中斷服務(wù)程序
中斷服務(wù)程序入口地址:
五個(gè)中斷源: 入口地址
外部中斷0(/INT0) 0003H
T0溢出中斷 000BH
外部中斷1(/INT1) 0013H
T1溢出中斷 001BH
串口中斷 0023H
編輯:admin 最后修改時(shí)間:2018-05-08