




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第八章MCS-51單片機(jī)的中斷系統(tǒng)及應(yīng)用本章教學(xué)基本要求1.掌握MCS-51中斷系統(tǒng)的內(nèi)部結(jié)構(gòu),中斷響應(yīng)與處理過程,中斷系統(tǒng)中相應(yīng)寄存器的設(shè)置及中斷的控制方法。2.掌握MCS-51中斷服務(wù)程序匯編語言和C語言編程方法。重點與難點1.中斷服務(wù)子程序的結(jié)構(gòu)及編程技巧。2.中斷處理過程及中斷嵌套的概念及應(yīng)用。8.1MCS-51單片機(jī)中斷的概念與結(jié)構(gòu)一、中斷的概念所謂中斷是指中央處理器CPU正在處理某件事情的時候,外部發(fā)生了某一事件(如定時器計時已到),請求CPU迅速去處理,CPU暫停當(dāng)前的工作,轉(zhuǎn)去處理所發(fā)生的事件,處理完以后,再回到原來被中斷的地方,繼續(xù)原來的工作。實現(xiàn)這種功能的部件稱為中斷系統(tǒng)。從定義上可以看出,MCS-51單片機(jī)的中斷工作基本原理與8086中斷系統(tǒng)相同,但MCS-51單片機(jī)片內(nèi)中斷系統(tǒng)主要用于實時測控,其中斷源與8086有較大區(qū)別,為實時處理這些中斷請求,MCS-51采用具有中斷處理功能的部件即中斷系統(tǒng)來實現(xiàn)。MCS-51單片機(jī)中斷響應(yīng)過程與第五章講解的微計算機(jī)CPU中斷響應(yīng)過程相同,如第五章圖5-1所示。MCS-51單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)示意圖如圖8-1所示,它由4個與中斷有關(guān)的特殊功能寄存器(TCON、SCON),中斷允許控制寄存器IE和中斷順序查詢邏輯等組成。5個中斷源的中斷請求是否會得到響應(yīng),要受中斷允許寄存器IE各位的控制,它們的優(yōu)先級分別由IP各位來確定;同一優(yōu)先級內(nèi)的各中斷源同時發(fā)出中斷請求時,由內(nèi)部的硬件查詢邏輯來確定響應(yīng)次序;不同的中斷源有不同的中斷矢量。引起中斷的因素很多,將發(fā)出中斷申請的外設(shè)或內(nèi)部原因,稱為中斷源。MCS-51單片機(jī)的中斷源共有5個,根據(jù)中斷源的不同,可分為2個外部中斷源,3個內(nèi)部中斷源。具體說明如下:二、MCS-51中斷系統(tǒng)的結(jié)構(gòu)圖8-1MCS-51單片機(jī)中斷系統(tǒng)結(jié)構(gòu)(1)/INT0:外部中斷0,中斷請求信號由P3.2端口線引入,低電平或下跳沿引起。(2)/INT1外部中斷1,中斷請求信號由P3.3端口線引入,低電平或下跳沿引起。(3)T0:定時/計數(shù)器0溢出中斷,對外部脈沖計數(shù)由P3.4輸入,由T0計滿回零引起。(4)T1:定時/計數(shù)器1溢出中斷,對外部脈沖計數(shù)由P3.5輸入,由T1計滿回零引起。(5)串行中斷:包括串行接收中斷RI和串行發(fā)送中斷TI。MCS-51單片機(jī)會在每個機(jī)器周期的S5P2時對/INT0和/INT1線上中斷請求信號進(jìn)行一次檢測,檢測方式和中斷觸發(fā)方式的選取有關(guān)。若單片機(jī)設(shè)定為電平觸發(fā)方式,則檢測到INT0、/INT1上低電平時就可認(rèn)定其上中斷請求有效;若設(shè)定為邊沿觸發(fā)方式,則會在相繼的兩個周期兩次檢測/INT0和/INT1線上電平才能確定其上的中斷請求是否有效,即前一次檢測為高電平和后一次檢測為低電平時和上中斷請求才有效。由于外部中斷信號每個機(jī)器周期被采樣一次,有引腳/INT0或/INT1輸入的信號應(yīng)至少保持一個機(jī)器周期,即12個振蕩周期。如果外部為邊沿觸發(fā)方式,則引腳處輸入信號的高電平和低電平至少保持一個周期,才能確保CPU檢測到電平的跳變;而如果采用電平觸發(fā)方式,外部中斷源應(yīng)一直保持中斷請求有效,直至得到響應(yīng)為止。定時/計數(shù)器T0或T1在定時脈沖作用下從全“1”變?yōu)槿?”時,可以自動向單片機(jī)提出溢出中斷請求,以表明定時/計數(shù)器T0或T1的定時時間已到。定時/計數(shù)器T0或T1的定時時間可由用戶通過程序設(shè)定,以便單片機(jī)在定時/計數(shù)器溢出中斷服務(wù)程序內(nèi)進(jìn)行計時、計數(shù)。在串行口進(jìn)行發(fā)送/接收數(shù)據(jù)時,每當(dāng)串行口發(fā)送/接收完一組串行數(shù)據(jù)時,串行口電路自動使串行口控制寄存器SCON中的TI或RI中斷標(biāo)志位置位,并自動向單片機(jī)發(fā)出串行口中斷請求,單片機(jī)響應(yīng)串行口中斷后便立即轉(zhuǎn)向串行口中斷服務(wù)程序執(zhí)行。每個中斷源對應(yīng)一個中斷標(biāo)志位,當(dāng)某個中斷源有中斷請求時,相應(yīng)的中斷標(biāo)志位置1,各中斷源的中斷標(biāo)志位在TCON和SCON中,具體如表8-1和表8-2所示。TCOND7D6D5D4D3D2D1D0字節(jié)地址:88HTF1TR1TF0TR0IE1IT1IE0IT0表8-1寄存器TCON的位格式SCOND7D6D5D4D3D2D1D0字節(jié)地址:98HSM0SM1SM2RENTB8RB8TIRI表8-2寄存器SCON的位格式標(biāo)志位IE0=1時,表示外部中斷提出了中斷請求,如果IE0=0,則沒有中斷請求;標(biāo)志位IE1=1時,表示外部中斷提出了中斷請求;標(biāo)志位TF0=1時,表示定時器/計數(shù)器T0提出了中斷請求;標(biāo)志位TF1=1時,表示定時器/計數(shù)器T1提出了中斷請求。而對于串口中斷,其中斷標(biāo)志位在SCON寄存器中。TI為串行口發(fā)送中斷標(biāo)志位,當(dāng)CPU將一個發(fā)送數(shù)據(jù)寫入串行口發(fā)送緩沖器時,就啟動了發(fā)送過程。每發(fā)送完一個串行幀,由硬件置位TI,即TI=1。CPU響應(yīng)中斷時,不能自動清除TI,TI必須由軟件清除。RI為串行口接收中斷標(biāo)志位。當(dāng)允許串行口接收數(shù)據(jù)時,每接收完一個串行幀,由硬件置位RI,即RI=1,RI也必須由軟件清除。8.2.1MCS-51單片機(jī)的中斷控制在MCS-51系列單片機(jī)中,中斷可以通過對特殊寄存器的設(shè)置來選擇中斷方式,通過對特殊寄存器的設(shè)置來使用中斷資源,下面具體來說明MCS-51系列單片機(jī)中斷系統(tǒng)的控制。一、中斷配置MCS-51單片機(jī)中斷的管理與控制主要是對特殊寄存器配置,包括TCON、SCON、IE、IP四個特殊功能寄存器。8.2MCS-51單片機(jī)的中斷處理1.TCON寄存器的設(shè)置TCON為定時/計數(shù)器的控制寄存器,字節(jié)地址為88H,各個位含義見表8-1。寄存器TCON中IE0,IE1,TF0,TF1位是標(biāo)志位,用于指示某個中斷請求是否產(chǎn)生,而其它位用于控制相關(guān)中斷源,具體含義如下:(1)IT0(TCON.0):外部中斷0觸發(fā)方式控制位。當(dāng)IT0=0時,為電平觸發(fā)方式(低電平有效);當(dāng)IT0=1時,為邊沿觸發(fā)方式(下降沿有效)。(2)IT1(TCON.2):外部中斷1觸發(fā)方式控制位,其作用和IT0類似。(3)TR0(TCON.4):定時/計數(shù)器T0運行控制位。當(dāng)TR0=1,啟動定時/計數(shù)器T0;反之,停止定時/計數(shù)器T0。(4)TR1(TCON.6):定時/計數(shù)器T1運行控制位,其作用和TR0相同。2.中斷允許寄存器IE的設(shè)置CPU對中斷系統(tǒng)所有中斷以及某個中斷源的開放和屏蔽是由中斷允許寄存器IE控制的。IE可進(jìn)行位尋址。中斷允許寄存器IE對中斷的開放和關(guān)閉實現(xiàn)兩級控制。所謂兩級控制,就是有一個總的開關(guān)中斷控制位EA。當(dāng)EA=0時,所有的中斷請求被屏蔽,CPU對任何中斷請求都不接受;當(dāng)EA=1時,CPU開放中斷,但5個中斷源的中斷請求是否允許,還要由IE中的低5位所對應(yīng)的5個中斷請求允許控制位的狀態(tài)來決定。改變IE的內(nèi)容,可由位操作指令來實現(xiàn),也可用字節(jié)操作指令實現(xiàn),IE各個位具體含義如表8-3所示。IED7D6D5D4D3D2D1D0字節(jié)地址:0A8HEAESET1EX1ET0EX0表8-3中斷允許寄存器IE格式(1)EA(IE.7):CPU中斷允許(總允許)位。EA0=0,所有中斷關(guān)閉,EA=1,CPU打開中斷。(2)ES(IE.4):串行口中斷允許位。ES=1,允許串口中斷,否則關(guān)閉串口中斷。(3)ET1(IE.3):定時/計數(shù)器T1中斷允許位。ET1=1,允許T1中斷,否則關(guān)閉T1中斷。(4)EX1(IE.2):外部中斷1允許位。EX1=1,允許外部中斷1中斷,否則關(guān)閉外部中斷1。(5)ET0(IE.1):定時/計數(shù)器T0中斷允許位。其功能與ET1相同。(6)EX0(IE.0):外部中斷0允許位。其功能與EX1相同。3.優(yōu)先級寄存器IP的設(shè)置MCS-51單片機(jī)有兩個中斷優(yōu)先級,即可實現(xiàn)二級中斷服務(wù)嵌套。兩級優(yōu)先級遵循下述規(guī)則:僅高優(yōu)先級可中斷嵌套低優(yōu)先級。為實現(xiàn)這一規(guī)則,中斷系統(tǒng)內(nèi)部包含兩個不可尋址的優(yōu)先級狀態(tài)觸發(fā)器。當(dāng)特定優(yōu)先級的某中斷源被響應(yīng)時,相應(yīng)的觸發(fā)器即被置位,直到執(zhí)行了RETI指令后,這個觸發(fā)器才復(fù)位。每個中斷源的中斷優(yōu)先級都是由中斷優(yōu)先級寄存器IP中的相應(yīng)位的狀態(tài)來規(guī)定,其字節(jié)地址為0B8H,各位的具體含義如表8-4所示。IPD7D6D5D4D3D2D1D0字節(jié)地址:0B8HPSPT1PX1PT0PX0表8-4優(yōu)先級寄存器IP各位具體含義(1)PX0(IP.0):外部中斷0優(yōu)先級設(shè)定位;(2)PT0(IP.1):定時/計數(shù)器T0優(yōu)先級設(shè)定位;(3)PX1(IP.2):外部中斷1優(yōu)先級設(shè)定位;(4)PT1(IP.3):定時/計數(shù)器T1優(yōu)先級設(shè)定位;(5)PS(IP.4):串行口優(yōu)先級設(shè)定位;中斷優(yōu)先級控制寄存器IP的各位都由用戶程序置1或置0,可用位操作指令或字節(jié)操作指令更新IP的內(nèi)容,以改變各中斷源的中斷優(yōu)先級。單片機(jī)復(fù)位以后,IP的內(nèi)容為0,各中斷源均為低優(yōu)先級。同一優(yōu)先級中的中斷申請不止一個時,則有中斷優(yōu)先權(quán)排隊問題,一旦得到響應(yīng),不會再被它的統(tǒng)計中斷源所中斷。同一優(yōu)先級的中斷優(yōu)先權(quán)排隊,由中斷系統(tǒng)硬件確定的自然優(yōu)先級形成,排列順序如表8-5所示。中斷源中斷標(biāo)志中斷服務(wù)程序入口編號中斷級別外部中斷0IE00003H0
最高↓最低定時/計數(shù)器0TF0000BH1外部中斷1IE10013H2定時/計數(shù)器1TF1001BH3串行口RI或TI0023H4表8-5各中斷源響應(yīng)優(yōu)先級及中斷服務(wù)程序入口4.串行口中斷控制的設(shè)置串行口中斷控制通過設(shè)置寄存器SCON實現(xiàn),該寄存器字節(jié)地址為98H,可以進(jìn)行位尋址操作。寄存器SCON與串口中斷相關(guān)的位分別為TI(SCON.1)和RI(SCON.0),其它位具體含義將在第十章講解。TI(SCON.1):串行口發(fā)送中斷標(biāo)志位。當(dāng)CPU將一個發(fā)送數(shù)據(jù)寫入串行口發(fā)送緩沖器時,就啟動了發(fā)送過程。每發(fā)送完一個串行幀,由硬件置位TI。CPU響應(yīng)中斷時,不能自動清除TI,TI必須由軟件清除。RI(SCON.0):串行口接收中斷標(biāo)志位。當(dāng)允許串行口接收數(shù)據(jù)時,每接收完一個串行幀,由硬件置位RI。同樣,RI必須由軟件清除。對中斷的設(shè)置是在程序初始化時設(shè)置的,如果不包括優(yōu)先級控制,定時中斷初始化共有3項內(nèi)容:中斷總允許、定時/計數(shù)中斷允許和工作方式設(shè)定。而外部中斷和串行中斷則只有兩項內(nèi)容,即設(shè)置中斷允許總控制位和中斷允許控制位,沒有工作方式設(shè)定。假定要開放外部中斷0,使用字節(jié)操作指令為:MOVIE,#81H?!纠?】
若允許片內(nèi)2個定時器/計數(shù)器中斷,并禁止其他中斷源的中斷請求,請編寫設(shè)置IE的相應(yīng)程序段。(1)用位操作指令CLR ES ;禁止串行口中斷CLR EX0 ;禁止外部中斷0中斷CLR EX1 ;禁止外部中斷1中斷SETB ET0 ;允許定時器/計數(shù)器T0中斷SETB ET1 ;允許定時器/計數(shù)器T1中斷SETB EA ;總中斷開關(guān)位開放(2)用字節(jié)操作指令MOVIE,#8AH上述兩段程序?qū)E的設(shè)置是相同的?!纠?】IP寄存器初始化,AT89S51的兩個外中斷請求為高優(yōu)先級,其他中斷請求為低優(yōu)先級。(1)用位操作指令SETBPX0 ;外中斷0設(shè)置為高優(yōu)先級SETBPX1 ;外中斷1設(shè)置為高優(yōu)先級CLRPS ;串行口設(shè)置為低優(yōu)先級CLRPT0 ;定時器/計數(shù)器T0為低優(yōu)先級CLRPT1 ;定時器/計數(shù)器T1為低優(yōu)先級
(2)用字節(jié)操作指令MOVIP,#05H【例3】
假設(shè)允許外部中斷0中斷,設(shè)定為高級中斷,采用跳沿觸發(fā)方式,其他中斷源為低級中斷。初始化程序如下:SETBEA;EA位置1,總中斷開關(guān)位開放SETBET0;ET0位置1,允許外部中斷0產(chǎn)生中斷SETBPX0;PX0位置1,外部中斷0為高優(yōu)先級中斷SETBIT0;IT0位置1,外部中斷0為跳沿觸發(fā)方式二、中斷處理過程MCS-51單片機(jī)中斷處理過程與8086相同,也分為三個階段:即中斷響應(yīng),中斷處理和中斷返回。在滿足響應(yīng)條件的情況下,CPU首先置位優(yōu)先級狀態(tài)觸發(fā)器,以阻止同級和低級的中斷請求,接著將當(dāng)前程序計數(shù)器PC的內(nèi)容壓入堆棧保護(hù)起來,然后將對應(yīng)的中斷入口地址裝入程序計數(shù)器PC,使程序轉(zhuǎn)移到該中斷入口地址單元,去執(zhí)行中斷服務(wù)程序。單片機(jī)響應(yīng)中斷結(jié)束后即轉(zhuǎn)至中斷服務(wù)程序的入口。從中斷服務(wù)程序的第一條指令開始到返回指令為止,這個過程稱為中斷處理或稱中斷服務(wù)。一般情況下,中斷處理包括保護(hù)現(xiàn)場和為中斷源服務(wù)兩部分內(nèi)容?,F(xiàn)場通常有PSW、工作寄存器、專用寄存器、累加器等。如果在中斷服務(wù)程序中要用這些寄存器,則在進(jìn)入中斷服務(wù)之前應(yīng)將它們的內(nèi)容保護(hù)起來,稱為保護(hù)現(xiàn)場,同時在中斷結(jié)束,執(zhí)行RETI指令之前應(yīng)恢復(fù)現(xiàn)場。中斷處理是針對中斷源的具體要求進(jìn)行處理。中斷處理流程如圖8-2所示,其中圖8-2(a)為CPU響應(yīng)前中斷硬件操作流程,8-2(b)為中斷服務(wù)程序的響應(yīng)過程。圖8-2MCS-51單片機(jī)中斷處理流程圖RETI指令的執(zhí)行標(biāo)志著中斷服務(wù)程序的終結(jié),也就是中斷返回的開始,所以該指令自動將斷點地址從棧頂彈出,裝入程序計數(shù)器PC中,使程序轉(zhuǎn)向斷點處,繼續(xù)執(zhí)行原來被中斷的程序??紤]到某些中斷的重要性,需要禁止更高級別的中斷,可用軟件使CPU關(guān)閉中斷,或者禁止高級別中斷源的中斷。但在中斷返回前必須用軟件開放中斷。在中斷返回(RETI)之前,該中斷請求應(yīng)該清除,否則會引起下一次中斷。MCS-51各中斷源請求撤銷的方法各不相同。分別為:(1)定時器0和定時器1的溢出中斷,CPU在響應(yīng)中斷后,由硬件自動清除TF0或TF1標(biāo)志位。即中斷請求自動撤銷,無需采取其他措施。(2)外部中斷請求的撤銷與設(shè)置的中斷觸發(fā)方式有關(guān)。對于邊沿觸發(fā)方式的外部中斷,CPU在響應(yīng)中斷后,由于中斷請求信號是脈沖信號,過后就消失,也可以說中斷請求信號是自動撤銷的,也是由硬件自動將IE0或IE1標(biāo)志位清除的。也無需采取其他措施。對于電平觸發(fā)方式的外部中斷,在硬件上,CPU對和引腳的信號完全沒有控制。(在專用寄存器中,沒有相應(yīng)的中斷請求標(biāo)志),也不像某些微處理器那樣,能在響應(yīng)中斷后會自動發(fā)出一個響應(yīng)信號。因此在MCS-51的系統(tǒng)中,要另外采取撤銷中斷請求的措施。注意:外部中斷的響應(yīng)時間使用外部中斷時,需考慮從外部中斷請求到轉(zhuǎn)向中斷入口地址所需的時間。外部中斷的最短響應(yīng)時間為3個機(jī)器周期。其中中斷請求標(biāo)志位查詢占1個機(jī)器周期,而這個機(jī)器周期恰好處于指令的最后一個機(jī)器周期。在這個機(jī)器周期結(jié)束后,中斷即被響應(yīng),CPU接著執(zhí)行一條硬件子程序調(diào)用指令LCALL到相中斷服務(wù)程序入口,需要2個機(jī)器周期。外部中斷響應(yīng)的最長時間為8個機(jī)器周期。在CPU進(jìn)行中斷標(biāo)志查詢時,剛好才開始執(zhí)行RETI或訪問IE或IP的指令,需執(zhí)行完指令再繼續(xù)執(zhí)行一條指令后,才響應(yīng)中斷。執(zhí)行RETI或訪問IE或IP的指令,最長需要2個機(jī)器周期。接著再執(zhí)行一條指令,最長指令(乘法指令MUL和除法指令DIV)來算,也只有4個機(jī)器周期。再加上硬件子程序調(diào)用指令LCALL的執(zhí)行,需要2個機(jī)器周期,所以,外部中斷響應(yīng)的最長時間為8個機(jī)器周期。如果已經(jīng)在處理同級或更高級中斷,外部中斷請求的響應(yīng)時間取決于正在執(zhí)行的中斷服務(wù)程序的處理時間,這種情況下,響應(yīng)時間就無法計算了。這樣,在一個單一中斷的系統(tǒng)里,AT89S51單片機(jī)對外部中斷請求的響應(yīng)時間總是在3~8個機(jī)器周期之間。(3)串行口的中斷,CPU響應(yīng)后,硬件不能自動清楚TI和RI標(biāo)志位,因此在CPU響應(yīng)中斷后,還需測試這兩個標(biāo)志位的狀態(tài),以判定是接收還是發(fā)送,然后才能清除。所以串行中斷請求的撤銷應(yīng)使用軟件方法,在中斷服務(wù)程序中進(jìn)行。MCS-51單片機(jī)外部中斷有兩種觸發(fā)方式,即電平觸發(fā)方式和跳沿觸發(fā)方式。在使用外部中斷時,合理配置觸發(fā)方式,對檢測和控制準(zhǔn)確性至關(guān)重要。一、電平觸發(fā)方式當(dāng)外部中斷被配置為電平觸發(fā)方式后(置IT0/IT1=0),外部中斷申請觸發(fā)器的狀態(tài)隨著CPU在每個機(jī)器周期采樣到的外部中斷輸入線的電平變化而變化,這能提高CPU對外部中斷請求的響應(yīng)速度。當(dāng)外部中斷源被設(shè)定為電平觸發(fā)方式時,需要從電路上確保在當(dāng)前中斷服務(wù)程序退出前能夠清除本次中斷請求信號,否則CPU返回主程序后會再次響應(yīng)中斷該信號產(chǎn)生的中斷請求。所以電平觸發(fā)方式適合于外部中斷以低電平輸入且中斷服務(wù)程序能清除外部中斷請求源(即外部中斷輸入電平又變?yōu)楦唠娖剑┑那闆r,如Maxim公司的ADC0820芯片,該AD轉(zhuǎn)換芯片在模擬量轉(zhuǎn)換完畢后向CPU提出中斷請求,當(dāng)CPU發(fā)出讀取數(shù)據(jù)命令后,AD轉(zhuǎn)換芯片自動將其中斷請求信號切換為高電平。8.2.2MCS-51單片機(jī)外部中斷的觸發(fā)方式二、跳沿觸發(fā)方式跳沿觸發(fā)方式又稱邊沿觸發(fā)方式。當(dāng)外部中斷被配置為跳沿觸發(fā)方式后,外部中斷申請觸發(fā)器能鎖存外部中斷輸入線上的負(fù)跳變(高電平到低電平)。即便是CPU暫時不能響應(yīng),中斷請求標(biāo)志也不會丟失。在跳沿觸發(fā)方式下,CPU連續(xù)采樣外部中斷請求信號線上的電平,如果一個機(jī)器周期采樣到外部中斷輸入為高,下一個機(jī)器周期采樣為低,則中斷申請觸發(fā)器置“1”,直到CPU響應(yīng)此中斷時,該標(biāo)志才清“0”。這樣不會丟失中斷,但輸入的負(fù)脈沖寬度至少保持12個時鐘周期,才能被CPU采樣到。外部中斷的跳沿觸發(fā)方式適合于以負(fù)脈沖(下降沿)形式輸入的外部中斷請求。MCS-51單片機(jī)多數(shù)只有2個外部中斷源,而在實際應(yīng)用系統(tǒng)中可能有兩個以上的外部中斷源,這時必須對外部中斷源進(jìn)行擴(kuò)展。擴(kuò)展外部中斷源的常用方法有:定時/計數(shù)器擴(kuò)展法,中斷、查詢相結(jié)合擴(kuò)展法和硬件電路擴(kuò)展法,下面介紹中斷、查詢相結(jié)合的方法。當(dāng)系統(tǒng)有多個外部中斷源時,首先確定中斷優(yōu)先級,將最高優(yōu)先級別的中斷源接在/INT0引腳,其余的中斷源通過電路接到/INT1端,同時分別將它們引向一個I/O接口,以便在/INT1的中斷服務(wù)程序中由軟件按預(yù)先設(shè)定的優(yōu)先級順序查詢中斷的來源。例如有5個外部中斷源,高電平時向CPU申請中斷,中斷優(yōu)先級排隊順序為:XIRQ0、XIRQ1、XIRQ2、XIRQ3、XIR4,它們與單片機(jī)的接口如圖8-3所示。圖8-3MCS-51單片機(jī)中斷優(yōu)先級接口電路圖將中斷優(yōu)先級最高的XIRQ0直接接到/INT0引腳,其余的XIRQ1~XIRQ4經(jīng)集電極開路與門(74LS21)電路接到/INT1引腳并分別與P1.0~P1.3相連。當(dāng)XIRQ1~XIRQ4中有一個或幾個有效(為低電平)時,都會通過/INT0引腳向單片機(jī)發(fā)出中斷請求。在/INT1的中斷服務(wù)程序中依次查詢P1.0~P1.3,就可以確定具體是哪個中斷源提出中斷請求,并根據(jù)事先確定的優(yōu)先級順序查詢P1.0~P1.3的電平狀態(tài)。當(dāng)采用圖8-3所示的電路時,必須確保外設(shè)在產(chǎn)生中斷請求信號時為低電平,如果為高電平,需先進(jìn)行邏輯電平反向處理;此外,當(dāng)處理器響應(yīng)中斷后,該中斷請求信號能切換到高電平狀態(tài)。MCS-51單片機(jī)的中斷程序處理需要進(jìn)行以下操作:設(shè)置中斷允許控制寄存器IE;設(shè)置中斷優(yōu)先級寄存器IP;若是外部中斷源,還要設(shè)置中斷請求的觸發(fā)方式IT1或IT0,以決定采用電平觸發(fā)方式還是跳沿觸發(fā)方式;編寫中斷服務(wù)子程序,處理中斷請求。前三條是對中斷進(jìn)行設(shè)置,即中斷初始化操作,一般放在主程序的初始化程序段中。8.2.3MCS-51單片機(jī)中斷服務(wù)程序的設(shè)計由于各中斷入口地址是固定的,而程序又必須先從主程序起始地址0000H執(zhí)行。所以,在0000H起始地址的幾個字節(jié)中,要用無條件轉(zhuǎn)移指令,跳轉(zhuǎn)到主程序。另外,MCS-51單片機(jī)各中斷入口地址之間依次相差8Bytes,中斷服務(wù)子程序稍長就超過8Bytes,這樣中斷服務(wù)子程序就占用了其他的中斷入口地址,影響其他中斷源的中斷。為此,一般在進(jìn)入中斷后,利用一條無條件轉(zhuǎn)移指令,把中斷服務(wù)子程序跳轉(zhuǎn)到遠(yuǎn)離其他中斷入口的地址處。例如外部中斷0在程序結(jié)構(gòu)上通常采用如下形式:在以上的主程序結(jié)構(gòu)中,如果有多個中斷源,就對應(yīng)有多個“ORGXXXXH”的中斷入口地址,多個“中斷入口地址”必須依次由小到大排列。為了使中斷服務(wù)程序執(zhí)行時不破壞其它內(nèi)存塊或寄存器的數(shù)據(jù),在進(jìn)入中斷服務(wù)程序時應(yīng)當(dāng)立即執(zhí)行數(shù)據(jù)保護(hù)操作,即現(xiàn)場保護(hù),把需要保護(hù)的數(shù)據(jù)壓入堆棧中;中斷處理結(jié)束后,在返回主程序前,再把保護(hù)的數(shù)據(jù)從堆棧中彈出,以恢復(fù)那些寄存器和存儲器單元中的原有數(shù)據(jù),這就是現(xiàn)場恢復(fù)?,F(xiàn)場恢復(fù)一定要位于中斷處理程序的后面。MCS-51單片機(jī)的堆棧操作指令“PUSHDirect”和“POPDirect”,這里的Direct可以是直接地址,也可以是寄存器。至于要保護(hù)哪些內(nèi)容,需要根據(jù)中斷處理程序的具體情況來決定。根據(jù)圖8-2(b)中斷服務(wù)程序流程,典型的匯編中斷服務(wù)程序如下:其中,“IRQx”代表具體哪個中斷服務(wù)程序,其書寫格式與“ORGIRQx”中的“IRQx”要完全一致。在該例中,現(xiàn)場保護(hù)只有寄存器PSW和A的內(nèi)容,如果還有其他的需要保護(hù)的內(nèi)容,只需要在相應(yīng)的位置再加幾條PUSH和POP指令即可。需要注意的是對堆棧的操作是先進(jìn)后出,次序不可顛倒。采用匯編語言編寫的中斷服務(wù)子程序的最后一條指令必須是返回指令RETI,CPU執(zhí)行完這條指令后,返回斷點處,重新執(zhí)行被中斷的主程序。使用C語言進(jìn)行MCS-51中斷操作時,其程序書寫簡化了很多,主要是堆棧操作這些代碼不會直接出現(xiàn)在C代碼中,而中斷初始化可以直接對寄存器或控制位賦值即可,如外部中斷1的初始化函數(shù)Init_EIrq1()可以如下書寫:voidInit_EIRQ1(){EA=0; //關(guān)總中斷IT1=1; //設(shè)置外部中斷1為邊沿觸發(fā)方式EX1=1; //外部中斷1允許EA=1;//開總中斷}而C語言實行MCS-51單片機(jī)中斷服務(wù)程序時,使用interrupt關(guān)鍵字來標(biāo)識,具體格式如下:ISR_NameinterruptNo[usingBank]確定其標(biāo)號“No”后會自動生成中斷向量,向量計算公式為(8*No+3),這和匯編代碼中“ORGxxxxH”指出的絕對地址是相同的?!皍sing”告訴編譯器在進(jìn)入中斷處理服務(wù)程序后切換寄存器到哪個工作區(qū)(Bank),MCS-51單片機(jī)寄存器組只能在第0~3區(qū)。usingBank是可選的,如果不需要using的話,編譯器會自動選擇一組寄存器作為絕對寄存器訪問的。下面是采用C語言實現(xiàn)外部中斷1服務(wù)程序段。voidEIRQ1(void)interrupt2{EX1=0;//關(guān)外部中斷1LED=~LED;//來一個外部中斷信號light狀態(tài)改變一次EX1=1; //開外部中斷1}中斷系統(tǒng)是為CPU對外部事件做出快速反應(yīng)和處理而設(shè)置的,中斷程序設(shè)計的優(yōu)劣將影響到CPU能否快速及時的相應(yīng)中斷源。在使用單片機(jī)中斷系統(tǒng)資源的時候,按中斷源的要求,根據(jù)中斷處理所要完成的任務(wù)來編寫程序。本小節(jié)通過實例來介紹MCS-51單片機(jī)中斷使用的軟件編寫方法。8.3MCS-51單片機(jī)中斷處理實例一、單外部中斷設(shè)計將按鍵信號作為單片機(jī)外部中斷觸發(fā)信號。每產(chǎn)生一個外部中斷就將與LED燈相連的P1.0口電平取反,從而實現(xiàn)LED燈閃爍。電路圖如圖8-4所示。在圖8-4中,當(dāng)鍵被按下后,與電源地連通,INT0管腳為低電平,而當(dāng)按鍵松開后INT0管腳被上拉為高電平。由于手動按鍵存在機(jī)械抖動,且按鍵會持續(xù)一段時間(約50~100ms),為避免一次按鍵產(chǎn)生多次外部中斷,需要在每次中斷后進(jìn)行一定延時處理,確保本次按鍵已經(jīng)釋放。C程序參考程序如下:#include<reg51.h>sbitLED=P1^0;voidmain(void){ P3=0xff;//端口初始化,為外部中斷信號輸入作準(zhǔn)備。
EA=1; //開總中斷
IT0=0; //設(shè)置外部中斷0為電平觸發(fā)方式
EX0=1; //外部中斷0允許
LED=0; //LED初始狀態(tài)為點亮
while(1);//等待中斷 }//外部中斷0服務(wù)程序voidEIRQ0(void)interrupt0{ unsignedintiDelay=0;EX0=0; //關(guān)外部中斷1 LED=~LED;//來一
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國非開挖工程行業(yè)需求狀況規(guī)劃研究報告
- 2025-2030年中國超級電容器行業(yè)運行態(tài)勢及發(fā)展趨勢預(yù)測報告
- 2025-2030年中國茶堿緩釋片市場發(fā)展?fàn)顩r及營銷戰(zhàn)略研究報告
- 2025-2030年中國纖維素醚市場十三五規(guī)劃及發(fā)展建議分析報告
- 云南輕紡職業(yè)學(xué)院《商務(wù)談判與銷售管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 廊坊師范學(xué)院《數(shù)字邏輯與數(shù)字系統(tǒng)A》2023-2024學(xué)年第二學(xué)期期末試卷
- 海南衛(wèi)生健康職業(yè)學(xué)院《圖案原理》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年陜西省安全員B證(項目經(jīng)理)考試題庫
- 大連財經(jīng)學(xué)院《微機(jī)原理及接口技術(shù)B》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖北財稅職業(yè)學(xué)院《生物醫(yī)學(xué)檢驗儀器》2023-2024學(xué)年第二學(xué)期期末試卷
- 真需求-打開商業(yè)世界的萬能鑰匙
- 《礦山隱蔽致災(zāi)因素普查規(guī)范》解讀培訓(xùn)
- 第1課 立足時代 志存高遠(yuǎn) (課件+視頻)- 【中職專用】高一思想政治《心理健康與職業(yè)生涯》(高教版2023·基礎(chǔ)模塊)
- 房產(chǎn)1%份額買賣合同范本
- 三、QHLY系列——露頂式弧形門閘門液壓啟閉機(jī)
- 工商企業(yè)管理專業(yè)??飘厴I(yè)論文
- 皮帶機(jī)提升機(jī)鏈運機(jī)功率計算
- 法恩莎衛(wèi)浴潔具價格表
- 干部職工《出國境管理辦法》政策解讀及工作要求PPT課件
- 泄露檢測負(fù)壓波檢漏
- MATLAB程序設(shè)計與應(yīng)用第三版劉衛(wèi)國PPT課件
評論
0/150
提交評論