1、中斷概述
中斷是指計算機暫時停止原程序執(zhí)行轉而響應需要服務的緊急事件(執(zhí)行中斷服務程序),并在服務完后自動返回原程序執(zhí)行的過程。
中斷由中斷源產生,中斷源在需要時可以向cpu提出 “ 中斷請求 ” 。 “ 中斷請求 ” 通常是一種電信號, cpu一旦對這個電信號進行檢測和響應便可自動轉入該中斷源的中斷服務程序執(zhí)行,并在執(zhí)行完后自動返回原程序繼續(xù)執(zhí)行,中斷源不同中斷服務程序的功能也不同。
1.1采用中斷控制方式的優(yōu)點
(1)可以提高cpu的工作效率
(2)可以提高實時數(shù)據(jù)的處理時效
1.2中斷源
中斷源是指引起中斷的設備、部件或事件。通常,中斷源有以下幾種:
(1)外部設備中斷源
(2)控制對象中斷源
(3)故障中斷
(4)定時脈沖中斷源
1.3中斷優(yōu)先級與中斷嵌套
(1)中斷優(yōu)先級:一個cpu總會有若干中斷源,但在同一瞬間,cpu只能響應其中的一個中斷請求,為了避免在同一瞬間若干個中斷源請求中斷而帶來的混亂,必須給每個中斷源的中斷請求設定一個中斷優(yōu)先級,cpu先響應中斷優(yōu)先級高的中斷請求。
(2)中斷嵌套:在某一瞬間,cpu因響應某一中斷源的中斷請求而正在執(zhí)行其它的中斷服務程序時,若有中斷優(yōu)先級更高的中斷源提出中斷請求,那它可以把正在執(zhí)行的中斷服務程序停下來,轉而響應和處理中斷優(yōu)先權更高中斷源的中斷請求,等到處理完后再轉回來繼續(xù)執(zhí)行原來的中斷服務程序,這就是中斷嵌套。
1.4中斷系統(tǒng)功能
(1)進行中斷優(yōu)先級排隊
(2)實現(xiàn)中斷嵌套
(3)自動響應中斷
(4)實現(xiàn)中斷返回
2、mcs-51 單片機中斷系統(tǒng)
(1)外部中斷int0、int1
輸入/輸出設備的中斷請求,系統(tǒng)故障的中斷請求等都可以作為外部中斷源,從引腳int0或int1輸入。
外部中斷請求int0、int1的兩種觸發(fā)方式:
電平觸發(fā)及跳沿觸發(fā),由tcon的ito位及it1位選擇。
ito(it1)= “ 0 ” 時,為 int0、int1電平觸發(fā)方式,cpu響應中斷后要采取措施撤消中斷請求信號,使int0或int1恢復高電平。
ito(it1)= “ 1 ” 時為跳沿觸發(fā)方式,當 int0或int1引腳上出現(xiàn)負跳變時,該負跳變經(jīng)邊沿檢測器使ieo(tcon.1)或ie1(tcon.3)置1,向cpu申請中斷。cpu響應中斷轉入中斷服務程序時,由硬件自動清除ieo或ie1。
(2)定時器/計數(shù)器0、l溢出中斷
定時器/計數(shù)器計數(shù)溢出時,由硬件分別置tf0 = “ 1 ” 或 tf1 = “ 1 ” ,向 cpu申請中斷。cpu響應中斷轉入中斷服務程序時,由硬件自動清除tfo或tf1。
(3)串行口中斷
串行口中斷由單片機內部串行口中斷源產生。串行口中斷分為單行口發(fā)送中斷和串行口接收中斷兩種。在串行口進行發(fā)送/接收數(shù)據(jù)時,每當發(fā)送/接收完一組數(shù)據(jù),使串行口控制寄存器 scon中的 ri = “ 1 ” 或 ti = “ 1 ” ,并向 cpu發(fā)出串行口中斷請求,cpu響應串行口中斷后轉入中斷服務程序執(zhí)行。由于ri和ti作為一個中斷源,所以需要在中斷服務程序中安排一段對ri和ti中斷標志位狀態(tài)的判斷程序,以區(qū)分發(fā)生了接收中斷請求還是發(fā)送中斷請求,而且必須用軟件清除ti和ri。
3、中斷控制寄存器的設置
3.1中斷允許控制
mcs - 51單片機有 5個(8052有 6個)中斷源, 為了使每個中斷源都能獨立地被允許或禁止, 以便用戶能靈活使用, cpu內部在每個中斷信號的通道中設置了一個中斷允許觸發(fā)器, 它控制cpu能否響應中斷。只有對應的中斷允許觸發(fā)器被使能(置“1”),相應的中斷才能得到相應。
中斷允許控制寄存器ie (0a8h)
ea
-
-
es
et1
ex1
et0
ex0
ex0:外部中斷0允許位
et0:定時器/計數(shù)器0中斷允許位
ex1:外部中斷1允許位
et1:定時器/計數(shù)器1中斷允許位
es : 串行口中斷允許位
ea :中斷總允許位
3.2中斷優(yōu)先級控制寄存器ip(0b8h)
-
-
-
ps
pt1
px1
pt0
px0
px0:外部中斷0允許位
pt0:定時器/計數(shù)器0中斷允許位
px1:外部中斷1允許位
pt1:定時器/計數(shù)器1中斷允許位
ps:串行口中斷允許位
同一級中的5個中斷源的優(yōu)先順序是:
/int0中斷
t0溢出中斷
/int1中斷
t1溢出中斷
串口中斷
mcs-51系列單片機的中斷響應順序:
cpu同時接收到幾個中斷請求時,首先響應優(yōu)先權最高的中斷請求。正在進行的低優(yōu)先級中斷服務程序能被高優(yōu)先級中斷請求所中斷,實現(xiàn)二級中斷嵌套。正在進行的中斷過程不能被新的同級或低優(yōu)先級的中斷請求所中斷,一直到該中斷服務程序結束,返回了主程序且執(zhí)行了主程序中的一條指令后,cpu才響應新的中斷請求。
各中斷源優(yōu)先級的設置要注意各個要求服務的中斷事件的輕重緩急和中斷服務程序的執(zhí)行時間。原則是:緊急事件和處理時間短的中斷優(yōu)先級別高。
3.4 中斷服務程序
中斷服務程序入口地址:
五個中斷源: 入口地址
外部中斷0(/int0) 0003h
t0溢出中斷 000bh
外部中斷1(/int1) 0013h
t1溢出中斷 001bh
串口中斷 0023h