單片機(jī)技術(shù)與項(xiàng)目訓(xùn)練 課件 第4章 單片機(jī)中斷系統(tǒng)_第1頁(yè)
單片機(jī)技術(shù)與項(xiàng)目訓(xùn)練 課件 第4章 單片機(jī)中斷系統(tǒng)_第2頁(yè)
單片機(jī)技術(shù)與項(xiàng)目訓(xùn)練 課件 第4章 單片機(jī)中斷系統(tǒng)_第3頁(yè)
單片機(jī)技術(shù)與項(xiàng)目訓(xùn)練 課件 第4章 單片機(jī)中斷系統(tǒng)_第4頁(yè)
單片機(jī)技術(shù)與項(xiàng)目訓(xùn)練 課件 第4章 單片機(jī)中斷系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

單片機(jī)中斷系統(tǒng)第4章

中斷系統(tǒng)是為了使單片機(jī)對(duì)外部或內(nèi)部隨機(jī)發(fā)生的事件能及時(shí)處理而設(shè)置的。中斷功能的存在在很大程度上增強(qiáng)了單片機(jī)處理突發(fā)事件的能力。本章從中斷的概念、中斷系統(tǒng)結(jié)構(gòu)、中斷允許與中斷優(yōu)先級(jí)的控制、響應(yīng)中斷請(qǐng)求的條件、外部中斷的響應(yīng)時(shí)間、外部中斷的觸發(fā)方式選擇、中斷服務(wù)子程序的設(shè)計(jì)和多外部中斷源擴(kuò)展設(shè)計(jì)等方面對(duì)中斷進(jìn)行介紹。引言目錄中斷概述1外部中斷應(yīng)用2本章小結(jié)3本章習(xí)題4行業(yè)PPT模板/hangye/4.1

中斷概述4.1.1中斷的概念

CPU在處理某一事件A時(shí),發(fā)生了另一事件B請(qǐng)求CPU迅速去處理(中斷發(fā)生);

CPU暫時(shí)中斷當(dāng)前的工作,轉(zhuǎn)去處理事件B(中斷響應(yīng)和中斷服務(wù));待CPU將事件B處理完畢后,再回到原來事件A被中斷的地方繼續(xù)處理事件A(中斷返回),這一過程稱為中斷。

(a)中斷流程

(b)中斷嵌套流程4.1.28051系列單片機(jī)中斷系統(tǒng)及與中斷有關(guān)的SFR1、8051系列單片機(jī)的中斷系統(tǒng)

8051系列單片機(jī)共有5個(gè)中斷源:兩個(gè)外部中斷和、兩個(gè)定時(shí)/計(jì)數(shù)器T0和T1,以及一個(gè)串口(分為兩個(gè)優(yōu)先級(jí))。4.1.28051系列單片機(jī)中斷系統(tǒng)及與中斷有關(guān)的SFRIT0(TCON.0),外部中斷0觸發(fā)方式控制位。當(dāng)IT0=0時(shí),為電平觸發(fā)方式。當(dāng)IT0=1時(shí),為邊沿觸發(fā)方式(下降沿有效)。IE0(TCON.1),外部中斷0中斷請(qǐng)求標(biāo)志位。IT1(TCON.2),外部中斷1觸發(fā)方式控制位。IE1(TCON.3),外部中斷1中斷請(qǐng)求標(biāo)志位。TF0(TCON.5),定時(shí)/計(jì)數(shù)器T0溢出中斷請(qǐng)求標(biāo)志位TF1(TCON.7),定時(shí)/計(jì)數(shù)器T1溢出中斷請(qǐng)求標(biāo)志位。TCOND7D6D5D4D3D2D1D0位定義TF1—TF0—IE1IT1IE0IT02、與中斷系統(tǒng)有關(guān)的SFR(1)TCON(TimerControl)——中斷控制寄存器TCON中含有與定時(shí)器和外部中斷有關(guān)的標(biāo)志位。TCON的字節(jié)地址是88H,可以進(jìn)行位尋址和位操作。(2)IE(InterruptEnable)——中斷允許控制寄存器

CPU對(duì)中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開放和屏蔽是由中斷允許寄存器IE控制的。EX0(IE.0),外部中斷0允許位;ET0(IE.1),定時(shí)/計(jì)數(shù)器T0中斷允許位;EX1(IE.2),外部中斷0允許位;ET1(IE.3),定時(shí)/計(jì)數(shù)器T1中斷允許位;ES(IE.4),串行口中斷允許位;EA(IE.7),CPU中斷允許(總允許)位。4.1.28051系列單片機(jī)中斷系統(tǒng)及與中斷有關(guān)的SFRIED7D6D5D4D3D2D1D0位定義EA——ESET1EX1ET0EX0(3)IP(InterruptPriority)——中斷優(yōu)先級(jí)控制寄存器8051單片機(jī)有兩個(gè)中斷優(yōu)先級(jí),即可實(shí)現(xiàn)二級(jí)中斷服務(wù)嵌套。每個(gè)中斷源的中斷優(yōu)先級(jí)都是由中斷優(yōu)先級(jí)寄存器IP中的相應(yīng)位的狀態(tài)來規(guī)定的。PX0(IP.0),外部中斷0優(yōu)先級(jí)設(shè)定位;PT0(IP.1),定時(shí)/計(jì)數(shù)器T0優(yōu)先級(jí)設(shè)定位;PX1(IP.2),外部中斷0優(yōu)先級(jí)設(shè)定位;PT1(IP.3),定時(shí)/計(jì)數(shù)器T1優(yōu)先級(jí)設(shè)定位;PS(IP.4),串行口優(yōu)先級(jí)設(shè)定位;PT2(IP.5),定時(shí)/計(jì)數(shù)器T2優(yōu)先級(jí)設(shè)定位。4.1.28051系列單片機(jī)中斷系統(tǒng)及與中斷有關(guān)的SFRIPD7D6D5D4D3D2D1D0位定義———PSPT1PX1PT0PX0

中斷源有請(qǐng)求時(shí)會(huì)產(chǎn)生請(qǐng)求標(biāo)志,如果中斷是被允許的,那么CPU會(huì)響應(yīng)該中斷,響應(yīng)中斷時(shí),PC轉(zhuǎn)移到該中斷向量地址(也稱入口地址)處運(yùn)行程序。8051單片機(jī)中斷源的入口地址固定在程序存儲(chǔ)器開頭的一段范圍內(nèi)(0003H~002BH),具體地址如下表所示。中斷源入口地址中斷編號(hào)0003H0T0000BH10013H2T1001BH3串口0023H43.中斷源向量地址4.1.28051系列單片機(jī)中斷系統(tǒng)及與中斷有關(guān)的SFR4.1.3中斷處理過程

中斷是一個(gè)過程,整個(gè)過程可以分為以下幾步:中斷請(qǐng)求、中斷響應(yīng)、中斷服務(wù)和中斷返回。1、中斷請(qǐng)求

中斷源只有在有中斷請(qǐng)求時(shí),CPU才可能響應(yīng)它,不同的中斷源產(chǎn)生中斷請(qǐng)求的方式是不同的。中斷源的中斷請(qǐng)求標(biāo)志由內(nèi)部硬件電路自動(dòng)置為“1”,CPU在執(zhí)行指令的每個(gè)機(jī)器周期里都會(huì)查詢這些中斷請(qǐng)求標(biāo)志,如果查詢到某個(gè)中斷請(qǐng)求標(biāo)志為“1”,那么CPU就可能響應(yīng)該中斷源的中斷請(qǐng)求。2、中斷響應(yīng)

有了中斷請(qǐng)求,CPU要響應(yīng)它還必須滿足以下幾個(gè)條件。

第一,該中斷源的中斷請(qǐng)求已經(jīng)被允許,即對(duì)應(yīng)的中斷允許標(biāo)志和總的中斷允許標(biāo)志EA都被設(shè)置為“1”。

第二,CPU此時(shí)沒有響應(yīng)同級(jí)或高級(jí)中斷。如果已經(jīng)有中斷服務(wù)程序在運(yùn)行,CPU不會(huì)響應(yīng)新的同級(jí)中斷請(qǐng)求,但可以響應(yīng)高級(jí)中斷。如果正在執(zhí)行高級(jí)中斷服務(wù)程序,那么單片機(jī)也不會(huì)響應(yīng)任何中斷。

第三,CPU正處于執(zhí)行某一條指令的最后一個(gè)機(jī)器周期。如果不是,就只有等到該條指令執(zhí)行完才能響應(yīng)。

第四,如果正在執(zhí)行的指令是對(duì)IE、IP進(jìn)行訪問的指令或中斷返回指令RETI,則只有等該指令執(zhí)行完再執(zhí)行一條其他指令才會(huì)響應(yīng)中斷請(qǐng)求。CPU在響應(yīng)某個(gè)中斷時(shí),先做了如下操作:

(1)保護(hù)斷點(diǎn)地址;

(2)撤除該中斷源的請(qǐng)求標(biāo)志;

(3)關(guān)閉同級(jí)中斷;

(4)將該中斷源的入口地址送給PC,程序?qū)⑥D(zhuǎn)到該程序的入口地址處運(yùn)行。

3.中斷服務(wù)

中斷服務(wù)就是中斷源請(qǐng)求CPU做的任務(wù),需要編程者用指令來實(shí)現(xiàn)。中斷服務(wù)程序的內(nèi)容包括3部分:保護(hù)現(xiàn)場(chǎng)、服務(wù)程序主體、恢復(fù)現(xiàn)場(chǎng),流程如圖所示。4.中斷返回

中斷返回與子程序的返回類似,在匯編語(yǔ)言程序中,需要執(zhí)行一條返回指令RETI。RETI指令的功能如下:

RETI; //①(SP)→PC15~8,SP-1→SP //②(SP)→PC7~0,SP-1→SP

中斷服務(wù)程序中最后執(zhí)行的指令必須是RETI,程序才能正確返回。執(zhí)行RETI指令時(shí),CPU自動(dòng)完成下面的操作:(1)恢復(fù)斷點(diǎn)地址;

(2)開放同級(jí)中斷,允許同級(jí)的其他中斷源響應(yīng)。注意:匯編語(yǔ)言在中斷服務(wù)程序中使用RETI指令返回,但在C語(yǔ)言的中斷服務(wù)程序中不使用返回語(yǔ)句,也不能返回任何數(shù)值。

4.1.3中斷處理過程4.1.4中斷響應(yīng)時(shí)間

中斷的設(shè)置是為了單片機(jī)能及時(shí)地處理隨機(jī)發(fā)生的事件,但從中斷請(qǐng)求到中斷被響應(yīng)需要一定的時(shí)間,只有在響應(yīng)的條件滿足時(shí)才能響應(yīng)。

如果在中斷請(qǐng)求階段已經(jīng)有高級(jí)中斷或同級(jí)中斷在運(yùn)行,則等待的時(shí)間主要決定于正在運(yùn)行的中斷程序的大小。需要考慮其他中斷程序?qū)Ρ局袛囗憫?yīng)速度的影響,對(duì)響應(yīng)速度要求高的中斷源可以設(shè)置為高優(yōu)先級(jí),其他中斷源設(shè)置為低優(yōu)先級(jí),高優(yōu)先級(jí)中斷源一般只設(shè)置1個(gè)。

如果沒有高級(jí)中斷或同級(jí)中斷正在運(yùn)行,則等待的時(shí)間取決于中斷請(qǐng)求時(shí)執(zhí)行的指令,如果執(zhí)行的是RETI或訪問IE、IP的指令,則需要先等這類指令執(zhí)行完畢,再執(zhí)行一條指令,只有這樣,才能響應(yīng)中斷(如果緊接的指令是乘除法指令,則等待的時(shí)間長(zhǎng)一些)。響應(yīng)中斷的時(shí)間為3~8個(gè)機(jī)器周期,一般情況下為3~4個(gè)機(jī)器周期。4.1.5C語(yǔ)言中斷程序結(jié)構(gòu)使用C語(yǔ)言編寫中斷服務(wù)程序十分簡(jiǎn)單,只需按照規(guī)定格式來編寫即可。具體格式如下:void中斷函數(shù)名(void)interrupt中斷編號(hào)[using寄存器組]{

中斷處理語(yǔ)句;

......

}

以上中斷服務(wù)程序不能有返回值,而且參數(shù)為空。其中,中斷編號(hào)根據(jù)所使用的中斷源來確定;寄存器組可以選0~3,也可以不選,由編譯器自動(dòng)分配。中斷程序處理完畢后自動(dòng)返回原斷點(diǎn)處。4.2

外部中斷的應(yīng)用4.2.1外部中斷應(yīng)用步驟1.硬件

硬件上的中斷比較簡(jiǎn)單,只需將低電平或下降沿信號(hào)加到相應(yīng)的中斷引腳上即可。用戶要做的就是通過一定的電路把按鍵、系統(tǒng)掉電、A/D轉(zhuǎn)換結(jié)束、傳感器、開關(guān)動(dòng)作等狀態(tài)轉(zhuǎn)變成有效的中斷請(qǐng)求信號(hào),并加到對(duì)應(yīng)的外部中斷的引腳上。2.軟件

外部中斷在軟件上的設(shè)計(jì)步驟可以分為3步:初始化、入口地址和服務(wù)程序。(1)初始化。外部中斷初始化內(nèi)容包括中斷觸發(fā)方式選擇、開放“中斷”和中斷優(yōu)先級(jí)設(shè)置。外部中斷有低電平觸發(fā)和下降沿觸發(fā)兩種方式,一般選用下降沿觸發(fā)方式。中斷優(yōu)先級(jí)設(shè)置是指根據(jù)實(shí)際情況,結(jié)合其他中斷源的統(tǒng)一設(shè)置。一般可以不設(shè)置,只有當(dāng)它用來處理系統(tǒng)優(yōu)先任務(wù)時(shí),才把它設(shè)置為高優(yōu)先級(jí)。(2)入口地址。CPU響應(yīng)中斷時(shí)會(huì)自動(dòng)轉(zhuǎn)移到中斷源的入口地址處運(yùn)行程序,因此在使用匯編語(yǔ)言來編寫中斷服務(wù)程序時(shí),就需要把程序放在入口地址處。采用C語(yǔ)言編程不需要入口地址,只需設(shè)置中斷編號(hào)。(3)服務(wù)程序。服務(wù)程序是具體的程序內(nèi)容,根據(jù)中斷源中斷要做的事情,編制相應(yīng)的程序。它與子程序有類似的地方,其名稱作為上面轉(zhuǎn)移指令的目的地址,在程序的最后要有RETI指令,服務(wù)程序完成后可以返回?cái)帱c(diǎn)處。4.2.2外部中斷應(yīng)用舉例【例4-1】

在LED流水燈電路的基礎(chǔ)上設(shè)計(jì)中斷接口電路,將按鍵信號(hào)轉(zhuǎn)變成外部中斷的請(qǐng)求信號(hào),如圖4-5所示。要求:按鍵每按一下,LED循環(huán)移一位。

實(shí)現(xiàn)原理分析:當(dāng)按鍵沒有被按下時(shí),P3.2引腳被上拉為高電平。在按鍵被按下的過程中,P3.2引腳有下降沿信號(hào),變?yōu)榈碗娖?。無論是低電平還是下降沿,都可以作為中斷的請(qǐng)求信號(hào)。voidsetup(void)//初始化設(shè)置子程序{LED=0xfe;

//亮燈初始信息IT0=1;

//外部中斷下降沿觸發(fā)EX0=1;

//允許外部中斷EA=1;

//允許全局中斷}voidINTEX0(void)interrupt0using1

//中斷服務(wù)程序{P1=LED;LED=LED<<1|0x01;//亮燈信息左移一位}4.2.2外部中斷應(yīng)用舉例名稱:INT1的中斷函數(shù)程序功能:實(shí)現(xiàn)9~0的遞減顯示voidINTEX1(void)interrupt2{charj;//設(shè)置有符號(hào)的變量for(j=9;j>=0;j--)//for循環(huán),共循環(huán)9次

{

display(j);//調(diào)用顯示函數(shù)

delayms(500);//延時(shí)0.5s

}}程序功能:實(shí)現(xiàn)數(shù)碼管的顯示入口參數(shù):待顯示的數(shù)字voiddisplay(unsignedcharnumber)

//顯示函數(shù){ P0=SEG[number];}【例4-2】

如圖4-6所示,系統(tǒng)上電時(shí),數(shù)碼管從0到9遞增循環(huán)顯示。當(dāng)按鍵被按下時(shí),用中斷方式控制數(shù)碼管從9到0遞減顯示一次。實(shí)現(xiàn)原理分析:在第3章的案例中已經(jīng)介紹過單個(gè)數(shù)碼管的循環(huán)遞增顯示原理,與之前不同的是,本例中的數(shù)碼管的顯示被按鍵中斷,顯示的數(shù)據(jù)有變化。這些變化的顯示可以放在中斷服務(wù)程序中實(shí)現(xiàn)。4.2.3外部中斷源的擴(kuò)展

8051單片機(jī)的外部中斷只有兩個(gè),有時(shí)會(huì)不夠用。當(dāng)有多個(gè)外部信號(hào)需要使用中斷方式工作時(shí),可以采用擴(kuò)展的方法。如圖所示。在中斷服務(wù)程序中,首先要判斷是哪個(gè)信號(hào)產(chǎn)生了中斷請(qǐng)求,可通過讀與之相連的I/O口來判斷。如果某個(gè)引腳電平為低,就是該引腳信號(hào)引起的中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論