




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第5章中斷系統(tǒng)及其應(yīng)用
●教學(xué)目標:
介紹中斷、中斷源、中斷系統(tǒng)的概念介紹MCS-51中斷系統(tǒng)及中斷控制介紹中斷處理的過程
介紹中斷應(yīng)用程序的編程
●學(xué)習(xí)要求:
熟悉中斷、中斷源、中斷服務(wù)程序、保護現(xiàn)場、恢復(fù)現(xiàn)場、中斷優(yōu)先級、中斷處理等概念;掌握MCS-51中斷入口地址和各中斷控制寄存器的每位含義及應(yīng)用:包括定時器/計數(shù)器控制寄存器TCON、串行口控制寄存器SCON、中斷允許控制寄存器IE和中斷優(yōu)先控制器IP;掌握中斷初始化和中斷服務(wù)程序的編制。
第5章中斷系統(tǒng)及其應(yīng)用●教學(xué)目標:15.1概述中斷技術(shù)是計算機中的重要技術(shù)之一。引入中斷技術(shù)作用:(1)實時處理,提高計算機處理故障的能力;(2)解決CPU和外設(shè)之間的速度匹配問題,提高CPU的效率。本章將介紹中斷的概念,并以MCS-51的中斷系統(tǒng)為例介紹中斷的處理過程及應(yīng)用。5.1概述中斷技術(shù)是計算機中的重要技術(shù)之一。25.1.1中斷的概念
中斷——是指中央處理器CPU正在執(zhí)行程序,處理某件事情的時候,外部發(fā)生了某一事件,請求CPU馬上處理,CPU暫時中斷當前的工作,轉(zhuǎn)入處理所發(fā)生的事件,處理完以后,再返回到原來被中斷的地方,繼續(xù)原來的工作。實現(xiàn)中斷功能的部件稱為中斷系統(tǒng)。中斷服務(wù)程序——中斷之后所執(zhí)行的處理程序通常稱為中斷服務(wù)程序,原來運行的程序稱為主程序。
斷點——主程序被斷開的位置(地址)稱為斷點。
中斷源——引起中斷的原因,或能發(fā)出中斷申請的來源,稱為中斷源。
中斷請求——中斷源要求服務(wù)的請求稱為中斷請求或中斷申請。5.1.1中斷的概念中斷——是指中央處理器CPU3調(diào)用中斷服務(wù)程序與調(diào)用子程序的區(qū)別:
調(diào)用子程序指令在程序中是事先安排好的,而調(diào)用中斷服務(wù)程序事先卻無法確知,因為“中斷”的發(fā)生是由外設(shè)決定的,程序中無法事先安排調(diào)用指令,因而調(diào)用中斷服務(wù)程序的過程是由硬件自動完成的。調(diào)用中斷服務(wù)程序與調(diào)用子程序的區(qū)別:調(diào)45.1.2中斷源
中斷源——在中斷系統(tǒng)中,將引起中斷請求的設(shè)備或事件的來源,—般統(tǒng)稱為中斷源。常見中斷源:
1.輸入、輸出設(shè)備中斷源一般計算機的輸入、輸出設(shè)備,如鍵盤、磁盤驅(qū)動器、打印機等,可通過接口電路向CPU申請中斷。
2.故障源故障源是產(chǎn)生故障信息的來源。例如:CPU內(nèi)部故障源,如除法中除數(shù)為零時的情況;外部故障源,如電源掉電情況。在電源掉電時可以接入備用的電池供電,以保存存儲器中的信息。當電壓因掉電降到—定值時,就發(fā)出中斷申請,由計算機的中斷系統(tǒng)完成替換備用電源的控制。
3.實時中斷源在實時控制中,常常將被控參數(shù)、信息作為實時中斷源。例如,電壓、電流、溫度等超越上限或下限時,以及繼電器、開關(guān)閉合斷開時,都可以作為中斷源申請中斷。
4.定時/計數(shù)脈沖中斷源內(nèi)部定時/計數(shù)中斷是由單片機內(nèi)部的定時器/計數(shù)器溢出時自動產(chǎn)生的;外部定時/計數(shù)中斷是由外部定時脈沖通過CPU的中斷請求輸入線或定時器/計數(shù)器的輸入線引起的。5.1.2中斷源中斷源——在中斷系統(tǒng)中,將引起55.1.3中斷系統(tǒng)的一般功能中斷系統(tǒng)一般應(yīng)具有如下功能:
1.實現(xiàn)中斷及返回當某一個中斷源發(fā)出中斷申請時,若允許響應(yīng)這個中斷請求,CPU必須在現(xiàn)行的指令執(zhí)行完后,把斷點處的PC值(即下一條應(yīng)執(zhí)行的指令地址)壓入堆棧保存起來,稱為保護斷點,這是由硬件自動完成的。保護現(xiàn)場——響應(yīng)中斷請求后,將有關(guān)的寄存器內(nèi)容和狀態(tài)標志位壓入堆棧保存起來,這稱為保護現(xiàn)場。
恢復(fù)現(xiàn)場——執(zhí)行中斷服務(wù)程序后,恢復(fù)原保留的寄存器的內(nèi)容和標志位的狀態(tài),稱恢復(fù)現(xiàn)場,并執(zhí)行返回指令“RETI”,這個過程通過用戶編程來實現(xiàn)。5.1.3中斷系統(tǒng)的一般功能中斷系統(tǒng)一般應(yīng)具有如下6中斷及返回過程如圖5—1所示:
主程序低級中斷高級中斷中斷中斷返回返回圖5-2中斷嵌套流程圖執(zhí)行中斷服務(wù)程序主程序繼續(xù)執(zhí)行主程序RETI圖5-1中斷流程圖中斷及返回過程如圖5—1所示:主程序72.實現(xiàn)優(yōu)先權(quán)排隊
優(yōu)先權(quán)——給各中斷源規(guī)定一個優(yōu)先級別,稱為優(yōu)先權(quán)。當兩個或者兩個以上的中斷源同時提出中斷請求時,計算機首先為優(yōu)先權(quán)最高的中斷源服務(wù),服務(wù)結(jié)束后再響應(yīng)級別較低的中斷源。計算機按中斷源級別高低逐次響應(yīng)的過程稱優(yōu)先權(quán)排隊。這個過程可以通過硬件電路來實現(xiàn),也可以通過程序查詢來實現(xiàn)。2.實現(xiàn)優(yōu)先權(quán)排隊
優(yōu)先權(quán)——給各中斷源規(guī)定一個優(yōu)83.實現(xiàn)中斷嵌套
當CPU響應(yīng)某一中斷的請求而進行中斷處理時,若有優(yōu)先權(quán)級別更高的中斷源發(fā)出中斷申請,CPU則中斷正在進行的中斷服務(wù)程序,并保留這個程序的斷點(類似于子程序嵌套),響應(yīng)高級中斷,在高級中斷處理完以后,再繼續(xù)執(zhí)行被中斷的中斷服務(wù)程序。中斷嵌套示意圖如圖5—2所示。中斷申請的中斷源的優(yōu)先權(quán)級別與正在處理的中斷源同級或更低時,CPU暫時不響應(yīng)這個中斷申請,直至正在處理的中斷服務(wù)程序執(zhí)行完以后才去處理新的中斷申請。3.實現(xiàn)中斷嵌套當CPU9
4.實現(xiàn)中斷的撤除
在響應(yīng)中斷申請以后,返回主程序之前,中斷請求應(yīng)該撤除,否則,就等于中斷申請依然存在,這將影響對其它中斷申請的響應(yīng)。MCS-51中斷系統(tǒng)只能對一部分中斷申請,在響應(yīng)后自動撤除,使用中應(yīng)注意。
4.實現(xiàn)中斷的撤除
在響應(yīng)中斷申請以后,返105.2MCS-51中斷系統(tǒng)及中斷控制
MCS-51的中斷系統(tǒng)結(jié)構(gòu)框圖如圖5—3所示,與中斷有關(guān)的特殊功能寄存器有4個,分別為中斷源寄存器(即專用寄存器TCON和SCON的相關(guān)位)、中斷允許控制寄存器IE和中斷優(yōu)先級控制寄存器IP。MCS-51單片機有5個中斷源,可提供兩個中斷優(yōu)先級,即可實現(xiàn)二級中斷嵌套。5.2MCS-51中斷系統(tǒng)及中斷控制
MCS-51的中斷11圖5-3MCS-51的中斷系統(tǒng)結(jié)構(gòu)框圖
圖5-3MCS-51的中斷系統(tǒng)結(jié)構(gòu)框圖125.2..1MCS-51中斷源及中斷入口
MCS-51的中斷源可分為三類:外部中斷、定時中斷和串行口中斷。
1.外部中斷類外部中斷是由外部原因引起的,即外部中斷0(INT0)和外部中斷1(INT1):
INT0——外部中斷0請求信號,由P3.2引腳輸入。由IT0(TCON.0)決定中斷請求信號是低電平有效還是下降沿有效。一旦輸入信號有效,即向CPU申請中斷,并且使IE0=1。
INT1——外部中斷1請求信號,由P3.3引腳輸入。由IT1(TCON.2)決定中斷請求信號是低電平有效還是下降沿有效。一旦輸入信號有效,即向CPU申請中斷,并且使IE1=1。5.2..1MCS-51中斷源及中斷入口132.定時中斷類
定時中斷是為滿足定時或計數(shù)溢出處理的需要而設(shè)置的,當定時器/計數(shù)器中的計數(shù)結(jié)構(gòu)發(fā)生計數(shù)溢出時,即表明定時時間到或計數(shù)值已滿,這時就以計數(shù)溢出信號作為中斷請求,去置位一個溢出標志位,這種中斷請求是在單片機芯片內(nèi)部發(fā)生的,無需在芯片上設(shè)置引入端,但在計數(shù)方式時,中斷源可以由單片機芯片外部引入。
TF0—一定時器T0溢出中斷請求。當定時器T0產(chǎn)生溢出時,其中斷請求標志TF0=1,請求中斷處理。
TF1——定時器T1溢出中斷請求。當定時器T1產(chǎn)生溢出時,其中斷請求標志TF1=1,請求中斷處理。2.定時中斷類
143.串行口中斷類
串行口中斷是為串行數(shù)據(jù)的傳送需要而設(shè)置的。
RI或TI——串行中斷請求。當接收或發(fā)送完一串行幀數(shù)據(jù)時,使內(nèi)部串行口中斷請求標志RI或TI=1,并請求中斷。
各中斷源對應(yīng)的中斷服務(wù)程序入口地址:
中斷源入口地址外部中斷00003H定時器T0中斷000BH外部中斷10013定時器T1中斷001BH串行口中斷0023H3.串行口中斷類串行口中斷是為串行數(shù)據(jù)的傳155.2..2MCS-51中斷請求
在中斷請求被響應(yīng)前,中斷請求標志分別由特殊功能寄存器TCON和SCON的相應(yīng)位鎖存。
1.TCON中的中斷標志
TCON控制寄存器各位含義:
TCON8FH8DH8BH8AH89H88H
TFl——T1溢出中斷標志。
T1被啟動計數(shù)后,從初值開始加1計數(shù),直至計滿溢出后,由硬件使TFl=l,向CPU請求中斷,此標志一直保持到CPU響應(yīng)中斷后,才由硬件自動清“0”。也可用軟件查詢該標志,并由軟件清“0”。
TFlTF0IE1IT1IE0IT0(88H)5.2..2MCS-51中斷請求
在中斷請求16
TF0——T0溢出中斷標志。其操作功能類似于TF1。
IE1——INT1外部中斷1標志。IE1=1表明外部中斷1向CPU申請中斷。
IT1——外部中斷1觸發(fā)方式控制位。
(1)ITl=0,外部中斷1為電平觸發(fā)方式,低電平有效。
(2)ITl=1,外部中斷1控制為邊沿(先高后低的負跳變)觸發(fā)方式。
IE0——INT0外部中斷0標志。其操作功能與IE1類同。
IT0——外部中斷0觸發(fā)方式控制位。其操作功能與IT1類同。
TF0——T0溢出中斷標志。其操作功能類似于TF1。172.SCON中的中斷標志
SCON是串行口控制寄存器,其低2位TI和RI鎖存串口的發(fā)送中斷和接收中斷標志。其格式和各位含義如下:
SCON99H98H
TI——串行發(fā)送中斷標志。CPU將一個字節(jié)數(shù)據(jù)寫入發(fā)送緩沖器SBUF后啟動發(fā)送,每發(fā)送完一個串行幀,硬件置位TI。TI標志由軟件清除。
RI——串行接收中斷標志。在串行口允許接收時,每接收完一個串行幀,硬件置位RI。RI標志由軟件清除。MCS-51系統(tǒng)復(fù)位后,TCON和SCON中各位均被清“0”。(98H)SMODTIRI2.SCON中的中斷標志
SC185.2.3中斷允許控制
中斷允許寄存器IE格式和各位含義如下:IEAFHACHABHAAHA9HA8HEA——CPU中斷總允許位。EA=1,CPU開放中斷,每個中斷源是被允許還是被禁止,分別由各自的允許位確定;EA=0,CPU屏蔽所有的中斷請求,稱關(guān)中斷。
ES——串行口中斷允許位。ES=1,允許串行口中斷;ES=0,禁止串行口中斷
ET1一—T1中斷允許位。ET1=1,允許T1中斷;ET1=0,禁止T1中斷。
EX1——外部中斷l(xiāng)允許位。EX1=1,允許外部中斷1中斷;EXl=0,禁止外部中斷1中斷。
ET0一—T0中斷允許位。ET0=l,允許T0中斷;ET0=0,禁止T0中斷。
EX0——外部中斷0允許位。EX0=1,允許外部中斷0中斷;EX0=0,禁止外部中斷0中斷。MCS-5l系統(tǒng)復(fù)位后,IE中各中斷允許位均被清“0”,即禁止所有中斷。EA
ESET1EX1ET0EX0(A8H)5.2.3中斷允許控制中斷允許寄存器IE格式和195.2.4中斷優(yōu)先級
中斷優(yōu)先級——系統(tǒng)設(shè)計人員給每個中斷源,事先安排一個中斷響應(yīng)的優(yōu)先順序。然后按照輕重緩急的次序響應(yīng)中斷。中斷源的這種優(yōu)先順序常被稱為中斷優(yōu)先權(quán)級別,或簡稱中斷優(yōu)先級。
專用寄存器IP統(tǒng)一管理中斷優(yōu)先級。它具有兩個中斷優(yōu)先級,由軟件設(shè)置每個中斷源為高優(yōu)先級中斷或低優(yōu)先級中斷,并可實現(xiàn)兩級中斷嵌套。高優(yōu)先級中斷源可以中斷正在執(zhí)行的低優(yōu)先級中斷服務(wù)程序,除非在執(zhí)行低優(yōu)先級中斷服務(wù)程序時設(shè)置了CPU關(guān)中斷或禁止某些高優(yōu)先級中斷源的中斷。同級或低優(yōu)先級的中斷源不能中斷正在執(zhí)行的中斷服務(wù)程序。
5.2.4中斷優(yōu)先級
中斷優(yōu)先級——系統(tǒng)設(shè)計人20專用寄存器IP為中斷優(yōu)先級寄存器,其格式和各位含義如下:
IPBCHBBHBAHB9HB8HPS——串行口中斷優(yōu)先級控制位。PT1——T1中斷優(yōu)先級控制位。PX1——外部中斷l(xiāng)中斷優(yōu)先級控制位。
PT0——T0中斷優(yōu)先級控制位。PX0——外部中斷0中斷優(yōu)先級控制位。
以上對應(yīng)位為1,高優(yōu)先級;為0,低優(yōu)先級。當系統(tǒng)復(fù)位后,IP低5位全部清“0”,將所有中斷源設(shè)置為低優(yōu)先級中斷。
PSPT1PX1PX1PX0(B8H)專用寄存器IP為中斷優(yōu)先級寄存器,其格式和各位含義如下:
21自然優(yōu)先級由硬件形成,排列次序如下:
中斷源自然優(yōu)先級
外部中斷0最高級定時器T0中斷外部中斷1定時器T1中斷串行口中斷最低級當重新設(shè)置優(yōu)先級時,則順序查詢邏輯電路將會相應(yīng)改變排隊順序。例如,給中斷優(yōu)先級寄存器IP中設(shè)置的優(yōu)先級控制字為11H,則PS和PX0均為高優(yōu)先級中斷。當這兩個中斷源同時發(fā)出中斷申請時,CPU將先響應(yīng)自然優(yōu)先級高的PX0的中斷申請,而后響應(yīng)自然優(yōu)先級低的PS的中斷申請。自然優(yōu)先級由硬件形成,排列次序如下:中斷源225.2.5中斷響應(yīng)時間
不同的情況對中斷響應(yīng)的時間不同:(1)最短的響應(yīng)時間,需要5個機器周期。調(diào)用指令本身要用2個機器周期,從外部中斷請求有效到開始執(zhí)行中斷服務(wù)程序的第一條指令,至少需要3個機器周期。(2)如果遇到中斷受阻的情況,中斷響應(yīng)時間會更長一些。不同中斷受阻情況,附加的等待時間為1~5個機器周期。(3)若系統(tǒng)中只有一個中斷源,則響應(yīng)時間為3~8個機器周期。(4)如果有兩個以上中斷源同時申請中斷,則響應(yīng)時間將更長。
—般情況下,可不考慮響應(yīng)時間,但在精確定時控制的場合需要考慮此問題。5.2.5中斷響應(yīng)時間
不同的情況對中斷響應(yīng)的時235.2.6中斷請求的撤除
CPU響應(yīng)某中斷請求后,在中斷返回前,應(yīng)該撤消該中斷請求,否則會引起另一次中斷。(1)定時器0或1溢出中斷,CPU在響應(yīng)中斷后,中斷請求自動撤除。(2)邊沿激活的外部中斷,CPU在響應(yīng)中斷后,硬件自動清除有關(guān)的中斷請求。(3)串行口中斷,CPU響應(yīng)中斷后,靠軟件來清除相應(yīng)的標志。電平激活的外部中斷撤除方法較復(fù)雜。5.2.6中斷請求的撤除
CPU響應(yīng)某中斷24圖5—4是撤除電平激活的中斷的可行的方案之一。
用P1.0接在觸發(fā)器的S端作為應(yīng)答線,當CPU響應(yīng)中斷后可使用如下兩條指令:
ANLPl,#0FEHORLP1,#01H執(zhí)行第一條指令使P1.0輸出為“0”,其持續(xù)時間為2個機器周期,足以使D觸發(fā)器置位,從而撤除中斷請求。執(zhí)行第二條指令使P1.0變?yōu)椤?”,否則D觸發(fā)器的S端始終有效,INT0端始終為“1”,無法再次申請中斷。圖5—4是撤除電平激活的中斷的可行的方案之一。25圖5-4撤除外部中斷請求的電路
圖5-4撤除外部中斷請求的電路265.3中斷處理過程
一個完整的中斷處理的基本過程應(yīng)該包括:中斷請求、中斷響應(yīng)、中斷處理以及中斷返回。中斷處理流程圖如圖5-5所示。不同的計算機由于中斷系統(tǒng)的硬件結(jié)構(gòu)不完全相同,因而中斷響應(yīng)的方式有所不同。在此,僅以MCS—51單片機為例來介紹中斷處理的過程。中止現(xiàn)行程序,保護斷點轉(zhuǎn)入中斷服務(wù)程序入口保護現(xiàn)場中斷服務(wù)恢復(fù)現(xiàn)場中斷返回(RETI)
圖5-5中斷處理流程圖中斷響應(yīng)
中斷返回中斷處理中斷請求
CPU響應(yīng)中斷中斷請求5.3中斷處理過程一個完整的中斷處275.3.1中斷請求
中斷請求是中斷源(或者通過接口電路)向CPU發(fā)出請求中斷的信號,要求CPU中斷原來執(zhí)行的程序,轉(zhuǎn)去為它服務(wù)。一般單片機提供有多條中斷請求線,當中斷源有服務(wù)要求時,可通過中斷請求線,向CPU發(fā)出信號,請求CPU中斷。
中斷請求信號可以是電平信號,也可以是脈沖信號。中斷請求信號應(yīng)該一直保持到CPU做出反應(yīng)時為止。5.3.1中斷請求
中斷請求是中斷源(285.3.2中斷響應(yīng)
中斷響應(yīng)是在滿足CPU的中斷響應(yīng)條件之后,CPU對中斷源中斷請求的回答。在這一階段,CPU要完成中斷服務(wù)以前的所有準備工作,包括保護斷點和把程序轉(zhuǎn)向中斷服務(wù)程序的入口地址(通常稱為矢量地址)。1.CPU的中斷響應(yīng)條件(1)有中斷源發(fā)出中斷申請;(2)中斷總允許位EA=1,即CPU允許所有中斷源申請中斷;(3)申請中斷的中斷源的中斷允許位為1,即此中斷源可以向CPU申請中斷。5.3.2中斷響應(yīng)中斷響應(yīng)是在滿足CPU的中29
有下列任何一種情況存在,中斷響應(yīng)都會受到阻斷:(1)CPU正在執(zhí)行一個同級或高一級的中斷服務(wù)程序;(2)當前的機器周期不是正在執(zhí)行的指令的最后一個周期,即正在執(zhí)行的指令完成前,任何中斷請求都得不到響應(yīng);(3)正在執(zhí)行的指令是返回(RETI)指令或者對專用寄存器IE、IP進行讀/寫的指令,此時,在執(zhí)行RETI或者讀寫IE或IP之后,不會馬上響應(yīng)中斷請求。若存在上述任何一種情況,則不會馬上響應(yīng)中斷,而把該中斷請求鎖存在各自的中斷標志位中,在下一個機器周期再按順序查詢。
由于存在中斷阻斷的情況而未被及時響應(yīng),待上述封鎖中斷的條件被撤消之后,由于中斷標志還存在,仍會響應(yīng)。有下列任何一種情況存在,中斷響應(yīng)都會受到阻斷302.中斷響應(yīng)過程
MCS-51中斷入口地址和中斷輸入引腳是一一對應(yīng)的,從哪個中斷輸入引腳進入的中斷請求,它的中斷服務(wù)程序入口地址一定是某個固定值。如從INT0(P3.2)引腳進入的中斷請求,轉(zhuǎn)向的中斷入口地址是0003H單元。2.中斷響應(yīng)過程MCS-5315.3.3中斷處理
中斷處理(又稱中斷服務(wù))程序從入口地址開始執(zhí)行,直到返回指令“RETI”為止,這個過程稱為中斷處理。
一般包括保護現(xiàn)場和處理中斷源的請求及恢復(fù)現(xiàn)場三部分內(nèi)容。一般主程序和中斷服務(wù)程序都可能會用到累加器、PSW寄存器和一些其它寄存器。CPU在進入中斷服務(wù)程序后,用到上述寄存器時就會破壞它原來存在寄存器中的內(nèi)容,一旦中斷返回,將會造成主程序的混亂。5.3.3中斷處理中斷處理325.3.4中斷返回
中斷返回是指執(zhí)行完中斷服務(wù)程序后,程序返回到斷點(即原來程序執(zhí)行時被斷開的位置),繼續(xù)執(zhí)行原來的程序。中斷返回由專門的中斷返回指令“RETI”實現(xiàn),該指令的功能是把斷點地址取出,送回到程序計數(shù)器PC中去。特別要注意不能用子程序返回指令“RET”代替中斷返回指令“RETI”。5.3.4中斷返回中斷返回是指執(zhí)行完335.4中斷應(yīng)用程序舉例
中斷程序一般包含中斷控制程序(即中斷初始化程序)和中斷服務(wù)程序兩部分。5.4.1中斷初始化程序中斷初始化程序?qū)嵸|(zhì)上就是對TCON、SCON、IE和IP寄存器的管理和控制。只要這些寄存器的相應(yīng)位按照要求進行了狀態(tài)預(yù)置,CPU就會按照人們的意圖對中斷源進行管理和控制。中斷初始化程序一般不獨立編寫,而是包含在主程序中,根據(jù)需要進行編寫。中斷初始化程序需完成以下操作:
1.開中斷;
2.某一中斷源中斷請求的允許與禁止(屏蔽);
3.確定各中斷源的優(yōu)先級別;
4.若是外部中斷請求,則要設(shè)定觸發(fā)方式是電平觸發(fā)還是邊沿觸發(fā)。5.4中斷應(yīng)用程序舉例中斷程序34例5-1假設(shè)規(guī)定外部中斷0為電平觸發(fā)方式,高優(yōu)先級,試寫出有關(guān)的初始化程序。
解:可用兩種方法完成。
①方法1,用位操作指令完成:SETBEA ;開中斷允許總控制位SETBEX0 ;外中斷0開中斷SETBPX0 ;外中斷0高優(yōu)先級CLRIT0 ;電平觸發(fā)②方法2,用其它指令也可完成同樣功能:MOVIE,#81H ;同時置位EA和EX0ORLIP,#01H ;置位PX0ANLTCON,#0FEH ;使IT0為0
這兩種方法都可以完成題目規(guī)定的要求。一般情況下,用方法1簡單些。因為,在編制中斷初始化程序時,只需知道控制位的名稱就行了,而不必記住它們在寄存器中的確切位置。例5-1假設(shè)規(guī)定外部中斷0為電平觸發(fā)方式,高優(yōu)先級,試寫出355.4.2中斷服務(wù)程序
中斷服務(wù)程序是一種為中斷源的特定情況要求服務(wù)的獨立程序段,以中斷返回指令RETI結(jié)束,中斷服務(wù)完后返回到原來被中斷的地方(即斷點),繼續(xù)執(zhí)行原來的程序。
中斷服務(wù)程序的固定入口:
0003H單元——外部中斷INT0的中斷服務(wù)程序入口
000BH單元——內(nèi)部定時器/計數(shù)器T0的中斷服務(wù)程序入口
0013H單元——外部中斷INT1的中斷服務(wù)程序入口
001BH單元——內(nèi)部定時器/計數(shù)器T1的中斷服務(wù)程序入口
0023H單元——串行口的中斷服務(wù)程序入口
中斷服務(wù)程序和子程序一樣,在調(diào)用和返回時,也有一個保護斷點和現(xiàn)場的問題。
在中斷響應(yīng)過程中,斷點的保護主要由硬件電路自動實現(xiàn)。它將斷點壓人堆棧,再將中斷服務(wù)程序的入口地址送入程序計數(shù)器PC,使程序轉(zhuǎn)向中斷服務(wù)程序,即為中斷源的請求服務(wù)。5.4.2中斷服務(wù)程序中斷服務(wù)36
中斷時,現(xiàn)場保護由中斷服務(wù)程序來完成。因此在編寫中斷服務(wù)程序時必須考慮保護現(xiàn)場的問題。在MCS—51單片機中,現(xiàn)場一般包括累加器A、工作寄存器R0~R7以及程序狀態(tài)字PSW等。保護的方法與子程序相同。
在編寫中斷服務(wù)程序時還應(yīng)注意以下三點:
(1)各中斷源入口地址之間只相隔8個字節(jié)。中斷服務(wù)程序放在此處,一般容量是不夠的。常用的方法是在中斷入口地址單元處,存放—條無條件轉(zhuǎn)移指令,如“LJMPAddress”,使程序跳轉(zhuǎn)到用戶安排的中斷服務(wù)程序起始地址去。
(2)在執(zhí)行當前中斷程序時,為了禁止更高優(yōu)先級中斷源的中斷請求,可先用軟件關(guān)閉CPU中斷,或屏蔽更高級中斷源的中斷,在中斷返回前再開放被關(guān)閉或被屏蔽的中斷。
(3)在多級中斷情況下,應(yīng)在保護現(xiàn)場之前關(guān)掉中斷,在恢復(fù)現(xiàn)場之后打開中斷。如果在中斷處理時允許有更高級的中斷打斷它,則在保護現(xiàn)場之后開中斷,恢復(fù)現(xiàn)場之前關(guān)中斷。
375.4.3應(yīng)用舉例
在設(shè)計中斷服務(wù)程序時,是按中斷源的要求,根據(jù)中斷處理所要完成的任務(wù)來進行的。
保護現(xiàn)場和恢復(fù)現(xiàn)場一般采用PUSH和POP指令來實現(xiàn)。PUSH和POP指令一般成對出現(xiàn),以保證寄存器的內(nèi)容不會改變。要注意堆棧操作的“先進后出,后進先出”的原則。5.4.3應(yīng)用舉例
38例5-2設(shè)在主程序中用到了寄存器PSW、ACC、B、DPTR,而在執(zhí)行中斷服務(wù)程序時需要用到這些寄存器。因此,在中斷服務(wù)程序里要保護PSW、ACC、B、DPTR的內(nèi)容,以免破壞主程序中相應(yīng)用到的寄存器PSW、ACC、B、DPTR內(nèi)容。
程序如下:
SERVICE: PUSH PSW;保護程序狀態(tài)字
PUSH ACC;保護累加器APUSH B; 保護寄存器BPUSH DPL;保護數(shù)據(jù)指針低字節(jié)PUSH DPH;保護數(shù)據(jù)指針高字節(jié)
┇ ;中斷處理POP
DPH;恢復(fù)現(xiàn)場,即恢復(fù)各寄存器內(nèi)容POP DPLPOP BPOP ACCPOP PSWRETI中斷在實時控制中應(yīng)用很多,在后面的章節(jié)中,會陸續(xù)講到。下面舉一例予以介紹。例5-2設(shè)在主程序中用到了寄存器PSW、ACC、B、DP39例5-3
圖5-5為多個故障顯示電路,當系統(tǒng)無故障時,4個故障源輸入端X1~X4全為低電平,顯示燈全滅;當某部分出現(xiàn)故障,其對應(yīng)的輸入由低電平變?yōu)楦唠娖?,從而引起MCS-51單片機中斷,中斷服務(wù)程序的任務(wù)是判定故障源,并用對應(yīng)的發(fā)光二極管LED1~LED4進行顯示。
圖5-5多個故障源進行顯示例5-3圖5-5為多個故障顯示電路,當系統(tǒng)無故障時,4個40編程如下:
ORG0000H ;程序開始
AJMPMAIN ;轉(zhuǎn)主程序
ORG0003H ;外部中斷INT0入口地址
AJMPSERVICE ;轉(zhuǎn)中斷服務(wù)程序MAIN: 0RLP1,#0FFH ;燈全滅,準備讀入
SETBIT0 ;選擇邊沿方式
SETBEX0 ;允許INT0中斷
SETBEA ;CPU開中斷
AJMP$ ;等待中斷SERVICE:JNBP1.3,N1 ;若X1無故障轉(zhuǎn)
CLRP1.4 ;若X1有故障,LED1亮N1: JNBP1.2,N2 ;若X2無故障轉(zhuǎn)
CLRP1.5 ;若X2有故障,LED2亮N2: JNBP1.1,N3 ;若X3無故障轉(zhuǎn)
CLRP1.6 ;若X3有故障,LED3亮N3: JNBP1.0,N4 ;若X4無故障轉(zhuǎn)
CLRP1.7 ;若X4有故障,LED4亮N4: RETI編程如下: ORG0000H 41
這個程序主要分為主程序和中斷服務(wù)程序兩部分。主程序主要完成初始化的工作,中斷服務(wù)程序主要檢測故障源是否發(fā)生,如果某故障源發(fā)生,則將相應(yīng)的指示燈點亮。在此主程序和中斷服務(wù)程序中,沒有存在使用寄存器之間的干涉問題。因此,在中斷服務(wù)程序中不用保護現(xiàn)場和恢復(fù)現(xiàn)場。這個程序主要分為主程序和中斷服務(wù)程序兩42小結(jié)
本章就中斷的概念、中斷系統(tǒng)、中斷控制、中斷處理、中斷服務(wù)程序的編制和應(yīng)用,進行了比較詳細的闡述。引入中斷后,計算機的效率得到了很大的提高,在解決實時控制的問題時,變得非常的靈活和方便,應(yīng)用非常廣泛。主要內(nèi)容有:中斷、中斷源、中斷服務(wù)程序、保護現(xiàn)場、恢復(fù)現(xiàn)場等概念;中斷流程、中斷嵌套、中斷優(yōu)先級、中斷處理等過程的實現(xiàn);MCS-51中斷入口地址;各中斷控制寄存器的每位含義:包括定時器/計數(shù)器控制寄存器TCON、串行口控制寄存器SCON、中斷允許控制寄存器IE和中斷優(yōu)先控制器IP;中斷初始化和中斷服務(wù)程序的編制等。小43
思考題與習(xí)題五
1.什么叫中斷?中斷系統(tǒng)一般應(yīng)具備哪些功能?
2.中斷服務(wù)程序和子程序的主要區(qū)別是什么?
3.MCS-51中斷系統(tǒng)有幾個中斷源?中斷源的名稱是什么?
4.MCS-51中斷系統(tǒng)有幾級中斷優(yōu)先級?它是如何控制的?
5.MCS-51單片機響應(yīng)中斷后,中斷入口地址各是多少?
6.一個完整的中斷處理的基本過程包括哪些內(nèi)容?
7.中斷響應(yīng)后,是怎樣保護斷點和保護現(xiàn)場的?
8.試編寫一段對中斷系統(tǒng)進行初始化的程序,使之允許INT0、INT1、T0和串行口中斷,且使串行口中斷為高優(yōu)先級中斷。
44第5章中斷系統(tǒng)及其應(yīng)用
●教學(xué)目標:
介紹中斷、中斷源、中斷系統(tǒng)的概念介紹MCS-51中斷系統(tǒng)及中斷控制介紹中斷處理的過程
介紹中斷應(yīng)用程序的編程
●學(xué)習(xí)要求:
熟悉中斷、中斷源、中斷服務(wù)程序、保護現(xiàn)場、恢復(fù)現(xiàn)場、中斷優(yōu)先級、中斷處理等概念;掌握MCS-51中斷入口地址和各中斷控制寄存器的每位含義及應(yīng)用:包括定時器/計數(shù)器控制寄存器TCON、串行口控制寄存器SCON、中斷允許控制寄存器IE和中斷優(yōu)先控制器IP;掌握中斷初始化和中斷服務(wù)程序的編制。
第5章中斷系統(tǒng)及其應(yīng)用●教學(xué)目標:455.1概述中斷技術(shù)是計算機中的重要技術(shù)之一。引入中斷技術(shù)作用:(1)實時處理,提高計算機處理故障的能力;(2)解決CPU和外設(shè)之間的速度匹配問題,提高CPU的效率。本章將介紹中斷的概念,并以MCS-51的中斷系統(tǒng)為例介紹中斷的處理過程及應(yīng)用。5.1概述中斷技術(shù)是計算機中的重要技術(shù)之一。465.1.1中斷的概念
中斷——是指中央處理器CPU正在執(zhí)行程序,處理某件事情的時候,外部發(fā)生了某一事件,請求CPU馬上處理,CPU暫時中斷當前的工作,轉(zhuǎn)入處理所發(fā)生的事件,處理完以后,再返回到原來被中斷的地方,繼續(xù)原來的工作。實現(xiàn)中斷功能的部件稱為中斷系統(tǒng)。中斷服務(wù)程序——中斷之后所執(zhí)行的處理程序通常稱為中斷服務(wù)程序,原來運行的程序稱為主程序。
斷點——主程序被斷開的位置(地址)稱為斷點。
中斷源——引起中斷的原因,或能發(fā)出中斷申請的來源,稱為中斷源。
中斷請求——中斷源要求服務(wù)的請求稱為中斷請求或中斷申請。5.1.1中斷的概念中斷——是指中央處理器CPU47調(diào)用中斷服務(wù)程序與調(diào)用子程序的區(qū)別:
調(diào)用子程序指令在程序中是事先安排好的,而調(diào)用中斷服務(wù)程序事先卻無法確知,因為“中斷”的發(fā)生是由外設(shè)決定的,程序中無法事先安排調(diào)用指令,因而調(diào)用中斷服務(wù)程序的過程是由硬件自動完成的。調(diào)用中斷服務(wù)程序與調(diào)用子程序的區(qū)別:調(diào)485.1.2中斷源
中斷源——在中斷系統(tǒng)中,將引起中斷請求的設(shè)備或事件的來源,—般統(tǒng)稱為中斷源。常見中斷源:
1.輸入、輸出設(shè)備中斷源一般計算機的輸入、輸出設(shè)備,如鍵盤、磁盤驅(qū)動器、打印機等,可通過接口電路向CPU申請中斷。
2.故障源故障源是產(chǎn)生故障信息的來源。例如:CPU內(nèi)部故障源,如除法中除數(shù)為零時的情況;外部故障源,如電源掉電情況。在電源掉電時可以接入備用的電池供電,以保存存儲器中的信息。當電壓因掉電降到—定值時,就發(fā)出中斷申請,由計算機的中斷系統(tǒng)完成替換備用電源的控制。
3.實時中斷源在實時控制中,常常將被控參數(shù)、信息作為實時中斷源。例如,電壓、電流、溫度等超越上限或下限時,以及繼電器、開關(guān)閉合斷開時,都可以作為中斷源申請中斷。
4.定時/計數(shù)脈沖中斷源內(nèi)部定時/計數(shù)中斷是由單片機內(nèi)部的定時器/計數(shù)器溢出時自動產(chǎn)生的;外部定時/計數(shù)中斷是由外部定時脈沖通過CPU的中斷請求輸入線或定時器/計數(shù)器的輸入線引起的。5.1.2中斷源中斷源——在中斷系統(tǒng)中,將引起495.1.3中斷系統(tǒng)的一般功能中斷系統(tǒng)一般應(yīng)具有如下功能:
1.實現(xiàn)中斷及返回當某一個中斷源發(fā)出中斷申請時,若允許響應(yīng)這個中斷請求,CPU必須在現(xiàn)行的指令執(zhí)行完后,把斷點處的PC值(即下一條應(yīng)執(zhí)行的指令地址)壓入堆棧保存起來,稱為保護斷點,這是由硬件自動完成的。保護現(xiàn)場——響應(yīng)中斷請求后,將有關(guān)的寄存器內(nèi)容和狀態(tài)標志位壓入堆棧保存起來,這稱為保護現(xiàn)場。
恢復(fù)現(xiàn)場——執(zhí)行中斷服務(wù)程序后,恢復(fù)原保留的寄存器的內(nèi)容和標志位的狀態(tài),稱恢復(fù)現(xiàn)場,并執(zhí)行返回指令“RETI”,這個過程通過用戶編程來實現(xiàn)。5.1.3中斷系統(tǒng)的一般功能中斷系統(tǒng)一般應(yīng)具有如下50中斷及返回過程如圖5—1所示:
主程序低級中斷高級中斷中斷中斷返回返回圖5-2中斷嵌套流程圖執(zhí)行中斷服務(wù)程序主程序繼續(xù)執(zhí)行主程序RETI圖5-1中斷流程圖中斷及返回過程如圖5—1所示:主程序512.實現(xiàn)優(yōu)先權(quán)排隊
優(yōu)先權(quán)——給各中斷源規(guī)定一個優(yōu)先級別,稱為優(yōu)先權(quán)。當兩個或者兩個以上的中斷源同時提出中斷請求時,計算機首先為優(yōu)先權(quán)最高的中斷源服務(wù),服務(wù)結(jié)束后再響應(yīng)級別較低的中斷源。計算機按中斷源級別高低逐次響應(yīng)的過程稱優(yōu)先權(quán)排隊。這個過程可以通過硬件電路來實現(xiàn),也可以通過程序查詢來實現(xiàn)。2.實現(xiàn)優(yōu)先權(quán)排隊
優(yōu)先權(quán)——給各中斷源規(guī)定一個優(yōu)523.實現(xiàn)中斷嵌套
當CPU響應(yīng)某一中斷的請求而進行中斷處理時,若有優(yōu)先權(quán)級別更高的中斷源發(fā)出中斷申請,CPU則中斷正在進行的中斷服務(wù)程序,并保留這個程序的斷點(類似于子程序嵌套),響應(yīng)高級中斷,在高級中斷處理完以后,再繼續(xù)執(zhí)行被中斷的中斷服務(wù)程序。中斷嵌套示意圖如圖5—2所示。中斷申請的中斷源的優(yōu)先權(quán)級別與正在處理的中斷源同級或更低時,CPU暫時不響應(yīng)這個中斷申請,直至正在處理的中斷服務(wù)程序執(zhí)行完以后才去處理新的中斷申請。3.實現(xiàn)中斷嵌套當CPU53
4.實現(xiàn)中斷的撤除
在響應(yīng)中斷申請以后,返回主程序之前,中斷請求應(yīng)該撤除,否則,就等于中斷申請依然存在,這將影響對其它中斷申請的響應(yīng)。MCS-51中斷系統(tǒng)只能對一部分中斷申請,在響應(yīng)后自動撤除,使用中應(yīng)注意。
4.實現(xiàn)中斷的撤除
在響應(yīng)中斷申請以后,返545.2MCS-51中斷系統(tǒng)及中斷控制
MCS-51的中斷系統(tǒng)結(jié)構(gòu)框圖如圖5—3所示,與中斷有關(guān)的特殊功能寄存器有4個,分別為中斷源寄存器(即專用寄存器TCON和SCON的相關(guān)位)、中斷允許控制寄存器IE和中斷優(yōu)先級控制寄存器IP。MCS-51單片機有5個中斷源,可提供兩個中斷優(yōu)先級,即可實現(xiàn)二級中斷嵌套。5.2MCS-51中斷系統(tǒng)及中斷控制
MCS-51的中斷55圖5-3MCS-51的中斷系統(tǒng)結(jié)構(gòu)框圖
圖5-3MCS-51的中斷系統(tǒng)結(jié)構(gòu)框圖565.2..1MCS-51中斷源及中斷入口
MCS-51的中斷源可分為三類:外部中斷、定時中斷和串行口中斷。
1.外部中斷類外部中斷是由外部原因引起的,即外部中斷0(INT0)和外部中斷1(INT1):
INT0——外部中斷0請求信號,由P3.2引腳輸入。由IT0(TCON.0)決定中斷請求信號是低電平有效還是下降沿有效。一旦輸入信號有效,即向CPU申請中斷,并且使IE0=1。
INT1——外部中斷1請求信號,由P3.3引腳輸入。由IT1(TCON.2)決定中斷請求信號是低電平有效還是下降沿有效。一旦輸入信號有效,即向CPU申請中斷,并且使IE1=1。5.2..1MCS-51中斷源及中斷入口572.定時中斷類
定時中斷是為滿足定時或計數(shù)溢出處理的需要而設(shè)置的,當定時器/計數(shù)器中的計數(shù)結(jié)構(gòu)發(fā)生計數(shù)溢出時,即表明定時時間到或計數(shù)值已滿,這時就以計數(shù)溢出信號作為中斷請求,去置位一個溢出標志位,這種中斷請求是在單片機芯片內(nèi)部發(fā)生的,無需在芯片上設(shè)置引入端,但在計數(shù)方式時,中斷源可以由單片機芯片外部引入。
TF0—一定時器T0溢出中斷請求。當定時器T0產(chǎn)生溢出時,其中斷請求標志TF0=1,請求中斷處理。
TF1——定時器T1溢出中斷請求。當定時器T1產(chǎn)生溢出時,其中斷請求標志TF1=1,請求中斷處理。2.定時中斷類
583.串行口中斷類
串行口中斷是為串行數(shù)據(jù)的傳送需要而設(shè)置的。
RI或TI——串行中斷請求。當接收或發(fā)送完一串行幀數(shù)據(jù)時,使內(nèi)部串行口中斷請求標志RI或TI=1,并請求中斷。
各中斷源對應(yīng)的中斷服務(wù)程序入口地址:
中斷源入口地址外部中斷00003H定時器T0中斷000BH外部中斷10013定時器T1中斷001BH串行口中斷0023H3.串行口中斷類串行口中斷是為串行數(shù)據(jù)的傳595.2..2MCS-51中斷請求
在中斷請求被響應(yīng)前,中斷請求標志分別由特殊功能寄存器TCON和SCON的相應(yīng)位鎖存。
1.TCON中的中斷標志
TCON控制寄存器各位含義:
TCON8FH8DH8BH8AH89H88H
TFl——T1溢出中斷標志。
T1被啟動計數(shù)后,從初值開始加1計數(shù),直至計滿溢出后,由硬件使TFl=l,向CPU請求中斷,此標志一直保持到CPU響應(yīng)中斷后,才由硬件自動清“0”。也可用軟件查詢該標志,并由軟件清“0”。
TFlTF0IE1IT1IE0IT0(88H)5.2..2MCS-51中斷請求
在中斷請求60
TF0——T0溢出中斷標志。其操作功能類似于TF1。
IE1——INT1外部中斷1標志。IE1=1表明外部中斷1向CPU申請中斷。
IT1——外部中斷1觸發(fā)方式控制位。
(1)ITl=0,外部中斷1為電平觸發(fā)方式,低電平有效。
(2)ITl=1,外部中斷1控制為邊沿(先高后低的負跳變)觸發(fā)方式。
IE0——INT0外部中斷0標志。其操作功能與IE1類同。
IT0——外部中斷0觸發(fā)方式控制位。其操作功能與IT1類同。
TF0——T0溢出中斷標志。其操作功能類似于TF1。612.SCON中的中斷標志
SCON是串行口控制寄存器,其低2位TI和RI鎖存串口的發(fā)送中斷和接收中斷標志。其格式和各位含義如下:
SCON99H98H
TI——串行發(fā)送中斷標志。CPU將一個字節(jié)數(shù)據(jù)寫入發(fā)送緩沖器SBUF后啟動發(fā)送,每發(fā)送完一個串行幀,硬件置位TI。TI標志由軟件清除。
RI——串行接收中斷標志。在串行口允許接收時,每接收完一個串行幀,硬件置位RI。RI標志由軟件清除。MCS-51系統(tǒng)復(fù)位后,TCON和SCON中各位均被清“0”。(98H)SMODTIRI2.SCON中的中斷標志
SC625.2.3中斷允許控制
中斷允許寄存器IE格式和各位含義如下:IEAFHACHABHAAHA9HA8HEA——CPU中斷總允許位。EA=1,CPU開放中斷,每個中斷源是被允許還是被禁止,分別由各自的允許位確定;EA=0,CPU屏蔽所有的中斷請求,稱關(guān)中斷。
ES——串行口中斷允許位。ES=1,允許串行口中斷;ES=0,禁止串行口中斷
ET1一—T1中斷允許位。ET1=1,允許T1中斷;ET1=0,禁止T1中斷。
EX1——外部中斷l(xiāng)允許位。EX1=1,允許外部中斷1中斷;EXl=0,禁止外部中斷1中斷。
ET0一—T0中斷允許位。ET0=l,允許T0中斷;ET0=0,禁止T0中斷。
EX0——外部中斷0允許位。EX0=1,允許外部中斷0中斷;EX0=0,禁止外部中斷0中斷。MCS-5l系統(tǒng)復(fù)位后,IE中各中斷允許位均被清“0”,即禁止所有中斷。EA
ESET1EX1ET0EX0(A8H)5.2.3中斷允許控制中斷允許寄存器IE格式和635.2.4中斷優(yōu)先級
中斷優(yōu)先級——系統(tǒng)設(shè)計人員給每個中斷源,事先安排一個中斷響應(yīng)的優(yōu)先順序。然后按照輕重緩急的次序響應(yīng)中斷。中斷源的這種優(yōu)先順序常被稱為中斷優(yōu)先權(quán)級別,或簡稱中斷優(yōu)先級。
專用寄存器IP統(tǒng)一管理中斷優(yōu)先級。它具有兩個中斷優(yōu)先級,由軟件設(shè)置每個中斷源為高優(yōu)先級中斷或低優(yōu)先級中斷,并可實現(xiàn)兩級中斷嵌套。高優(yōu)先級中斷源可以中斷正在執(zhí)行的低優(yōu)先級中斷服務(wù)程序,除非在執(zhí)行低優(yōu)先級中斷服務(wù)程序時設(shè)置了CPU關(guān)中斷或禁止某些高優(yōu)先級中斷源的中斷。同級或低優(yōu)先級的中斷源不能中斷正在執(zhí)行的中斷服務(wù)程序。
5.2.4中斷優(yōu)先級
中斷優(yōu)先級——系統(tǒng)設(shè)計人64專用寄存器IP為中斷優(yōu)先級寄存器,其格式和各位含義如下:
IPBCHBBHBAHB9HB8HPS——串行口中斷優(yōu)先級控制位。PT1——T1中斷優(yōu)先級控制位。PX1——外部中斷l(xiāng)中斷優(yōu)先級控制位。
PT0——T0中斷優(yōu)先級控制位。PX0——外部中斷0中斷優(yōu)先級控制位。
以上對應(yīng)位為1,高優(yōu)先級;為0,低優(yōu)先級。當系統(tǒng)復(fù)位后,IP低5位全部清“0”,將所有中斷源設(shè)置為低優(yōu)先級中斷。
PSPT1PX1PX1PX0(B8H)專用寄存器IP為中斷優(yōu)先級寄存器,其格式和各位含義如下:
65自然優(yōu)先級由硬件形成,排列次序如下:
中斷源自然優(yōu)先級
外部中斷0最高級定時器T0中斷外部中斷1定時器T1中斷串行口中斷最低級當重新設(shè)置優(yōu)先級時,則順序查詢邏輯電路將會相應(yīng)改變排隊順序。例如,給中斷優(yōu)先級寄存器IP中設(shè)置的優(yōu)先級控制字為11H,則PS和PX0均為高優(yōu)先級中斷。當這兩個中斷源同時發(fā)出中斷申請時,CPU將先響應(yīng)自然優(yōu)先級高的PX0的中斷申請,而后響應(yīng)自然優(yōu)先級低的PS的中斷申請。自然優(yōu)先級由硬件形成,排列次序如下:中斷源665.2.5中斷響應(yīng)時間
不同的情況對中斷響應(yīng)的時間不同:(1)最短的響應(yīng)時間,需要5個機器周期。調(diào)用指令本身要用2個機器周期,從外部中斷請求有效到開始執(zhí)行中斷服務(wù)程序的第一條指令,至少需要3個機器周期。(2)如果遇到中斷受阻的情況,中斷響應(yīng)時間會更長一些。不同中斷受阻情況,附加的等待時間為1~5個機器周期。(3)若系統(tǒng)中只有一個中斷源,則響應(yīng)時間為3~8個機器周期。(4)如果有兩個以上中斷源同時申請中斷,則響應(yīng)時間將更長。
—般情況下,可不考慮響應(yīng)時間,但在精確定時控制的場合需要考慮此問題。5.2.5中斷響應(yīng)時間
不同的情況對中斷響應(yīng)的時675.2.6中斷請求的撤除
CPU響應(yīng)某中斷請求后,在中斷返回前,應(yīng)該撤消該中斷請求,否則會引起另一次中斷。(1)定時器0或1溢出中斷,CPU在響應(yīng)中斷后,中斷請求自動撤除。(2)邊沿激活的外部中斷,CPU在響應(yīng)中斷后,硬件自動清除有關(guān)的中斷請求。(3)串行口中斷,CPU響應(yīng)中斷后,靠軟件來清除相應(yīng)的標志。電平激活的外部中斷撤除方法較復(fù)雜。5.2.6中斷請求的撤除
CPU響應(yīng)某中斷68圖5—4是撤除電平激活的中斷的可行的方案之一。
用P1.0接在觸發(fā)器的S端作為應(yīng)答線,當CPU響應(yīng)中斷后可使用如下兩條指令:
ANLPl,#0FEHORLP1,#01H執(zhí)行第一條指令使P1.0輸出為“0”,其持續(xù)時間為2個機器周期,足以使D觸發(fā)器置位,從而撤除中斷請求。執(zhí)行第二條指令使P1.0變?yōu)椤?”,否則D觸發(fā)器的S端始終有效,INT0端始終為“1”,無法再次申請中斷。圖5—4是撤除電平激活的中斷的可行的方案之一。69圖5-4撤除外部中斷請求的電路
圖5-4撤除外部中斷請求的電路705.3中斷處理過程
一個完整的中斷處理的基本過程應(yīng)該包括:中斷請求、中斷響應(yīng)、中斷處理以及中斷返回。中斷處理流程圖如圖5-5所示。不同的計算機由于中斷系統(tǒng)的硬件結(jié)構(gòu)不完全相同,因而中斷響應(yīng)的方式有所不同。在此,僅以MCS—51單片機為例來介紹中斷處理的過程。中止現(xiàn)行程序,保護斷點轉(zhuǎn)入中斷服務(wù)程序入口保護現(xiàn)場中斷服務(wù)恢復(fù)現(xiàn)場中斷返回(RETI)
圖5-5中斷處理流程圖中斷響應(yīng)
中斷返回中斷處理中斷請求
CPU響應(yīng)中斷中斷請求5.3中斷處理過程一個完整的中斷處715.3.1中斷請求
中斷請求是中斷源(或者通過接口電路)向CPU發(fā)出請求中斷的信號,要求CPU中斷原來執(zhí)行的程序,轉(zhuǎn)去為它服務(wù)。一般單片機提供有多條中斷請求線,當中斷源有服務(wù)要求時,可通過中斷請求線,向CPU發(fā)出信號,請求CPU中斷。
中斷請求信號可以是電平信號,也可以是脈沖信號。中斷請求信號應(yīng)該一直保持到CPU做出反應(yīng)時為止。5.3.1中斷請求
中斷請求是中斷源(725.3.2中斷響應(yīng)
中斷響應(yīng)是在滿足CPU的中斷響應(yīng)條件之后,CPU對中斷源中斷請求的回答。在這一階段,CPU要完成中斷服務(wù)以前的所有準備工作,包括保護斷點和把程序轉(zhuǎn)向中斷服務(wù)程序的入口地址(通常稱為矢量地址)。1.CPU的中斷響應(yīng)條件(1)有中斷源發(fā)出中斷申請;(2)中斷總允許位EA=1,即CPU允許所有中斷源申請中斷;(3)申請中斷的中斷源的中斷允許位為1,即此中斷源可以向CPU申請中斷。5.3.2中斷響應(yīng)中斷響應(yīng)是在滿足CPU的中73
有下列任何一種情況存在,中斷響應(yīng)都會受到阻斷:(1)CPU正在執(zhí)行一個同級或高一級的中斷服務(wù)程序;(2)當前的機器周期不是正在執(zhí)行的指令的最后一個周期,即正在執(zhí)行的指令完成前,任何中斷請求都得不到響應(yīng);(3)正在執(zhí)行的指令是返回(RETI)指令或者對專用寄存器IE、IP進行讀/寫的指令,此時,在執(zhí)行RETI或者讀寫IE或IP之后,不會馬上響應(yīng)中斷請求。若存在上述任何一種情況,則不會馬上響應(yīng)中斷,而把該中斷請求鎖存在各自的中斷標志位中,在下一個機器周期再按順序查詢。
由于存在中斷阻斷的情況而未被及時響應(yīng),待上述封鎖中斷的條件被撤消之后,由于中斷標志還存在,仍會響應(yīng)。有下列任何一種情況存在,中斷響應(yīng)都會受到阻斷742.中斷響應(yīng)過程
MCS-51中斷入口地址和中斷輸入引腳是一一對應(yīng)的,從哪個中斷輸入引腳進入的中斷請求,它的中斷服務(wù)程序入口地址一定是某個固定值。如從INT0(P3.2)引腳進入的中斷請求,轉(zhuǎn)向的中斷入口地址是0003H單元。2.中斷響應(yīng)過程MCS-5755.3.3中斷處理
中斷處理(又稱中斷服務(wù))程序從入口地址開始執(zhí)行,直到返回指令“RETI”為止,這個過程稱為中斷處理。
一般包括保護現(xiàn)場和處理中斷源的請求及恢復(fù)現(xiàn)場三部分內(nèi)容。一般主程序和中斷服務(wù)程序都可能會用到累加器、PSW寄存器和一些其它寄存器。CPU在進入中斷服務(wù)程序后,用到上述寄存器時就會破壞它原來存在寄存器中的內(nèi)容,一旦中斷返回,將會造成主程序的混亂。5.3.3中斷處理中斷處理765.3.4中斷返回
中斷返回是指執(zhí)行完中斷服務(wù)程序后,程序返回到斷點(即原來程序執(zhí)行時被斷開的位置),繼續(xù)執(zhí)行原來的程序。中斷返回由專門的中斷返回指令“RETI”實現(xiàn),該指令的功能是把斷點地址取出,送回到程序計數(shù)器PC中去。特別要注意不能用子程序返回指令“RET”代替中斷返回指令“RETI”。5.3.4中斷返回中斷返回是指執(zhí)行完775.4中斷應(yīng)用程序舉例
中斷程序一般包含中斷控制程序(即中斷初始化程序)和中斷服務(wù)程序兩部分。5.4.1中斷初始化程序中斷初始化程序?qū)嵸|(zhì)上就是對TCON、SCON、IE和IP寄存器的管理和控制。只要這些寄存器的相應(yīng)位按照要求進行了狀態(tài)預(yù)置,CPU就會按照人們的意圖對中斷源進行管理和控制。中斷初始化程序一般不獨立編寫,而是包含在主程序中,根據(jù)需要進行編寫。中斷初始化程序需完成以下操作:
1.開中斷;
2.某一中斷源中斷請求的允許與禁止(屏蔽);
3.確定各中斷源的優(yōu)先級別;
4.若是外部中斷請求,則要設(shè)定觸發(fā)方式是電平觸發(fā)還是邊沿觸發(fā)。5.4中斷應(yīng)用程序舉例中斷程序78例5-1假設(shè)規(guī)定外部中斷0為電平觸發(fā)方式,高優(yōu)先級,試寫出有關(guān)的初始化程序。
解:可用兩種方法完成。
①方法1,用位操作指令完成:SETBEA ;開中斷允許總控制位SETBEX0 ;外中斷0開中斷SETBPX0 ;外中斷0高優(yōu)先級CLRIT0 ;電平觸發(fā)②方法2,用其它指令也可完成同樣功能:MOVIE,#81H ;同時置位EA和EX0ORLIP,#01H ;置位PX0ANLTCON,#0FEH ;使IT0為0
這兩種方法都可以完成題目規(guī)定的要求。一般情況下,用方法1簡單些。因為,在編制中斷初始化程序時,只需知道控制位的名稱就行了,而不必記住它們在寄存器中的確切位置。例5-1假設(shè)規(guī)定外部中斷0為電平觸發(fā)方式,高優(yōu)先級,試寫出795.4.2中斷服務(wù)程序
中斷服務(wù)程序是一種為中斷源的特定情況要求服務(wù)的獨立程序段,以中斷返回指令RETI結(jié)束,中斷服務(wù)完后返回到原來被中斷的地方(即斷點),繼續(xù)執(zhí)行原來的程序。
中斷服務(wù)程序的固定入口:
0003H單元——外部中斷INT0的中斷服務(wù)程序入口
000BH單元——內(nèi)部定時器/計數(shù)器T0的中斷服務(wù)程序入口
0013H單元——外部中斷INT1的中斷服務(wù)程序入口
001BH單元——內(nèi)部定時器/計數(shù)器T1的中斷服務(wù)程序入口
0023H單元——串行口的中斷服務(wù)程序入口
中斷服務(wù)程序和子程序一樣,在調(diào)用和返回時,也有一個保護斷點和現(xiàn)場的問題。
在中斷響應(yīng)過程中,斷點的保護主要由硬件電路自動實現(xiàn)。它將斷點壓人堆棧,再將中斷服務(wù)程序的入口地址送入程序計數(shù)器PC,使程序轉(zhuǎn)向中斷服務(wù)程序,即為中斷源的請求服務(wù)。5.4.2中斷服務(wù)程序中斷服務(wù)80
中斷時,現(xiàn)場保護由中斷服務(wù)程序來完成。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025重慶市安全員-A證考試題庫附答案
- 2025-2030年中國金屬鈷市場發(fā)展趨勢規(guī)劃研究報告
- 2025-2030年中國袋式除塵器行業(yè)運營趨勢規(guī)劃研究報告
- 2025-2030年中國芝麻素市場運行狀況與前景趨勢分析報告
- 2025-2030年中國翻譯行業(yè)競爭狀況及發(fā)展趨勢分析報告
- 2025-2030年中國砂巖行業(yè)市場運行態(tài)勢及發(fā)展風(fēng)險分析報告
- 2025-2030年中國電熱水龍頭市場運行現(xiàn)狀及發(fā)展前景預(yù)測報告
- 廣西民族大學(xué)《建筑設(shè)備自動化A》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東外語外貿(mào)大學(xué)《法律與人生》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024年電工(高級技師)職業(yè)鑒定理論考試題庫-下(多選、判斷題)
- 20S515 鋼筋混凝土及磚砌排水檢查井
- 《幼兒園保教質(zhì)量評估指南》解讀
- ICU單間耗材出入庫使用登記表
- 外研版(一年級起點)四年級下冊英語全冊教學(xué)課件
- 助貸機構(gòu)業(yè)務(wù)流程規(guī)范
- 2024四川省涼山州林業(yè)局招聘60人歷年(高頻重點復(fù)習(xí)提升訓(xùn)練)共500題附帶答案詳解
- DL∕T 5106-2017 跨越電力線路架線施工規(guī)程
- 西師大版數(shù)學(xué)四年級下冊全冊教學(xué)課件(2024年3月修訂)
- 綠化養(yǎng)護服務(wù)投標方案(技術(shù)標)
- 九年級物理第一課
評論
0/150
提交評論