




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章MCS-51單片機(jī)的中斷系統(tǒng)【本章內(nèi)容】本章主要介紹MCS-51單片機(jī)中斷系統(tǒng)的結(jié)構(gòu)、工作原理、控制方法等。【項(xiàng)目驅(qū)動(dòng)的學(xué)習(xí)要點(diǎn)】
應(yīng)用項(xiàng)目中對(duì)中斷源的利用。
應(yīng)用項(xiàng)目中如何通過(guò)中斷進(jìn)行時(shí)間調(diào)校。
應(yīng)用項(xiàng)目中的中斷服務(wù)程序流程圖分析。
應(yīng)用項(xiàng)目中的中斷服務(wù)源程序的設(shè)計(jì)與分析。
1第5章MCS-51單片機(jī)的中斷系統(tǒng)5.1MCS-51中斷系統(tǒng)概述5.2MCS-51的中斷控制5.3MCS-51的中斷處理5.4MCS-51外部中斷源的擴(kuò)展練習(xí)題END25.1MCS-51中斷系統(tǒng)概述5.1.1中斷的概念5.1.2中斷系統(tǒng)的結(jié)構(gòu)5.1.3中斷源5.1.4中斷請(qǐng)求標(biāo)志35.1.1中斷的概念1.中斷的概念2.中斷的作用41.中斷的概念當(dāng)CPU執(zhí)行完現(xiàn)行程序的當(dāng)前指令時(shí),如果此時(shí)發(fā)生某一緊急事件請(qǐng)求CPU對(duì)其進(jìn)行迅速處理,這種請(qǐng)求稱為中斷請(qǐng)求;發(fā)出中斷請(qǐng)求的來(lái)源稱為中斷源;如果這個(gè)中斷請(qǐng)求得到CPU的允許,CPU會(huì)暫時(shí)中止當(dāng)前程序的運(yùn)行,保存斷點(diǎn)(下一條指令的首地址),轉(zhuǎn)到中斷源對(duì)應(yīng)的中斷入口,處理發(fā)出中斷請(qǐng)求的緊急事件,這個(gè)過(guò)程稱為響應(yīng)中斷;51.中斷的概念處理中斷請(qǐng)求的程序稱為中斷服務(wù)程序;
CPU執(zhí)行完中斷服務(wù)程序后,再回到發(fā)生中斷的斷點(diǎn)繼續(xù)執(zhí)行原來(lái)的程序,這個(gè)過(guò)程稱為中斷返回;實(shí)現(xiàn)這種控制過(guò)程的部件稱為單片機(jī)的中斷系統(tǒng);單片機(jī)的上述控制過(guò)程就稱為中斷,單片機(jī)的中斷過(guò)程示意圖如圖5-1所示。6圖5-1單片機(jī)中斷過(guò)程示意圖單片機(jī)中斷控制過(guò)程:7(1)提高CPU的工作效率(2)便于實(shí)時(shí)處理(3)提高系統(tǒng)可靠性2.中斷的作用8當(dāng)單片機(jī)連接有外圍設(shè)備時(shí),通過(guò)采用中斷技術(shù),CPU在啟動(dòng)完外設(shè)后,不用專門(mén)等待外設(shè),而是和外設(shè)同步并行工作,直到外設(shè)完成指定操作,向CPU提出中斷請(qǐng)求時(shí),CPU再暫時(shí)中止當(dāng)前程序的執(zhí)行而為外設(shè)服務(wù),服務(wù)結(jié)束后再繼續(xù)執(zhí)行原程序。這樣,不僅解決了因外設(shè)工作速度慢于單片機(jī)而導(dǎo)致CPU需要耗時(shí)等待的問(wèn)題,而且可以允許CPU與多個(gè)外設(shè)并行工作,減少因等待或查詢而耗費(fèi)的時(shí)間,從而大大提高CPU的工作效率。
(1)提高CPU的工作效率9采用中斷技術(shù)后,凡是需要實(shí)時(shí)處理的事件,都可以設(shè)置成隨時(shí)可向CPU發(fā)出中斷請(qǐng)求,要求CPU進(jìn)行實(shí)時(shí)處理。(2)便于實(shí)時(shí)處理10對(duì)于單片機(jī)運(yùn)行過(guò)程中出現(xiàn)的各種異常情況,如斷電、設(shè)備故障、運(yùn)算出錯(cuò)等故障,可通過(guò)中斷技術(shù)及時(shí)向CPU申請(qǐng)中斷,以便進(jìn)行自我診斷并及時(shí)進(jìn)行處理,從而提高系統(tǒng)的可靠性。(3)提高系統(tǒng)可靠性115.1.2中斷系統(tǒng)的結(jié)構(gòu)
MCS-51單片機(jī)中斷系統(tǒng)由中斷源、定時(shí)器/計(jì)數(shù)器控制寄存器TCON、串行口控制寄存器SCON、中斷允許控制寄存器IE、中斷優(yōu)先級(jí)控制寄存器IP以及中斷優(yōu)先級(jí)排隊(duì)與查詢電路組成,如圖5-2所示。12圖5-2MCS-51單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)MCS-51單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)圖5-2MCS-51單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)13從圖5-2可以看出,MCS-51系列單片機(jī)的中斷系統(tǒng)有5個(gè)中斷源和2個(gè)優(yōu)先級(jí)。當(dāng)中斷源產(chǎn)生中斷請(qǐng)求時(shí),相應(yīng)的標(biāo)志位置為1,但中斷是否能被CPU響應(yīng),則要受中斷允許寄存器IE的控制,IE中的EA稱為中斷總控位、其他位稱為中斷分控位。對(duì)于允許響應(yīng)的中斷,通過(guò)中斷優(yōu)先級(jí)控制寄存器IP決定優(yōu)先級(jí)別,并送到中斷優(yōu)先級(jí)排隊(duì)與查詢電路,CPU按照從高優(yōu)先級(jí)到低優(yōu)先級(jí)的順序進(jìn)行查詢,首先響應(yīng)高優(yōu)先級(jí)的中斷請(qǐng)求,再響應(yīng)低優(yōu)先級(jí)的中斷請(qǐng)求。被CPU響應(yīng)的中斷請(qǐng)求,其相應(yīng)的中斷入口地址器被自動(dòng)送到程序計(jì)數(shù)器PC中,于是CPU便轉(zhuǎn)去執(zhí)行相應(yīng)的中斷服務(wù)程序。說(shuō)明:145.1.3中斷源
MCS-51單片機(jī)的5個(gè)中斷源分別為:2個(gè)外部中斷2個(gè)定時(shí)器/計(jì)數(shù)器溢出中斷1個(gè)串行口中斷151.外部中斷源(、)外部中斷0和外部中斷1的中斷請(qǐng)求信號(hào),分別由外部中斷請(qǐng)求輸入引腳(P3.2)、(P3.3)輸入,可以通過(guò)定時(shí)器/計(jì)數(shù)器控制寄存器TCON設(shè)定為低電平觸發(fā)或負(fù)邊沿觸發(fā)。16單片機(jī)內(nèi)部的2個(gè)定時(shí)器/計(jì)數(shù)器T0、T1是加1計(jì)數(shù)器,工作時(shí)可以對(duì)內(nèi)部定時(shí)脈沖或者對(duì)從T0(P3.4)引腳或T1(P3.5)引腳輸入的計(jì)數(shù)脈沖進(jìn)行加法計(jì)數(shù),當(dāng)計(jì)數(shù)狀態(tài)從“全1”加1變?yōu)椤叭?”時(shí),定時(shí)器/計(jì)數(shù)器電路就會(huì)產(chǎn)生溢出中斷請(qǐng)求信號(hào)。2.定時(shí)器/計(jì)數(shù)器溢出中斷源(T0、T1)17串行口中斷分為串行口發(fā)送中斷和串行口接收中斷兩種,每當(dāng)串行口發(fā)送或接收完一組串行數(shù)據(jù)時(shí),串行口電路便會(huì)自動(dòng)產(chǎn)生串行口中斷請(qǐng)求。但要區(qū)分是接收還是發(fā)送中斷請(qǐng)求,則需要通過(guò)對(duì)它們的中斷標(biāo)志位RI、TI進(jìn)行查詢才能知道。3.串行口中斷源(RI或TI)185.1.4中斷請(qǐng)求標(biāo)志為了能及時(shí)發(fā)現(xiàn)有無(wú)中斷源發(fā)出中斷請(qǐng)求,MCS-51單片機(jī)在時(shí)序中規(guī)定,CPU執(zhí)行程序過(guò)程中,總會(huì)在每個(gè)機(jī)器周期的S5P2期間,對(duì)中斷系統(tǒng)的各個(gè)中斷源進(jìn)行取樣。當(dāng)有中斷源發(fā)出中斷請(qǐng)求時(shí),就將對(duì)應(yīng)的中斷標(biāo)志位置為1,然后在下一個(gè)機(jī)器周期內(nèi)檢測(cè)這些中斷標(biāo)志位的狀態(tài),以決定是否響應(yīng)該中斷。191.定時(shí)器/計(jì)數(shù)器控制寄存器TCON定時(shí)器/計(jì)數(shù)器控制寄存器TCON各位的定義如圖5-3所示。圖5-3定時(shí)器/計(jì)數(shù)器控制寄存器TCON各位定義(1)IE0:外部中斷中斷請(qǐng)求標(biāo)志位。當(dāng)CPU在每個(gè)機(jī)器周期的S5P2期間檢測(cè)到引腳上的中斷請(qǐng)求有效時(shí),IE0由硬件自動(dòng)置1;當(dāng)CPU響應(yīng)中斷請(qǐng)求進(jìn)入相應(yīng)中斷服務(wù)程序執(zhí)行時(shí),IE0被自動(dòng)復(fù)位。(2)IE1:外部中斷中斷請(qǐng)求標(biāo)志位。其控制作用和IE0相同。20(3)IT0:外部中斷觸發(fā)方式控制位。當(dāng)IT0
=
1時(shí),為邊沿觸發(fā)方式(下降沿有效)。CPU在每個(gè)機(jī)器周期的S5P2期間取樣引腳電平,如果在連續(xù)的兩個(gè)機(jī)器周期檢測(cè)到引腳由高電平變?yōu)榈碗娖剑吹谝粋€(gè)周期取樣到=1,第二個(gè)周期取樣到=0,則置IE0
=
1,產(chǎn)生中斷請(qǐng)求。在邊沿觸發(fā)方式下,CPU響應(yīng)中斷時(shí),由硬件自動(dòng)清除IE0標(biāo)志。但應(yīng)注意,為保證CPU能檢測(cè)到負(fù)跳變,上的低電平持續(xù)時(shí)間至少應(yīng)保持1個(gè)機(jī)器周期。當(dāng)IT0=0時(shí),為電平觸發(fā)方式。CPU在每個(gè)機(jī)器周期的S5P2取樣引腳電平,當(dāng)取樣到低電平時(shí),置IE0=1表示向CPU請(qǐng)求中斷;取樣到高電平時(shí),將IE0清0。
21值得注意的是,在電平觸發(fā)方式下,盡管CPU響應(yīng)中斷時(shí),相應(yīng)中斷標(biāo)志IE0或IE1能自動(dòng)復(fù)位成0狀態(tài),但若外部中斷源不能及時(shí)撤除它在或上的低電平,就會(huì)再次使已經(jīng)變0的中斷標(biāo)志IE0或IE1置1,這是絕對(duì)不允許的。因此,電平觸發(fā)型外部中斷請(qǐng)求的撤除必須使或上的低電平隨其中斷被CPU響應(yīng)而變?yōu)楦唠娖健?2由圖5-4可見(jiàn),當(dāng)外部中斷源產(chǎn)生中斷請(qǐng)求時(shí),D觸發(fā)器被觸發(fā),其端輸出低電平并送到單片機(jī)的引腳,該低電平被單片機(jī)CPU檢測(cè)到后就使中斷標(biāo)志IE0置1,CPU響應(yīng)中斷請(qǐng)求便可轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。
圖5-4電平觸發(fā)方式的外部中斷請(qǐng)求撤除電路電平觸發(fā)方式的外部中斷請(qǐng)求撤除電路23
CPU執(zhí)行上述的中斷服務(wù)程序時(shí),可在P1.0上產(chǎn)生一個(gè)寬度為2個(gè)機(jī)器周期的負(fù)脈沖。在該負(fù)脈沖作用下,D觸發(fā)器的端被置位成l狀態(tài),上的電平因此而變高,從而撤除了其上的中斷請(qǐng)求。為了撤除上的低電平,可以在中斷服務(wù)程序開(kāi)頭加上如下指令。INTSUB:ANL P1,#0FE ;P1.0=0 ORL P1,#01H ;P1.0=1 CLR IE0 …… RETI24(4)IT1:外部中斷觸發(fā)方式控制位。其控制功能、注意事項(xiàng)與IT0相同。(5)TF0:定時(shí)器/計(jì)數(shù)器T0溢出中斷請(qǐng)求標(biāo)志位。T0啟動(dòng)后便從初值開(kāi)始進(jìn)行加1計(jì)數(shù),直至最高位產(chǎn)生溢出時(shí),向CPU發(fā)出溢出中斷請(qǐng)求,CPU檢測(cè)到中斷請(qǐng)求后,由硬件將TF0置位。CPU響應(yīng)中斷時(shí),由硬件自動(dòng)將TF0復(fù)位為0。(6)TF1:定時(shí)器/計(jì)數(shù)器T1溢出中斷請(qǐng)求標(biāo)志位。其控制功能與TF0類似。(7)TR0、TR1:定時(shí)器/計(jì)數(shù)器的啟/停控制位(將在第6章中介紹)。252.串行口控制寄存器SCON串行口控制寄存器SCON各位的定義如圖5-5所示
圖5-5串行口控制寄存器各位的定義
(1)RI:串行口接收中斷標(biāo)志位。當(dāng)允許串行口接收數(shù)據(jù)時(shí),每接收完一個(gè)串行數(shù)據(jù)幀,串行口電路便將RI置位,向CPU發(fā)出串行口中斷請(qǐng)求。(2)TI:串行口發(fā)送中斷標(biāo)志位。當(dāng)CPU將一個(gè)發(fā)送數(shù)據(jù)寫(xiě)入串行口發(fā)送緩沖器時(shí),就啟動(dòng)了發(fā)送過(guò)程。每發(fā)送完一個(gè)串行數(shù)據(jù)幀,串行口電路便將TI置位,向CPU發(fā)出串行口中斷請(qǐng)求。26
CPU響應(yīng)串行口中斷后,中斷系統(tǒng)不會(huì)通過(guò)硬件電路自動(dòng)將RI或TI復(fù)位,而必須在串行口中斷服務(wù)程序中通過(guò)軟件對(duì)它們進(jìn)行清除。這是因?yàn)镸CS-51單片機(jī)的串行口中斷是由RI和TI所共用的,因此,進(jìn)入串行口中斷服務(wù)程序后,常需要對(duì)它們進(jìn)行檢測(cè),以確定發(fā)生的串行口中斷到底是接收中斷還是發(fā)送中斷。為了防止CPU再次響應(yīng)這類中斷,應(yīng)在中斷服務(wù)程序的適當(dāng)位置通過(guò)如下位操作指令將它們撤除。
CLR RI ;撤除接收中斷標(biāo)志
CLR TI ;撤除發(fā)送中斷標(biāo)志說(shuō)明:27若采用字節(jié)操作指令,則指令如下:ANLSCON,#0FCH ;撤除發(fā)送和接收中斷標(biāo)志,其余控制位不變(3)SCON其余各位將在第9章中介紹。單片機(jī)復(fù)位后,TCON和SCON各位均被清0。另外,所有的中斷請(qǐng)求標(biāo)志位均可由軟件置1或清0,獲得的效果與硬件置1或清0相同。285.2MCS-51的中斷控制5.2.1中斷允許控制5.2.2中斷優(yōu)先級(jí)控制5.2.3中斷嵌套295.2.1中斷允許控制
MCS-51單片機(jī)的中斷系統(tǒng)通過(guò)中斷允許控制寄存器IE對(duì)所有中斷以及某個(gè)中斷源進(jìn)行中斷允許控制。IE中設(shè)置有中斷允許總控位和各個(gè)中斷源的分控位,這些位的狀態(tài)可以通過(guò)程序由軟件設(shè)定,只有當(dāng)總控位和分控位都為1時(shí),相應(yīng)的中斷源才被允許(參見(jiàn)圖5-2)。單片機(jī)開(kāi)機(jī)/復(fù)位時(shí),IE各位被復(fù)位為0,處于關(guān)閉所有中斷的狀態(tài)。所以需要用到某個(gè)中斷源時(shí),必須通過(guò)指令使IE開(kāi)放所需中斷,才能使相應(yīng)的中斷請(qǐng)求發(fā)生時(shí)能為CPU所響應(yīng)。
30圖5-6中斷允許控制寄存器IE各位的定義(1)EA:中斷允許總控位。EA=
0時(shí),關(guān)閉所有中斷源的中斷請(qǐng)求;EA=1時(shí),開(kāi)放所有中斷源的中斷允許總控,但它們的中斷請(qǐng)求最終能否為CPU響應(yīng)還要取決于IE中相應(yīng)中斷源的中斷允許分控位的狀態(tài)。中斷允許控制寄存器IE各位的定義:31(2)EX0:外部中斷的中斷允許位。EX0=0時(shí),的中斷請(qǐng)求被關(guān)閉;EX0=1時(shí),的中斷請(qǐng)求被允許,但CPU最終能否響應(yīng)的中斷請(qǐng)求還要取決于IE中的中斷允許總控位EA的狀態(tài)。(3)EX1:外部中斷的中斷允許位。控制功能與EX0相同。32(4)ET0:定時(shí)器/計(jì)數(shù)器T0中斷允許位。ET0=0時(shí),T0的中斷請(qǐng)求被關(guān)閉;ET0=1,且EA=1時(shí),T0的中斷請(qǐng)求被允許。(5)ET1:定時(shí)器/計(jì)數(shù)器T1中斷允許位。控制功能與ET0類同。(6)ES:串行口中斷允許位。ES=0時(shí),串行口的中斷請(qǐng)求被關(guān)閉;ES=1,且EA=1時(shí),串行口的中斷請(qǐng)求被允許。335.2.2中斷優(yōu)先級(jí)控制
MCS-51單片機(jī)有兩個(gè)中斷優(yōu)先級(jí),由中斷優(yōu)先級(jí)控制寄存器IP進(jìn)行設(shè)置。IP中的控制位與各中斷源一一對(duì)應(yīng)。當(dāng)IP中的某一控制位的狀態(tài)設(shè)定為1時(shí),與之相應(yīng)的中斷源為高優(yōu)先級(jí)中斷;設(shè)定為0時(shí),相應(yīng)的中斷源為低優(yōu)先級(jí)中斷(參見(jiàn)圖5-2)。單片機(jī)開(kāi)機(jī)/復(fù)位時(shí),IP各位清0,各中斷源均為低優(yōu)先級(jí)中斷。34圖5-7中斷優(yōu)先級(jí)控制寄存器IP各位的定義
(1)PX0:外部中斷中斷優(yōu)先級(jí)設(shè)定位。(2)PT0:定時(shí)器/計(jì)數(shù)器T0中斷優(yōu)先級(jí)設(shè)定位。(3)PX1:外部中斷中斷優(yōu)先級(jí)設(shè)定位。(4)PT1:定時(shí)器/計(jì)數(shù)器T1中斷優(yōu)先級(jí)設(shè)定位。(5)PS:串行口中斷優(yōu)先級(jí)設(shè)定位。中斷優(yōu)先級(jí)控制寄存器IP各位的定義:35同級(jí)優(yōu)先排隊(duì)順序由中斷系統(tǒng)硬件電路進(jìn)行固定的設(shè)置,從高到低依次排列為:外部中斷0()、定時(shí)器/計(jì)數(shù)器0(T0)、外部中斷1()、定時(shí)器/計(jì)數(shù)器1(T1)、串行口RI或TI,如表5-1所示。同級(jí)優(yōu)先順序:中
斷
源同級(jí)優(yōu)先順序外部中斷0()低高定時(shí)器/計(jì)數(shù)器0溢出中斷(T0)外部中斷1()定時(shí)器/計(jì)數(shù)器1溢出中斷(T1)串行口中斷(TI或RI)365.2.3中斷嵌套
MCS-51單片機(jī)對(duì)中斷優(yōu)先級(jí)的處理按如下3條原則進(jìn)行。(1)CPU同時(shí)接收到幾個(gè)中斷時(shí),首先響應(yīng)優(yōu)先級(jí)最高的中斷請(qǐng)求。(2)正在執(zhí)行的中斷過(guò)程不能被新的同級(jí)或低優(yōu)先級(jí)的中斷請(qǐng)求所中斷。(3)正在執(zhí)行的低優(yōu)先級(jí)中斷服務(wù),能被高優(yōu)先級(jí)的中斷請(qǐng)求所中斷。
實(shí)現(xiàn)上述第三條原則的過(guò)程稱為中斷嵌套。37中斷嵌套條件:首先是中斷服務(wù)程序中沒(méi)有關(guān)閉中斷,中斷系統(tǒng)處于開(kāi)中斷狀態(tài);其次要有中斷優(yōu)先級(jí)更高的中斷請(qǐng)求發(fā)生。只要條件成立,這樣的嵌套可以發(fā)生多次。圖5-8中斷嵌套示意圖
中斷嵌套示意圖與嵌套條件385.3MCS-51的中斷處理5.3.1中斷響應(yīng)條件5.3.2中斷響應(yīng)過(guò)程5.3.3中斷響應(yīng)時(shí)間5.3.4中斷的初始化39(1)中斷系統(tǒng)為開(kāi)中斷狀態(tài)(即中斷允許總控位EA=1,且相應(yīng)中斷源的中斷允許分控位為1)。(2)中斷源發(fā)出中斷請(qǐng)求。(3)沒(méi)有同優(yōu)先級(jí)或高優(yōu)先級(jí)的中斷正在處理。(4)現(xiàn)行的單條指令已經(jīng)執(zhí)行完畢(保證單條指令在執(zhí)行過(guò)程中不會(huì)被中途打斷)。(5)若CPU正在執(zhí)行的指令是RET、RETI或任何訪問(wèn)特殊功能寄存器IE或IP的指令,則在當(dāng)前指令執(zhí)行完后,還要緊接著再執(zhí)行完下一條指令。5.3.1中斷響應(yīng)條件405.3.2中斷響應(yīng)過(guò)程(1)將與被響應(yīng)中斷源對(duì)應(yīng)的中斷優(yōu)先級(jí)狀態(tài)觸發(fā)器置1,以阻止后來(lái)的同級(jí)或低級(jí)的中斷請(qǐng)求。(2)撤除所響應(yīng)中斷源的中斷標(biāo)志(復(fù)位為0),以防止CPU因中斷標(biāo)志未能得到及時(shí)撤除而重復(fù)響應(yīng)同一中斷請(qǐng)求。
撤除方法是:外部中斷或定時(shí)器/計(jì)數(shù)器的中斷標(biāo)志由硬件自動(dòng)撤除;串口中斷則需在中斷服務(wù)程序中通過(guò)如下指令撤除。
CLR TI ;撤除發(fā)送中斷
CLR RI ;撤除接收中斷41(3)執(zhí)行一條由中斷系統(tǒng)硬件電路提供的LCALL指令。該指令的轉(zhuǎn)移地址就是被響應(yīng)中斷源的中斷服務(wù)程序入口地址(見(jiàn)表5-2)。執(zhí)行這條指令時(shí),先把斷點(diǎn)(發(fā)生中斷的當(dāng)前指令的下一條指令首地址)壓入堆棧,以便中斷返回時(shí)使用;然后將相應(yīng)的中斷服務(wù)程序入口地址送入PC,于是CPU轉(zhuǎn)去執(zhí)行相應(yīng)的中斷服務(wù)程序。42表5-2 MCS-51單片機(jī)的中斷服務(wù)程序入口地址中斷服務(wù)程序入口地址中
斷
源入
口
地
址外部中斷0()0003H定時(shí)器/計(jì)數(shù)器0溢出中斷(T0)000BH外部中斷0()0013H定時(shí)器/計(jì)數(shù)器1溢出中斷(T1)001BH串行口中斷(TI或RI)0023H43(4)執(zhí)行到中斷服務(wù)程序的最后一條指令——中斷返回指令RETI時(shí),首先將響應(yīng)中斷時(shí)壓入堆棧保存的斷點(diǎn)地址從堆棧彈出到PC,使CPU從原來(lái)中斷的地方繼續(xù)執(zhí)行程序;然后將與已響應(yīng)中斷源對(duì)應(yīng)的中斷優(yōu)先級(jí)狀態(tài)觸發(fā)器清0,通知中斷系統(tǒng),該中斷服務(wù)程序已執(zhí)行完畢,在沒(méi)有更高級(jí)別的中斷請(qǐng)求發(fā)生時(shí),允許CPU響應(yīng)同優(yōu)先級(jí)別或低優(yōu)先級(jí)的中斷請(qǐng)求。44(1)不能用RET指令代替RETI指令。因?yàn)镽ET指令雖然也能控制PC返回原來(lái)中斷的地方,但RET指令沒(méi)有對(duì)中斷優(yōu)先級(jí)狀態(tài)觸發(fā)器進(jìn)行清零的功能,中斷控制系統(tǒng)就會(huì)認(rèn)為所響應(yīng)的中斷仍在進(jìn)行,其后果是使與此中斷同級(jí)的中斷請(qǐng)求將不被響應(yīng)。所以中斷服務(wù)程序結(jié)束時(shí)必須使用RETI指令實(shí)現(xiàn)中斷返回。(2)若用戶在中斷服務(wù)程序中進(jìn)行了入棧操作,則在
RETI指令執(zhí)行前,應(yīng)進(jìn)行相應(yīng)的出棧操作,使棧頂指針SP與保護(hù)斷點(diǎn)后的值相同,即在中斷服務(wù)程序中,PUSH指令與POP指令必須成對(duì)使用,否則不能正確返回?cái)帱c(diǎn)。編寫(xiě)中斷服務(wù)程序注意事項(xiàng)45(3)從表5-2中可以看出,MCS-51單片機(jī)的兩個(gè)相鄰中斷源的中斷服務(wù)程序入口地址相距只有8個(gè)單元的空間,一般情況下,8個(gè)地址單元是不足以容納一個(gè)中斷服務(wù)程序的。因此,除非中斷服務(wù)程序特別簡(jiǎn)單,可以直接安排在這幾個(gè)單元中,否則,通常是在相應(yīng)的中斷服務(wù)程序入口地址單元放置一條無(wú)條件長(zhǎng)轉(zhuǎn)移指令LJMP,用以轉(zhuǎn)移到另外安排的中斷服務(wù)程序入口,這樣可以將中斷服務(wù)程序靈活地安排在64KB程序存儲(chǔ)器的任何地方。當(dāng)然,若在2KB范圍內(nèi)轉(zhuǎn)移,則可用AJMP指令。46
……
3 ORG0003H4 LJMPBREAK0 ;轉(zhuǎn)中斷5 ORG000BH6 LJMPCLOCK ;轉(zhuǎn)定時(shí)器T0中斷7 ORG0013H8 LJMPBREAK1 ;轉(zhuǎn)中斷
……24BREAK0:CLREX0 ;關(guān)閉中斷
……35 SETBEX0 ;開(kāi)放中斷36 RETI ;中斷返回
……【項(xiàng)目應(yīng)用】以下是應(yīng)用項(xiàng)目中的中斷服務(wù)程序入口地址所使用的無(wú)條件長(zhǎng)轉(zhuǎn)移指令。
4737BREAKl:CLREXl ;關(guān)閉中斷
……
48 SETBEXl ;開(kāi)放
中斷49 RETI ;中斷返回
……85CLOCK:PUSHPSW ;保護(hù)現(xiàn)場(chǎng)86 PUSHACC
……108DONE1:POPACC ;恢復(fù)現(xiàn)場(chǎng)109 POPPSW110 RETI ;中斷返回48
進(jìn)入和中斷服務(wù)程序時(shí),首先使用CLREX0和CLREX1指令,暫時(shí)關(guān)閉相應(yīng)的中斷,在中斷返回前,再使用SETBEX0和SETBEX1指令開(kāi)放相應(yīng)的中斷,其目的是為了保證每按下一次時(shí)間調(diào)校按鈕時(shí),只響應(yīng)一次中斷。
進(jìn)入T0中斷服務(wù)程序時(shí),首先使用指令保護(hù)現(xiàn)場(chǎng),在中斷服務(wù)之后、中斷返回前,再恢復(fù)現(xiàn)場(chǎng),以防止中斷返回后丟失原寄存器的內(nèi)容。
說(shuō)明:495.3.3中斷響應(yīng)時(shí)間中斷響應(yīng)時(shí)間指的是從中斷源發(fā)出中斷請(qǐng)求,到CPU響應(yīng)中斷需要經(jīng)歷的時(shí)間。在單片機(jī)的實(shí)時(shí)控制系統(tǒng)中,為了滿足控制速度的要求,需要明確知道CPU響應(yīng)中斷所需的時(shí)間。50下面通過(guò)MCS-51單片機(jī)的中斷響應(yīng)時(shí)序(如圖5-9所示),對(duì)中斷響應(yīng)時(shí)間進(jìn)行分析。圖5-9中斷響應(yīng)時(shí)序
中斷響應(yīng)時(shí)序51假定某中斷在圖5-9中M1周期的S5P2前生效,在S5P2期間,其中斷請(qǐng)求被CPU查詢到,并將相應(yīng)的標(biāo)志位置1。若下一個(gè)機(jī)器周期M2恰好是當(dāng)前指令的最后一個(gè)機(jī)器周期,且該指令不是RET、RETI或訪問(wèn)IE、IP的指令,CPU便可以在后面的兩個(gè)機(jī)器周期M3和M4里執(zhí)行硬件LCALL指令,在M5周期將轉(zhuǎn)入相應(yīng)中斷入口地址執(zhí)行中斷服務(wù)程序。可見(jiàn),MCS-51的中斷響應(yīng)時(shí)間(從中斷標(biāo)志位置1到進(jìn)入相應(yīng)的中斷服務(wù)程序)至少需要3個(gè)完整的機(jī)器周期。中斷響應(yīng)時(shí)間分析52若發(fā)生如下情況,就要增加中斷響應(yīng)等待時(shí)間。(1)若標(biāo)志查詢周期不是正在執(zhí)行指令的最后機(jī)器周期,需增加1~3個(gè)機(jī)器周期,因?yàn)镸CS-51指令系統(tǒng)中,執(zhí)行時(shí)間最長(zhǎng)的乘法、除法指令MUL和DIV也只需要4個(gè)機(jī)器周期。(2)若標(biāo)志查詢周期恰逢CPU執(zhí)行RET、RETI或訪問(wèn)IE、IP指令,而這類指令之后又緊跟著MUL或DIV指令,則需多用1個(gè)機(jī)器周期完成正在執(zhí)行的指令,再加上執(zhí)行MUL或DIV指令需用4個(gè)機(jī)器周期。所以這種情況下,需要附加的等待時(shí)間不會(huì)超過(guò)5個(gè)機(jī)器周期。中斷響應(yīng)時(shí)間分析53由此可見(jiàn):對(duì)于沒(méi)有嵌套的單級(jí)中斷,響應(yīng)時(shí)間為3~8個(gè)機(jī)器周期。若CPU正在響應(yīng)同級(jí)或高級(jí)中斷,則所需要的附加等待時(shí)間取決于正在執(zhí)行的中斷服務(wù)程序的長(zhǎng)短,中斷響應(yīng)時(shí)間不確定。中斷響應(yīng)時(shí)間分析545.3.4中斷的初始化中斷系統(tǒng)的初始化指的是用戶根據(jù)各中斷源的具體要求,對(duì)與中斷控制有關(guān)的特殊功能寄存器中的各控制位進(jìn)行賦值,其基本步驟如下。(1)開(kāi)放相應(yīng)中斷源的中斷。(2)設(shè)定所用中斷源的中斷優(yōu)先級(jí)。(3)若為外部中斷,則應(yīng)規(guī)定其為低電平還是負(fù)邊沿的中斷觸發(fā)方式。55
……
10 MAIN:……
……20 MOV IE,#87H ;允許中斷
……【項(xiàng)目應(yīng)用】在應(yīng)用項(xiàng)目中用到的3個(gè)中斷源,分別是外部中斷、和定時(shí)器T0中斷。以下是應(yīng)用項(xiàng)目中的中斷初始化程序。56執(zhí)行MOVIE,#87H指令后,(IE)=10000111B,即EA=1、EX1=1、ET0=1、EX0=1,令中斷系統(tǒng)開(kāi)放總中斷以及開(kāi)放外部中斷1、外部中斷0和定時(shí)器T0溢出中斷。程序中沒(méi)有對(duì)IT0、IT1和IP中的各位進(jìn)行置位,所以外部中斷的觸發(fā)方式選擇為電平觸發(fā)方式;中斷優(yōu)先級(jí)全部為低優(yōu)先級(jí)。當(dāng)然,也可以使用位操作指令實(shí)現(xiàn)上述功能,將程序改為: ……
SETB EA ;開(kāi)放總中斷
SETB EX1 ;開(kāi)放外部中斷1
SETB ET0 ;開(kāi)放定時(shí)器T0中斷
SETB EX0 ;開(kāi)放外部中斷0 ……說(shuō)明:575.4MCS-51外部中斷源的擴(kuò)展當(dāng)實(shí)際的單片機(jī)應(yīng)用系統(tǒng)需要用到兩個(gè)以上的外部中斷源時(shí),就需要對(duì)單片機(jī)的外部中斷源進(jìn)行擴(kuò)展。擴(kuò)展的方法通常有以下3種。(1)借用定時(shí)器溢出中斷擴(kuò)展外部中斷源。(2)采用查詢法擴(kuò)展外部中斷源。(3)采用外接可編程中斷擴(kuò)展芯片(如8259中斷控制器)擴(kuò)展外部中斷源。第一種方法將在第6章中加以介紹。第三種方法限于篇幅不作介紹,讀者可參考有關(guān)書(shū)籍。下面僅對(duì)采用查詢法擴(kuò)展外部中斷源通過(guò)舉例子進(jìn)行說(shuō)明。58假設(shè)某個(gè)單片機(jī)應(yīng)用系統(tǒng)共有5個(gè)外部中斷源,中斷優(yōu)先級(jí)由高到低的排隊(duì)順序?yàn)椋篒RQ0、IRQ1、IRQ2、IRQ3、IRQ4。試設(shè)計(jì)它們與8051單片機(jī)進(jìn)行連接的硬件電路與相應(yīng)的中斷服務(wù)程序。
【例5-1】59(1)硬件電路設(shè)計(jì)采用查詢法擴(kuò)展外部中斷源的一種硬件電路如圖5-10所示。圖5-10采用查詢法擴(kuò)展外部
中斷源的硬件電路解:
60在圖5-10中,根據(jù)題目要求的中斷優(yōu)先級(jí),將最高優(yōu)先級(jí)的中斷源IRQ0直接經(jīng)非門(mén)接到輸入端,其余的IRQ1~I(xiàn)RQ4經(jīng)由集電極開(kāi)路的非門(mén)所構(gòu)成的或非電路接到端并分別與P1.0~P1.3相連。當(dāng)IRQ1~I(xiàn)RQ4中有一個(gè)或多個(gè)輸入中斷信號(hào)(高電平)時(shí),都會(huì)通過(guò)引腳向CPU發(fā)出中斷請(qǐng)求。在的中斷服務(wù)程序中依次查詢P1.0~P1.3,就可以確定究竟是哪個(gè)中斷源提出中斷請(qǐng)求,從而轉(zhuǎn)向與之相應(yīng)的中斷服務(wù)程序。只要在編程時(shí)保證、具有相同的優(yōu)先級(jí),就能使連接在的IRQ0中斷優(yōu)先級(jí)高于連接在上的IRQ1~I(xiàn)RQ4,而IRQ1~I(xiàn)RQ4則由對(duì)P1.0~P1.3的查詢順序決定它們的中斷優(yōu)先級(jí)是從高到低排隊(duì)。61值得注意的是,由于IRQ1~I(xiàn)RQ4被接到P1.0~P1.3引腳,且查詢時(shí)需要讀P1.0~P1.3
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025授權(quán)運(yùn)輸合同范本協(xié)議
- 2025醫(yī)院護(hù)士聘用合同
- 山東省聊城市臨清市2024-2025學(xué)年八年級(jí)下學(xué)期4月期中道德與法治試題(含答案)
- 球星代言球鞋合同協(xié)議
- 電商銷售授權(quán)合同協(xié)議
- 貓咪買(mǎi)賣寵物合同協(xié)議
- 玻璃墻窗簾采購(gòu)合同協(xié)議
- 電梯維保合同中止協(xié)議
- 生豬養(yǎng)殖生豬收購(gòu)合同協(xié)議
- 電柜組裝外協(xié)合同協(xié)議
- 排水管道非開(kāi)挖預(yù)防性修復(fù)可行性研究報(bào)告
- 交通工程基礎(chǔ)習(xí)習(xí)題及參考答案
- 讀書(shū)知識(shí)競(jìng)賽試題含答案
- 線路送出工程質(zhì)量創(chuàng)優(yōu)項(xiàng)目策劃書(shū)
- 企業(yè)全面戰(zhàn)略管理、年度經(jīng)營(yíng)計(jì)劃、預(yù)算管理、績(jī)效管理
- 100T汽車吊性能表
- SOP0420201潔凈空調(diào)系統(tǒng)清潔消毒預(yù)防性維護(hù)保養(yǎng)操作規(guī)程報(bào)告
- 試樣切取和加工制備作業(yè)指導(dǎo)書(shū)
- 中國(guó)民主同盟入盟申請(qǐng)表(樣表)
- 數(shù)學(xué)分析簡(jiǎn)明教程答案尹小玲鄧東皋
- 壁球館施工方案
評(píng)論
0/150
提交評(píng)論