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

下載本文檔

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

文檔簡(jiǎn)介

1、項(xiàng)目4 單片機(jī)的中斷系統(tǒng),嵌入式單片機(jī)方向單片機(jī)C語(yǔ)言程序項(xiàng)目設(shè)計(jì),4.1 任務(wù)說(shuō)明,本節(jié)為理論內(nèi)容,重點(diǎn)掌握單片機(jī)的中斷類(lèi)型、控制方 式以及應(yīng)用,單片機(jī)共有5個(gè)中斷源,兩級(jí)優(yōu)先級(jí)控制,在 以后的項(xiàng)目實(shí)踐中,我們要用到定時(shí)器中斷、外部中斷和串 行中斷。,4.2 中斷系統(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)行管理的。因此用戶(hù)可以用軟件對(duì)每個(gè)中斷的開(kāi)和關(guān)以及優(yōu)先級(jí)的控制。定時(shí)器控制寄存器TCON用于設(shè)定外部中斷的中斷。,串口

2、控制寄存器SCON用于保存串行口(SIO)的發(fā)送 中斷標(biāo)志和接收中斷標(biāo)志。中斷控制寄存器IE用于設(shè)定各 個(gè)中斷源的開(kāi)放或關(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)部查詢(xún)邏輯來(lái)確定 響應(yīng)的順序。,圖4-1 8051單片機(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和IN

3、T1一般稱(chēng)為外部中斷,T0、T1和串行口(SIO 的TI和RI)則稱(chēng)為內(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í) 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)先級(jí)的中斷

4、源同時(shí)產(chǎn)生中斷請(qǐng)求時(shí),系統(tǒng)先響應(yīng)高優(yōu)先級(jí)的中斷請(qǐng)求,后響應(yīng)低優(yōu)先級(jí)的中斷請(qǐng)求;,表4-1 中斷入口地址及優(yōu)先級(jí)排列表,4)多個(gè)同級(jí)的中斷源同時(shí)產(chǎn)生中斷請(qǐng)求時(shí),系統(tǒng)按照默 認(rèn)的順序先后予以響應(yīng),5個(gè)中斷默認(rèn)優(yōu)先級(jí)見(jiàn)表4-1。,三、中斷系統(tǒng)使用的多功能寄存器 要使用8051單片機(jī)的中斷功能,必須掌握4個(gè)相關(guān)的特殊功能寄存器中特定位的意義及其使用方法。下面分別介紹4個(gè)特殊功能寄存器對(duì)中斷的具體管理方法。 (1)TCON 定時(shí)器控制寄存器TCON是定時(shí)器/計(jì)數(shù)器T0和T1的控制寄存器,也用來(lái)鎖存T0和T1的溢出中斷請(qǐng)求,TF0、TF1標(biāo)志及外部中斷請(qǐng)求源標(biāo)志IE0、IE1。TCON的 字節(jié)地址88H,

5、既支持字節(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”,向CPU請(qǐng)求中斷;如果IT0為0,則外部中斷0為電平觸發(fā)方式。此時(shí)系統(tǒng)如果檢測(cè)到INT0,直至該中斷信號(hào)被檢測(cè)到。同時(shí)在中斷返回前必須變?yōu)殡?平,否則會(huì)再次產(chǎn)生中斷。概括地說(shuō),IT01時(shí)INT0的中 斷請(qǐng)求信號(hào)是脈沖后沿(負(fù)脈沖)有效

6、,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)求。 IE0,外部中斷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ù)位??梢?jiàn),IT0用于設(shè)定INT0中斷請(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è)INT

7、0的中斷請(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的情況 類(lèi)似,不再重復(fù)說(shuō)明。,IT1,外部中斷1(INT1)的觸發(fā)方式控制位。其意義和IT0相同。 IE1,外部中斷1的中斷請(qǐng)求標(biāo)志位。其意義和IE0相同。 TF0,定時(shí)器/計(jì)數(shù)器T0的溢出中斷請(qǐng)求標(biāo)志位。當(dāng)T0開(kāi)始計(jì)數(shù)后,從初值開(kāi)始加1計(jì)數(shù),在計(jì)滿(mǎn)產(chǎn)生溢出時(shí),由硬件使置位TF0,向CPU請(qǐng)求中斷,CPU

8、響應(yīng)中斷時(shí),硬件自動(dòng)將TF0清零。如果采用軟件查詢(xún)方式,則需要由軟,件將TF0清零。因此,系統(tǒng)是通過(guò)檢查T(mén)F0的狀態(tài)來(lái)確定T0 是否有中斷請(qǐng)求。TF01表示T0有中斷請(qǐng)求,TF00時(shí)則 沒(méi)有。 TF1,定時(shí)器/計(jì)數(shù)器T1的溢出中斷請(qǐng)求標(biāo)志位,其作 用同TF0。 TR0和TR1分別是T0和T1的控制位,與中斷無(wú)關(guān)。將 在定時(shí)器/計(jì)數(shù)器應(yīng)用內(nèi)容中介紹。,(2)SCON SCON為串行口控制寄存器,主要用于設(shè)置串行口的工作方式,同時(shí)也用于保存串行口的接收中斷和發(fā)送中斷標(biāo)志。字節(jié)地址是98H,既支持字節(jié)操作,又支持位操作。位地址的范圍是98H9FH。8位中只有最低的兩位與中斷有關(guān),其格式如下:,RI,

9、串行口的接收中斷標(biāo)志位。8051單片機(jī)的串行口共有4中工作方式。在串行口的方式0中,每當(dāng)接收到第8位數(shù)據(jù)時(shí),由硬件置位RI;在其他工作方式中,若SM20,在接收到停止位的中間時(shí)置位RI;若SM21,僅當(dāng)接收到的第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)中斷。 TI,串行口的發(fā)送中斷標(biāo)志位。在方式0中,每當(dāng)發(fā) 送完8位數(shù)據(jù)時(shí)由硬件置位。在其他方式中,在

10、發(fā)送到停 止位開(kāi)始時(shí)置位TI,表示串行口已經(jīng)完成一幀數(shù)據(jù)的發(fā) 送,向CPU申請(qǐng)中斷,準(zhǔn)備發(fā)送下一幀數(shù)據(jù)。要發(fā)送的數(shù) 據(jù)一旦寫(xiě)入串行口的數(shù)據(jù)緩沖器SBUF,單片機(jī)的硬件電 路就立即啟動(dòng)發(fā)送器進(jìn)行發(fā)送。CPU響應(yīng)中斷時(shí)并不清零 TI,同樣要在程序中用指令來(lái)清零。,(3)中斷屏蔽寄存器IE 8051單片機(jī)的CPU對(duì)中斷源的開(kāi)放或屏蔽(即閉),是由片內(nèi)的中斷允許寄存器IE(也稱(chēng)為中斷控制寄存器或中斷屏蔽寄存器)控制的。IE的字節(jié)地址是A8H,既支持字節(jié)操作,又支持位操作。位地址的范圍是A8HAFH。8位中有6位與中斷有關(guān),剩下的兩位沒(méi)有定義。其格式如下:,EA,CPU的中斷開(kāi)放標(biāo)志。EA0時(shí),CPU屏

11、蔽所 有的中斷請(qǐng)求,此時(shí)即使有中斷請(qǐng)求,系統(tǒng)也不會(huì)去響 應(yīng); EA 1時(shí),CPU開(kāi)放中斷,但每個(gè)中斷源的中斷請(qǐng) 求是允許還是被禁止,還需由各自的控制位確定。 ES,串行口的中斷控制位。ES1,允許串行口中 斷;ES0,禁止串行口中斷。 ET1:定時(shí)器/計(jì)數(shù)器1的溢出中斷控制位。ET11, T1的中斷開(kāi)放,ET10,T1的中斷被關(guān)閉。,EX1,外部中斷1的中斷控制位。EX11,允許外部中斷1中斷;EX10,禁止外部中斷1的中斷。 ET0,定時(shí)器/計(jì)數(shù)器T0的溢出中斷控制位。ET01時(shí)允許T0中斷;ET00,禁止T0中斷。 EX0,外部中斷0的中斷控制位。EX01,允許外部中斷0的中斷;EX00,

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

13、00101B。其中的兩個(gè)x對(duì)應(yīng)的是無(wú)關(guān)位,可以任意為1或0。 (4)中斷優(yōu)先級(jí)控制寄存器 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é)地址是,B8H,既支持字節(jié)操作,又支持位操作。位地址的范圍是 B8HBFH。8位中有5位與中斷有關(guān),剩下的3位沒(méi)有定 義。其格式如下 :,PS,串行口的中斷優(yōu)先級(jí)控制位。PS1時(shí),串行口被定義為高優(yōu)先級(jí)中斷源;PS0時(shí),串行口被定義為低優(yōu)先級(jí)中斷源。 PT1,定時(shí)器/計(jì)數(shù)器T1的中斷優(yōu)先級(jí)控制位。PT11,T1被定義為高優(yōu)先級(jí)中斷源

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

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

16、執(zhí)行中斷服務(wù)程序。 二、中斷的響應(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)返回主程序后,至

17、少再執(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ī)滿(mǎn)足中斷響應(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ù)中斷源的類(lèi)別,在硬件的控制下,內(nèi)部自動(dòng)執(zhí)行一條子程序調(diào)用指令,將程序轉(zhuǎn)移至相應(yīng)的中斷入口處,

18、開(kāi)始執(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)條件滿(mǎn)足要求時(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)程序的返回

19、。,3)執(zhí)行中斷服務(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ù)程序的開(kāi)始,把斷點(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)開(kāi)中斷。上面已談到CPU在響應(yīng)中斷時(shí)自動(dòng)關(guān)中 斷。為了使CPU能響應(yīng)新的中斷請(qǐng)求,在中斷服務(wù)程序末 尾應(yīng)按排開(kāi)

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

21、狀態(tài)字PSW、工作寄存器、累加器或其他的特殊功能寄存器等。如果在中斷服務(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ù)中斷源的具體要求所編寫(xiě)的中斷服務(wù) 程序的運(yùn)行和處理。用戶(hù)在編寫(xiě)中斷服務(wù)程序時(shí)應(yīng),一般 應(yīng)注意以下幾個(gè)方面: (1)8051單片機(jī)為各中斷源所保留的中斷入口地 址,只相隔8個(gè)單元,如此小的空間通常是容納不下中斷 服務(wù)程序的,因而常常在中斷入口地址單元處設(shè)置一條無(wú) 條件轉(zhuǎn)移指令,使中斷服務(wù)能轉(zhuǎn)至中斷服務(wù)程序所

22、存放的,存儲(chǔ)器的任何位置。 (2)在運(yùn)行當(dāng)前的中斷服務(wù)程序時(shí),如果想禁止更高 優(yōu)先級(jí)的中斷源請(qǐng)求中斷,可以用指令復(fù)位IE中的相關(guān)控 制位來(lái)屏蔽更高優(yōu)先級(jí)中斷源的中斷請(qǐng)求。在中斷服務(wù)程 序執(zhí)行完返回之前,再用指令開(kāi)放中斷。 (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ò)程受到干擾。這就要求在編寫(xiě)中斷服務(wù)程序 時(shí),應(yīng)注意在保護(hù)現(xiàn)場(chǎng)之前要關(guān)中斷。在保護(hù)現(xiàn)場(chǎng)之后, 若允許高優(yōu)先級(jí)的中斷源申請(qǐng)中斷,則應(yīng)開(kāi)中斷。同樣在 恢現(xiàn)場(chǎng)之前應(yīng)關(guān)中斷,恢復(fù)之后再開(kāi)中斷。,四、中斷返回 中斷服務(wù)程序

23、的最后一條指令是中斷返回指令RETI。它的功能是將斷點(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)求的撤消 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)。 (3)串行口的中斷請(qǐng)求:由于RI和TI都會(huì)引起串口的中斷,CPU響應(yīng)后,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論