51單片機(jī)的中斷系統(tǒng)_第1頁(yè)
51單片機(jī)的中斷系統(tǒng)_第2頁(yè)
51單片機(jī)的中斷系統(tǒng)_第3頁(yè)
51單片機(jī)的中斷系統(tǒng)_第4頁(yè)
51單片機(jī)的中斷系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、嵌入式單片機(jī)方向單片機(jī)C語(yǔ)言程序項(xiàng)目設(shè)計(jì) 本節(jié)為理論內(nèi)容,重點(diǎn)掌握單片機(jī)的中斷類型、控制方式以及應(yīng)用,單片機(jī)共有5個(gè)中斷源,兩級(jí)優(yōu)先級(jí)控制,在以后的項(xiàng)目實(shí)踐中,我們要用到定時(shí)器中斷、外部中斷和串行中斷。4.2 4.2 中斷系統(tǒng)的結(jié)構(gòu)中斷系統(tǒng)的結(jié)構(gòu) 51單片機(jī)中斷系統(tǒng)的結(jié)構(gòu)如圖4-1所示,5個(gè)中斷分別有5個(gè)中斷源,并提供兩個(gè)中斷優(yōu)先級(jí)控制,能夠?qū)崿F(xiàn)兩級(jí)中斷服務(wù)程序的嵌套。單片機(jī)的中斷系統(tǒng)是通過(guò)4個(gè)相關(guān)的特殊功能寄存器TCON、SCON、IE和IP來(lái)進(jìn)行管理的。因此用戶可以用軟件對(duì)每個(gè)中斷的開和關(guān)以及優(yōu)先級(jí)的控制。定時(shí)器控制寄存器TCON用于設(shè)定外部中斷的中斷。 串口控制寄存器SCON用于保存串行

2、口(SIO)的發(fā)送中斷標(biāo)志和接收中斷標(biāo)志。中斷控制寄存器IE用于設(shè)定各個(gè)中斷源的開放或關(guān)閉。各個(gè)中斷源的優(yōu)先級(jí)可以由中斷優(yōu)先級(jí)寄存器IP中的相應(yīng)位來(lái)確定,同一優(yōu)先級(jí)中的各中斷源同時(shí)請(qǐng)求中斷時(shí),由中斷系統(tǒng)的內(nèi)部查詢邏輯來(lái)確定響應(yīng)的順序。圖圖4-1 80514-1 8051單片機(jī)中斷系統(tǒng)的結(jié)構(gòu)單片機(jī)中斷系統(tǒng)的結(jié)構(gòu)一、中斷源一、中斷源 單片機(jī)5個(gè)中斷源都有自己的標(biāo)志位,包括外部中斷(P3.1)引腳接受的外部中斷請(qǐng)求;外部中斷(P3.2)引腳接受的外部中斷請(qǐng)求;定時(shí)器/計(jì)數(shù)器0(T0)溢出中斷請(qǐng)求;定時(shí)器/計(jì)數(shù)器1(T0)溢出中斷請(qǐng)求;串行口完成一幀數(shù)據(jù)發(fā)送或接收中斷請(qǐng)求源TI或RI。 其中INT0和

3、INT1一般稱為外部中斷,T0、T1和串行口(SIO 的TI和RI)則稱為內(nèi)部中斷。在有中斷請(qǐng)求時(shí),由相應(yīng)的中斷標(biāo)志位。保存其中斷請(qǐng)求信號(hào),分別存放在特殊功能寄存器TCON和SCON中增強(qiáng)型的51單片機(jī),則比51單片機(jī)多一個(gè)中斷源T2。二、中斷優(yōu)先級(jí)二、中斷優(yōu)先級(jí) 51單片機(jī)的中斷系統(tǒng)具有兩級(jí)優(yōu)先級(jí)控制,系統(tǒng)在處理時(shí)遵循下列基本原則: 1)低優(yōu)先級(jí)的中斷源可被高優(yōu)先級(jí)的中斷源中斷,號(hào)的有效形式及保存定時(shí)/計(jì)數(shù)器T0和T1的中斷請(qǐng)求標(biāo)志位。而高優(yōu)先級(jí)中斷源不能被低級(jí)的中斷源所中斷; 2)一種中斷源(無(wú)論是高優(yōu)先級(jí)或低優(yōu)先級(jí))一旦得到響應(yīng),就不會(huì)被同級(jí)的中斷源所中斷; 3)低優(yōu)先級(jí)的中斷源和高優(yōu)先

4、級(jí)的中斷源同時(shí)產(chǎn)生中斷請(qǐng)求時(shí),系統(tǒng)先響應(yīng)高優(yōu)先級(jí)的中斷請(qǐng)求,后響應(yīng)低優(yōu)先級(jí)的中斷請(qǐng)求; 中斷源入口地址 中斷級(jí)別 外部中斷0 0003H最高最低 T0溢出中斷 000BH外部中斷1 0013H T1溢出中斷 001BH 串行口中斷 0023H 4)多個(gè)同級(jí)的中斷源同時(shí)產(chǎn)生中斷請(qǐng)求時(shí),系統(tǒng)按照默認(rèn)的順序先后予以響應(yīng),5個(gè)中斷默認(rèn)優(yōu)先級(jí)見表4-1。三、中斷系統(tǒng)使用的多功能寄存器三、中斷系統(tǒng)使用的多功能寄存器 要使用8051單片機(jī)的中斷功能,必須掌握4個(gè)相關(guān)的特殊功能寄存器中特定位的意義及其使用方法。下面分別介紹4個(gè)特殊功能寄存器對(duì)中斷的具體管理方法。(1)TCON 定時(shí)器控制寄存器TCON是定時(shí)器

5、/計(jì)數(shù)器T0和T1的控制寄存器,也用來(lái)鎖存T0和T1的溢出中斷請(qǐng)求TCOND7D6D5D4D3D2D1D0位名稱TF1TR1TF0TR0IE1IT1IE0IT0TF0、TF1標(biāo)志及外部中斷請(qǐng)求源標(biāo)志IE0、IE1。TCON的字節(jié)地址88H,既支持字節(jié)操作,又支持位操作。位地址的范圍是 IT0,外部中斷0(INT0)觸發(fā)方式控制位,用于設(shè)定INT0中斷請(qǐng)求信號(hào)的有效方式。如果將IT0設(shè)定為1,則外部中斷0為邊沿(脈沖)觸發(fā)方式,CPU在每個(gè)機(jī)器周期的S5P2采樣INT0的輸入信號(hào)(即單片機(jī)的P3.2腳)。如果在一個(gè)機(jī)器周期中采樣到高電平,在下一個(gè)機(jī)器周期中采樣到低電平,則硬件自動(dòng)將IE0置為“1

6、”,向CPU請(qǐng)求中斷;如果IT0為0,則外部中斷0為電平觸發(fā)方式。此時(shí)系統(tǒng)如果檢測(cè)到INT0直至該中斷信號(hào)被檢測(cè)到。同時(shí)在中斷返回前必須變?yōu)殡娖剑駝t會(huì)再次產(chǎn)生中斷。概括地說(shuō),IT01時(shí)INT0的中斷請(qǐng)求信號(hào)是脈沖后沿(負(fù)脈沖)有效,P3.2從1變?yōu)?時(shí)系統(tǒng)認(rèn)為INT0有中斷請(qǐng)求;IT00時(shí),INT0的中斷請(qǐng)求信號(hào)是低電平有效,即P3.2保持為0時(shí)系統(tǒng)認(rèn)為INT0有中斷請(qǐng)求。 IE0IE0,外部中斷0的中斷請(qǐng)求標(biāo)志位。如果IT0置1,則當(dāng)P3.2上的電平由1變?yōu)?時(shí),由硬件置位IE0,向CPU申請(qǐng)中斷。如果CPU響應(yīng)該中斷,在轉(zhuǎn)向中斷服務(wù)時(shí),由硬件將IE0復(fù)位??梢?,IT0用于設(shè)定INT0中斷

7、請(qǐng)求的信號(hào)形式。設(shè)定了IT0后,如果INT0產(chǎn)生了有效的中斷請(qǐng)求信號(hào)(P3.2出現(xiàn)脈沖后沿或低電平),則由中斷系統(tǒng)的硬件電路自動(dòng)將IE0置位。單片機(jī)系統(tǒng)在工作過(guò)程的每一個(gè)機(jī)器周期的特定時(shí)刻(即S5P2),通過(guò)檢測(cè)INT0的中斷請(qǐng)求標(biāo)志位IE0是1還是0來(lái)確定INT0是否有中斷請(qǐng)求,而不是通過(guò)檢測(cè)P3.2上的中斷請(qǐng)求信號(hào)來(lái)確定INT0的中斷請(qǐng)求。端輸入低電平,則置位IE0。采用電平觸發(fā)時(shí),輸入到INT0端的外部中斷信號(hào)必須保持低電平, IT01時(shí)表示有中斷請(qǐng)求,IT00時(shí)則沒(méi)有中斷請(qǐng)求。下面INT1的情況類似,不再重復(fù)說(shuō)明。 IT1 IT1,外部中斷1(INT1)的觸發(fā)方式控制位。其意義和IT0

8、相同。 IE1IE1,外部中斷1的中斷請(qǐng)求標(biāo)志位。其意義和IE0相同。 TF0TF0,定時(shí)器/計(jì)數(shù)器T0的溢出中斷請(qǐng)求標(biāo)志位。當(dāng)T0開始計(jì)數(shù)后,從初值開始加1計(jì)數(shù),在計(jì)滿產(chǎn)生溢出時(shí),由硬件使置位TF0,向CPU請(qǐng)求中斷,CPU響應(yīng)中斷時(shí),硬件自動(dòng)將TF0清零。如果采用軟件查詢方式,則需要由軟件將TF0清零。因此,系統(tǒng)是通過(guò)檢查TF0的狀態(tài)來(lái)確定T0是否有中斷請(qǐng)求。TF01表示T0有中斷請(qǐng)求,TF00時(shí)則沒(méi)有。 TF1TF1,定時(shí)器/計(jì)數(shù)器T1的溢出中斷請(qǐng)求標(biāo)志位,其作用同TF0。 TR0TR0和TR1TR1分別是T0和T1的控制位,與中斷無(wú)關(guān)。將在定時(shí)器/計(jì)數(shù)器應(yīng)用內(nèi)容中介紹。(2)SCON

9、SCON為串行口控制寄存器,主要用于設(shè)置串行口的工作方式,同時(shí)也用于保存串行口的接收中斷和發(fā)送中斷標(biāo)志。字節(jié)地址是98H,既支持字節(jié)操作,又支持位操作。位地址的范圍是98H9FH。8位中只有最低的兩位與中斷有關(guān),其格式如下:SCON D7D6D5 D4 D3 D2 D1 D0位地址 9FH9EH9DH9CH9BH9AH99H98H位名稱 SM0SM1SM2RENTB8RB8TIRI RI RI,串行口的接收中斷標(biāo)志位。8051單片機(jī)的串行口共有4中工作方式。在串行口的方式0中,每當(dāng)接收到第8位數(shù)據(jù)時(shí),由硬件置位RI;在其他工作方式中,若SM20,在接收到停止位的中間時(shí)置位RI;若SM21,僅當(dāng)

10、接收到的第9位數(shù)據(jù)RB8為1時(shí),并且在接收到停止位的中間時(shí)置位RI,表示串行口已經(jīng)完成一幀數(shù)據(jù)的接收,向CPU申請(qǐng)中斷,準(zhǔn)備接收下一幀數(shù)據(jù)。但當(dāng)CPU轉(zhuǎn)到串行口的中斷服務(wù)程序時(shí),不復(fù)位RI,必須由設(shè)計(jì)者在程序中用指令來(lái)清零RI。簡(jiǎn)單地說(shuō),串行口在接收完一幀數(shù)據(jù)時(shí)自動(dòng)將RI置位,向CPU申請(qǐng)中斷。 TITI,串行口的發(fā)送中斷標(biāo)志位。在方式0中,每當(dāng)發(fā)送完8位數(shù)據(jù)時(shí)由硬件置位。在其他方式中,在發(fā)送到停止位開始時(shí)置位TI,表示串行口已經(jīng)完成一幀數(shù)據(jù)的發(fā)送,向CPU申請(qǐng)中斷,準(zhǔn)備發(fā)送下一幀數(shù)據(jù)。要發(fā)送的數(shù)據(jù)一旦寫入串行口的數(shù)據(jù)緩沖器SBUF,單片機(jī)的硬件電路就立即啟動(dòng)發(fā)送器進(jìn)行發(fā)送。CPU響應(yīng)中斷時(shí)并

11、不清零TI,同樣要在程序中用指令來(lái)清零。(3)中斷屏蔽寄存器IE 8051單片機(jī)的CPU對(duì)中斷源的開放或屏蔽(即閉),是由片內(nèi)的中斷允許寄存器IE(也稱為中斷控制寄存器或中斷屏蔽寄存器)控制的。IE的字節(jié)地址是A8H,既支持字節(jié)操作,又支持位操作。位地址的范圍是A8HAFH。8位中有6位與中斷有關(guān),剩下的兩位沒(méi)有定義。其格式如下: IED7D6D5D4D3D2D1D0位地址AFHAEHADHACHABHAAHA9HA8H位名稱EAESET1EX1ET9EX0 EA EA,CPU的中斷開放標(biāo)志。EA0時(shí),CPU屏蔽所有的中斷請(qǐng)求,此時(shí)即使有中斷請(qǐng)求,系統(tǒng)也不會(huì)去響應(yīng); EA 1時(shí),CPU開放中斷

12、,但每個(gè)中斷源的中斷請(qǐng)求是允許還是被禁止,還需由各自的控制位確定。 ESES,串行口的中斷控制位。ES1,允許串行口中斷;ES0,禁止串行口中斷。 ET1ET1:定時(shí)器/計(jì)數(shù)器1的溢出中斷控制位。ET11,T1的中斷開放,ET10,T1的中斷被關(guān)閉。EX1EX1,外部中斷1的中斷控制位。EX11,允許外部中斷1中斷;EX10,禁止外部中斷1的中斷。 ET0ET0,定時(shí)器/計(jì)數(shù)器T0的溢出中斷控制位。ET01時(shí)允許T0中斷;ET00,禁止T0中斷。 EX0EX0,外部中斷0的中斷控制位。EX01,允許外部中斷0的中斷;EX00,禁止外部0的中斷。 可見,EA0時(shí),所有的中斷都被屏蔽,此時(shí)IE低5

13、位的狀態(tài)沒(méi)有任何作用。EA1時(shí),可以通過(guò)對(duì)IE設(shè)置來(lái)開放或關(guān)閉相應(yīng)的中斷,在圖5-1中可以很直觀地看出來(lái)。單片機(jī)復(fù)位后,IE寄存器被清零,所有的中斷都被屏蔽。IE寄存器中各個(gè)位的狀態(tài)支持位尋址,用戶根據(jù)要求用指令SETB置位或CLR清零,而實(shí)現(xiàn)相應(yīng)的中斷源允許中斷或禁止中斷,當(dāng)然也可以采用字節(jié)操作來(lái)實(shí)現(xiàn)。例如,若要求開放外部中斷,關(guān)閉內(nèi)部中斷,則可以用兩條置位指令將EA、EX0和EX1置位,ES、ET1和ET0保持為系統(tǒng)復(fù)位后的默認(rèn)值0。如果使用字節(jié)操作方式,則一條MOV指令即能實(shí)現(xiàn),即MOV IE,#1xx00101B。其中的兩個(gè)x對(duì)應(yīng)的是無(wú)關(guān)位,可以任意為1或0。(4)中斷優(yōu)先級(jí)控制寄存器

14、 8051單片機(jī)的中斷系統(tǒng)有兩個(gè)中斷優(yōu)先級(jí)。對(duì)于每一個(gè)中斷請(qǐng)求源都可編程為高優(yōu)先級(jí)中斷或低優(yōu)先級(jí)中斷,實(shí)現(xiàn)兩級(jí)中斷嵌套。中斷優(yōu)先級(jí)是由片內(nèi)的中斷優(yōu)先級(jí)寄存器IP控制的。IP的字節(jié)地址是IPD7D6D5D4D3D2D1D0位地址BFHBEHBDHBCHBBHBAHB9HB8H位名稱PSPT1 PX1 PT0 PX0B8H,既支持字節(jié)操作,又支持位操作。位地址的范圍是B8HBFH。8位中有5位與中斷有關(guān),剩下的3位沒(méi)有定義。其格式如下 : PS PS,串行口的中斷優(yōu)先級(jí)控制位。PS1時(shí),串行口被定義為高優(yōu)先級(jí)中斷源;PS0時(shí),串行口被定義為低優(yōu)先級(jí)中斷源。 PT1PT1,定時(shí)器/計(jì)數(shù)器T1的中斷優(yōu)

15、先級(jí)控制位。PT11,T1被定義為高優(yōu)先級(jí)中斷源;PT10,T1被定義為低優(yōu)先級(jí)中斷源。 PX1PX1,外部中斷1(INT1)的優(yōu)先級(jí)控制位。PX1,外部中斷1被定義為高優(yōu)先級(jí)中斷源;PX00,外部中斷1被定義為低優(yōu)先級(jí)中斷源。 PT0 PT0,定時(shí)器/計(jì)數(shù)器T0的中斷優(yōu)先級(jí)控制位。其功能同PT1。 PX0PX0,外部中斷0(INT0)的優(yōu)先級(jí)控制位。其功能同PX1。 中斷優(yōu)先級(jí)控制寄存器IP的各位都由用戶置位或復(fù)位,可用位操作指令或字節(jié)操作指令更新IP的內(nèi)容,以改變各中斷源的中斷優(yōu)先級(jí),單片機(jī)復(fù)位后IP全為0,各個(gè)中斷源均為低優(yōu)先級(jí)中斷。 單片機(jī)的中斷的處理過(guò)程可分為中斷響應(yīng)、中斷處理和中斷

16、返回3個(gè)階段。下面介紹8051單片機(jī)的中斷處理過(guò)程。一、中斷的響應(yīng)條件 在每個(gè)機(jī)器周期的S5P2時(shí)刻,單片機(jī)依次采樣每一個(gè)中斷標(biāo)志位,而在下一個(gè)機(jī)器周期對(duì)采樣到的中斷進(jìn)行查詢。如果在前一個(gè)機(jī)器周期的S5P2有中斷標(biāo)志,則在查詢周期內(nèi)便會(huì)查詢到并按優(yōu)先級(jí)高低進(jìn)行中斷處理,中斷系統(tǒng)將控制程序轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。CPU響應(yīng)中斷應(yīng)具備的條件是:首先有中斷源發(fā)出中斷請(qǐng)求;然后CPU中斷允許位EA為“1”,即CPU開中斷,并且申請(qǐng)中斷的中斷源,其相應(yīng)的中斷允許位為“1”,即允許相應(yīng)的中斷源中斷。條件滿足時(shí),一般CPU會(huì)響應(yīng)中斷請(qǐng)求。 CPU響應(yīng)中斷時(shí),會(huì)根據(jù)中斷源的類別,在硬件的控制下,程序轉(zhuǎn)向相應(yīng)的

17、中斷服務(wù)程序入口單元,執(zhí)行中斷服務(wù)程序。二、中斷的響應(yīng)過(guò)程二、中斷的響應(yīng)過(guò)程51單片機(jī)的中斷系統(tǒng)中分為兩個(gè)中斷優(yōu)先級(jí)。每一中斷請(qǐng)求源均可通過(guò)對(duì)IP寄存器的編程為高優(yōu)先級(jí)中斷或低優(yōu)先級(jí)中斷,并可實(shí)現(xiàn)多級(jí)中斷嵌套。一個(gè)正在執(zhí)行的低優(yōu)先 應(yīng)新的中斷請(qǐng)求。為了實(shí)現(xiàn)上述功能, 51單片機(jī)的中斷系統(tǒng)中有兩個(gè)不可尋址的優(yōu)先級(jí)狀態(tài)觸發(fā)器。一個(gè)指出某高優(yōu)先級(jí)的中斷正在得到服務(wù),所有后來(lái)的中斷請(qǐng)求被阻級(jí)中斷服務(wù)程序能被高優(yōu)先級(jí)的中斷請(qǐng)求所中斷,但不能被另一個(gè)同級(jí)或低級(jí)的中斷源所中斷。因此,如果CPU正在執(zhí)行高優(yōu)先級(jí)的中斷服務(wù)程序,則不能被任何中斷源所中斷,必須等到當(dāng)前的中斷服務(wù)程序執(zhí)行結(jié)束,遇到返回指令(RETI

18、)返回主程序后,至少再執(zhí)行一條指令才能響應(yīng)新的中斷請(qǐng)求。為了實(shí)現(xiàn)上述功能, 51單片機(jī)的中斷系統(tǒng)中有兩個(gè)不可尋址的優(yōu)先級(jí)狀態(tài)觸發(fā)器。一個(gè)指出某高優(yōu)先級(jí)的中斷正在得到服務(wù),所有后來(lái)的中斷請(qǐng)求被阻斷;另一個(gè)觸發(fā)器指出某低優(yōu)先級(jí)的中斷正在得到服務(wù),所有同級(jí)的中斷請(qǐng)求都被阻斷,但不能阻斷高優(yōu)先級(jí)的中斷請(qǐng)求。 如果8051單片機(jī)滿足中斷響應(yīng)的條件,并且不存在中斷被屏蔽的情況,CPU就響應(yīng)相應(yīng)的中斷請(qǐng)求。在實(shí)際的響應(yīng)過(guò)程中,CPU首先置位被響應(yīng)中斷的優(yōu)先級(jí)狀態(tài)觸發(fā)器,以屏蔽(即關(guān)閉)同級(jí)和低級(jí)的中斷請(qǐng)求。然后,根據(jù)中斷源的類別,在硬件的控制下,內(nèi)部自動(dòng)執(zhí)行一條子程序調(diào)用指令,將程序轉(zhuǎn)移至相應(yīng)的中斷入口處,

19、開始執(zhí)行中斷服務(wù)程序。在轉(zhuǎn)入中斷服務(wù)程序時(shí),子程序調(diào)用指令自動(dòng)把斷點(diǎn)地址(即程序計(jì)數(shù)器PC的當(dāng)前值)壓入堆棧,但不會(huì)自動(dòng)保存狀態(tài)寄存器PSW等寄存器中的內(nèi)容。當(dāng)中斷的各項(xiàng)條件滿足要求時(shí),CPU響應(yīng)中斷,停止現(xiàn)行程序,轉(zhuǎn)向中斷服務(wù)程序。整個(gè)響應(yīng)過(guò)程中CPU應(yīng)完成工作有: 1)關(guān)中斷。CPU響應(yīng)中斷時(shí)便向外設(shè)發(fā)出中斷響應(yīng)信號(hào),同時(shí)自動(dòng)地關(guān)中斷,處理一個(gè)中斷過(guò)程中不致又接收另一新的中斷,以防止誤響應(yīng)。 2)保護(hù)斷點(diǎn)。為了保證CPU在執(zhí)行完中斷服務(wù)程序后,準(zhǔn)確地返回?cái)帱c(diǎn),CPU將斷點(diǎn)處的PC值推入堆棧保護(hù)。待中斷服務(wù)程序執(zhí)行完后,由返回指令RETI將其從堆棧中彈回PC,從而實(shí)現(xiàn)程序的返回。 3)執(zhí)行中

20、斷服務(wù)程序。找出中斷服務(wù)程序入口地址,轉(zhuǎn)入執(zhí)行中斷服務(wù)程序。在中斷服務(wù)程序中一般應(yīng)完成如下任務(wù): (1)保護(hù)現(xiàn)場(chǎng)。由于CPU響應(yīng)中斷是隨機(jī)的,而CPU中各寄存器的內(nèi)容和狀態(tài)標(biāo)志會(huì)因轉(zhuǎn)至中斷服務(wù)程序而受到破壞,所以要在中斷服務(wù)程序的開始,把斷點(diǎn)處有關(guān)的各個(gè)寄存器的內(nèi)容和狀態(tài)標(biāo)志,用堆棧操作指令PUSH推入堆棧保護(hù)。 (2)中斷服務(wù)。中斷源申請(qǐng)中斷時(shí)應(yīng)完成的任務(wù)。 (3)恢復(fù)現(xiàn)場(chǎng)。在中斷服務(wù)程序完成后,把保護(hù)在堆棧中的各寄存器內(nèi)容和狀態(tài)標(biāo)志,用POP指令彈回CPU。 (4)開中斷。上面已談到CPU在響應(yīng)中斷時(shí)自動(dòng)關(guān)中斷。為了使CPU能響應(yīng)新的中斷請(qǐng)求,在中斷服務(wù)程序末尾應(yīng)按排開中斷指令。 (5)返

21、回主程序。當(dāng)中斷服務(wù)程序執(zhí)行完畢返回主程序時(shí),必須將斷點(diǎn)地址彈回PC,因此在中斷服務(wù)程序的最后用一條RETI指令,使PC返回?cái)帱c(diǎn)。 因系統(tǒng)保留的各中斷入口地址間空間太小,所以,通常在中斷入口地址處安排一條相應(yīng)的跳轉(zhuǎn)指令,跳轉(zhuǎn)至用戶設(shè)計(jì)的中斷服務(wù)程序入口。三、中斷處理三、中斷處理 CPU響應(yīng)中斷請(qǐng)求后,即轉(zhuǎn)到中斷服務(wù)程序的入口,執(zhí)行中斷服務(wù)程序。從中斷服務(wù)程序的第一條指令開始到中斷返回指令為止,這個(gè)過(guò)程稱為中斷處理或中斷服務(wù)。不同的中斷源所需服務(wù)的要求及內(nèi)容各不相同,其處理過(guò)程也就有所區(qū)別,但在一般情況下,中斷處理應(yīng)包括兩部分內(nèi)容:一是保護(hù)現(xiàn)場(chǎng),二是為中斷源服務(wù)。 現(xiàn)場(chǎng)通常有程序狀態(tài)字PSW、工

22、作寄存器、累加器或其他的特殊功能寄存器等。如果在中斷服務(wù)程序中要用這些寄存器,則應(yīng)在進(jìn)入中斷服務(wù)之前用進(jìn)棧指令將它們的內(nèi)容壓入堆棧中保護(hù)起來(lái),這就叫做保護(hù)現(xiàn)場(chǎng)。同樣,在完成中斷服務(wù),中斷程序返回之前(執(zhí)行返回指令RETI之前),應(yīng)采用出棧指令恢復(fù)現(xiàn)場(chǎng)。 中斷服務(wù)是根據(jù)中斷源的具體要求所編寫的中斷服務(wù)程序的運(yùn)行和處理。用戶在編寫中斷服務(wù)程序時(shí)應(yīng),一般應(yīng)注意以下幾個(gè)方面: (1)8051單片機(jī)為各中斷源所保留的中斷入口地址,只相隔8個(gè)單元,如此小的空間通常是容納不下中斷服務(wù)程序的,因而常常在中斷入口地址單元處設(shè)置一條無(wú)條件轉(zhuǎn)移指令,使中斷服務(wù)能轉(zhuǎn)至中斷服務(wù)程序所存放的存儲(chǔ)器的任何位置。 (2)在運(yùn)

23、行當(dāng)前的中斷服務(wù)程序時(shí),如果想禁止更高優(yōu)先級(jí)的中斷源請(qǐng)求中斷,可以用指令復(fù)位IE中的相關(guān)控制位來(lái)屏蔽更高優(yōu)先級(jí)中斷源的中斷請(qǐng)求。在中斷服務(wù)程序執(zhí)行完返回之前,再用指令開放中斷。 (3)在中斷服務(wù)程序中保護(hù)、恢復(fù)現(xiàn)場(chǎng)時(shí),為避免現(xiàn)場(chǎng)信息受到破壞或造成混亂,一般情況下,應(yīng)先關(guān)閉CPU的中斷,使CPU暫不響應(yīng)新的中斷請(qǐng)求,以避免保護(hù)或恢復(fù)現(xiàn)場(chǎng)的過(guò)程受到干擾。這就要求在編寫中斷服務(wù)程序時(shí),應(yīng)注意在保護(hù)現(xiàn)場(chǎng)之前要關(guān)中斷。在保護(hù)現(xiàn)場(chǎng)之后,若允許高優(yōu)先級(jí)的中斷源申請(qǐng)中斷,則應(yīng)開中斷。同樣在恢現(xiàn)場(chǎng)之前應(yīng)關(guān)中斷,恢復(fù)之后再開中斷。四、中斷返回四、中斷返回 中斷服務(wù)程序的最后一條指令是中斷返回指令RETI。它的功能

24、是將斷點(diǎn)地址從堆棧中彈出,送回程序計(jì)數(shù)PC中,使程序能返回到原來(lái)被中斷的地方繼續(xù)執(zhí)行。 8051單片機(jī)的RETI指令除了彈出斷點(diǎn)之外,還通知中斷系統(tǒng)已完成中斷處理,并將優(yōu)先級(jí)狀態(tài)觸發(fā)器清除(復(fù)位),使系統(tǒng)能響應(yīng)新的中斷請(qǐng)求。五、中斷請(qǐng)求的撤消五、中斷請(qǐng)求的撤消 CPU完成中斷請(qǐng)求的處理以后,在中斷返回之前,應(yīng)將該中斷請(qǐng)求撤消,否則會(huì)引起第二次響應(yīng)中斷。在51單片機(jī)中,各個(gè)中斷源撤消中斷請(qǐng)求的方法各不相同。 (1)定時(shí)/計(jì)數(shù)器的溢出中斷:CPU響應(yīng)其中斷請(qǐng)求后,由硬件自動(dòng)清除相應(yīng)的中斷請(qǐng)求標(biāo)志位,使中斷請(qǐng)求自動(dòng)撤消,因此不用采取其他措施。 (2)外部中斷請(qǐng)求:中斷請(qǐng)求的撤消與觸發(fā)方式控制位的設(shè)置有關(guān)。采用邊沿觸發(fā)的外部中斷,CPU在響應(yīng)中斷后,由硬件自動(dòng)清除相應(yīng)的標(biāo)志位,使中斷請(qǐng)求自動(dòng)撤消;采用電平觸發(fā)的外部中斷源,應(yīng)采用電路和程序相結(jié)合的方式,撤消外部中斷源的中斷請(qǐng)求信號(hào)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論