第5章89C51的中斷系統(tǒng)_第1頁
第5章89C51的中斷系統(tǒng)_第2頁
第5章89C51的中斷系統(tǒng)_第3頁
第5章89C51的中斷系統(tǒng)_第4頁
第5章89C51的中斷系統(tǒng)_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章89C51的中斷系統(tǒng)所謂中斷,是指CPU正在處理某些事務(wù)的時候,外部又發(fā)生了某一事件,請求CPU及時處理。于是,CPU暫時中斷當(dāng)前的工作,轉(zhuǎn)而處理所發(fā)生的事件。處理完畢,再回到原來被中斷的地方,繼續(xù)原來的工作。這樣的過程,稱為中斷。5.1概述CPU處理事件的過程稱為CPU的中斷響應(yīng)過程。對事件整個處理過程稱為中斷處理(或中斷服務(wù))。能夠?qū)崿F(xiàn)中斷處理的功能部件稱為中斷系統(tǒng)。產(chǎn)生中斷請求的源稱為中斷請求源。中斷源向CPU提出的處理請求稱為中斷請求(或中斷申請)。CPU完成中斷服務(wù)程序,繼續(xù)執(zhí)行被中斷的主程序稱為中斷返回。

89C51的中斷系統(tǒng):五個中斷源兩個中斷優(yōu)先級可實現(xiàn)兩級中斷服務(wù)程序嵌套每一個中斷源可由軟件獨立地控制為允許中斷或關(guān)中斷狀態(tài);每一個中斷源的中斷級別可由軟件來設(shè)置。5.289C51中斷系統(tǒng)的結(jié)構(gòu)89C51中斷系統(tǒng)——中斷優(yōu)先級CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TISI中斷源中斷標(biāo)志位

單片機中有兩個中斷優(yōu)先級,即高優(yōu)先級中斷和低優(yōu)先級中斷,前者優(yōu)先權(quán)高于后者(可軟件設(shè)置,在程序中設(shè)置,相應(yīng)位=1,為高優(yōu)先級);同一優(yōu)先級別的中斷源按照自然優(yōu)先級順序確定優(yōu)先級別(硬件形成,無法改變)。中斷允許ESET0EX0EX1ET1EA自然優(yōu)先級高低優(yōu)先控制PSPT0PX0PX1PT189C51的中斷系統(tǒng)結(jié)構(gòu)圖中斷標(biāo)志位中斷源允許總允許中斷優(yōu)先級89C51單片機有5個中斷請求源:外部輸入中斷源INT0(P3.2),中斷請求標(biāo)志為IE0外部輸入中斷源INT1(P3.3),中斷請求標(biāo)志為IE1定時器T0的溢出,中斷請求標(biāo)志為TF0定時器T1的溢出,中斷請求標(biāo)志為TF1串行口發(fā)送或接收中斷源,中斷請求標(biāo)志為發(fā)送中斷TI或接收中斷RI5.389C51中斷請求源中斷請求源的中斷請求標(biāo)志位分別由TCON和SCON的相應(yīng)位鎖定

TCON為定時器/計數(shù)器的控制寄存器,字節(jié)地址為88H

SCON為串口控制寄存器,字節(jié)地址為98H

TCONIT0:外部中斷0的中斷觸發(fā)方式控制位。IT0=0時,外部中斷0程控為電平觸發(fā)方式。IT0=1時,外部中斷0程控為邊沿觸發(fā)方式。

TCONIE0:外部中斷0的中斷請求標(biāo)志。INT1(P3.2)當(dāng)IT0=0,CPU在每一個機器周期S5P2期間采樣外部中斷請求引腳的輸入電平。若外部中斷0請求為低電平,則使IE0置1;若為高電平,則使IE0清0當(dāng)IT0=1,如果在相繼的兩個機器周期采樣過程中,一個機器周期采樣到外部中斷0請求引腳為高電平,接著的下一個機器周期采樣到為低電平(負(fù)脈沖寬度只是保持12個時鐘周期),則使IE0置1。直到CPU響應(yīng)該中斷時,才由硬件使IE1清0例:要以中斷方式使用外部中斷0,且使用跳變沿觸發(fā)方式,可以用什么操作指令實現(xiàn)?

SETBIT0

TCONTF0:定時器0的溢出中斷標(biāo)志。T0被啟動計數(shù)后,從初值做加1計數(shù),計滿溢出后由硬件置位TF0,同時向CPU發(fā)出中斷請求,此標(biāo)志一直保持到CPU響應(yīng)中斷后才由硬件自動清0。也可由軟件查詢該標(biāo)志,并由軟件清0。當(dāng)單片機復(fù)位后,TCON被清0,則CPU關(guān)中斷,所有中斷請求被禁止。

SCONTI——串行口發(fā)送中斷請求標(biāo)志位當(dāng)CPU將一個要發(fā)送的數(shù)據(jù)寫入串行口發(fā)送緩沖器時,就啟動發(fā)送。每發(fā)送完一個串行幀,硬件使TI自動置1注意:當(dāng)CPU響應(yīng)中斷時,TI不能由硬件清0,必須由軟件清0。

SCONRI——串行口接收中斷請求標(biāo)志位當(dāng)允許串行口接收數(shù)據(jù)時,每接收完一個串行幀,硬件使RI自動置1。同樣,RI必須由軟件清0串行中斷請求由TI和RI的邏輯或得到,即無論是發(fā)送標(biāo)志TI還是接收標(biāo)志RI,都會產(chǎn)生串行中斷請求。中斷優(yōu)先級管理遵循的基本原則是:(1)低優(yōu)先級可被高優(yōu)先級中斷,反之不能(2)任何一種中斷,一旦得到響應(yīng),不會被它的同級中斷源中斷中斷系統(tǒng)內(nèi)部設(shè)置了兩個用戶不可訪問的優(yōu)先級狀態(tài)觸發(fā)器一個是高優(yōu)先級狀態(tài)觸發(fā)器,置1時表示當(dāng)前服務(wù)的中斷是高優(yōu)先級的,以阻止其他中斷申請;另一個是低優(yōu)先級狀態(tài)觸發(fā)器,置1時表示當(dāng)前服務(wù)的中斷是低優(yōu)先級的,它允許被高優(yōu)先級的中斷申請所中斷。當(dāng)系統(tǒng)復(fù)位時,IP寄存器被清0,將5個中斷源均設(shè)置為低優(yōu)先級中斷。如果同一級的幾個中斷源同時向CPU申請中斷,CPU便通過內(nèi)部硬件查詢邏輯按自然優(yōu)先級決定響應(yīng)順序。中斷控制允許寄存器IE:IE字節(jié)地址為A8H。通過對IE的編程寫入,控制CPU對中斷源的開放或禁止,以及對每一中斷源是否允許中斷。5.4中斷控制EA—CPU中斷允許總控制位。EA=1,CPU開放中斷.EA=0,CPU屏蔽所有的中斷請求,即關(guān)中斷。EX0—外部中斷0允許位;ET0—定時/計數(shù)器T0中斷允許位;EX1—外部中斷1允許位;ET1—定時/計數(shù)器T1中斷允許位;ES—串行口中斷允許位;例:要以中斷方式使用T0,可以用下面的字節(jié)操作指令:

MOVIE,#82H ;10000010B也可以用下面的位操作指令實現(xiàn):

SETBEA

SETBET0中斷優(yōu)先級寄存器IP:中斷系統(tǒng)具有兩級中斷優(yōu)先級管理。每一個中斷源均可通過對中斷優(yōu)先級寄存器IP的設(shè)置,選擇高優(yōu)先級中斷或低優(yōu)先級中斷,并可實現(xiàn)二級中斷嵌套。IP的字節(jié)地址為0B8H,通過對IP的編程,可實現(xiàn)將l個中斷源分別設(shè)置為高優(yōu)先級中斷或低優(yōu)先級中斷。5.4中斷控制PS—串行口中斷優(yōu)先級設(shè)定位。PS=1,高優(yōu)先級PS=0,低優(yōu)先級PX0—外部中斷0優(yōu)先級設(shè)定位;PT0—定時/計數(shù)器T0優(yōu)先級設(shè)定位;PX1—外部中斷1優(yōu)先級設(shè)定位;PT1—定時/計數(shù)器T1優(yōu)先級設(shè)定位;例:設(shè)置IP寄存器的初始值,使2個外中斷請求為高優(yōu)先級,其它中斷請求為低優(yōu)先級。(1)用位操作指令 SETBPX0;2個外中斷為高優(yōu)先級 SETBPX1 CLRPS;串口為低優(yōu)先級中斷 CLRPT0;2個定時器/計數(shù)器低優(yōu)先級中斷 CLRPT1(2)用字節(jié)操作指令 MOVIP,#05H 或:MOV0B8H,#05H;B8H為IP寄存器的字節(jié)地址例:假設(shè)允許外部中斷0中斷,并設(shè)定它為高級中斷,其它中斷源為低級中斷,采用跳沿觸發(fā)方式。在主程序中編寫如下程序段:SETBEA;CPU開中斷SETBET0;允許外中斷0產(chǎn)生中斷SETBPX0;外中斷0為高級中斷SETBIT0;外中斷0為跳沿觸發(fā)方式CPU響應(yīng)中斷的基本條件如下:有中斷源發(fā)出中斷申請;中斷總允許位EA=1,即CPU開放中斷;無同級或更高級的中斷正在被服務(wù);請求中斷的中斷源的中斷允許位置1,即該中斷源可以向CPU發(fā)中斷申請。5.5中斷響應(yīng)中斷響應(yīng)過程:①將相應(yīng)的優(yōu)先級狀態(tài)觸發(fā)器置1;②由硬件清除相應(yīng)的中斷請求標(biāo)志;③執(zhí)行一條由硬件生成的長調(diào)用指令LCALL。該指令將自動把斷點地址(PC值)壓入堆棧保護(hù)起來。然后將對應(yīng)的中斷入口地址送入程序計數(shù)器PC,使程序轉(zhuǎn)向該中斷入口地址去執(zhí)行中斷服務(wù)程序。中斷返回:中斷服務(wù)程序的最后一條是返回指令RETI。RETI指令的執(zhí)行標(biāo)志著中斷服務(wù)程序的結(jié)束,該指令自動將斷點地址從棧頂彈出,裝入程序計數(shù)器PC,使程序返回到被中斷的程序斷點處,繼續(xù)向下執(zhí)行。中斷響應(yīng)封鎖:CPU正在執(zhí)行同級或高一級的中斷服務(wù)程序;現(xiàn)行機器周期不是正在執(zhí)行的指令的最后一個機器周期,即現(xiàn)行指令完成前不響應(yīng)任何中斷請求;當(dāng)前正在執(zhí)行的是中斷返回指令RETI或訪問特殊功能寄存器IE或IP的指令。也就是說,在執(zhí)行RETI或是訪問IE、IP的指令后,至少需要再執(zhí)行—條其他指令,才會響應(yīng)中斷請求。若要在執(zhí)行當(dāng)前中斷程序時禁止更高優(yōu)先級中斷,可先用軟件關(guān)閉CPU中斷,或禁止某中斷源中斷,在中斷返回前再開放中斷。中斷響應(yīng)請求的撤銷:1.定時器/計數(shù)器中斷請求,自動撤銷。2.外部中斷請求撤銷(1)跳變沿外部中斷請求是自動撤銷的。(2)電平方式外部中斷請求的撤銷是需要外部電路的。3.串行口中斷請求的撤銷只能使用軟件方法撤銷。CLRTI;清TI標(biāo)志位CLRRI;清RI標(biāo)志位外部中斷響應(yīng)時間:從查詢中斷請求標(biāo)志位到轉(zhuǎn)向中斷服務(wù)入口地址所需的機器周期數(shù)。(1)最快響應(yīng)時間--以外部中斷的電平觸發(fā)為最快。從查詢中斷請求信號到中斷服務(wù)程序需要三個機器周期1個周期(查詢)+2個周期(長調(diào)用LCALL)外部中斷響應(yīng)時間:從查詢中斷請求標(biāo)志位到轉(zhuǎn)向中斷服務(wù)入口地址所需的機器周期數(shù)。在一個單一中斷的系統(tǒng)中,89C51單片機對外部中斷請求的響應(yīng)時間總是在3-8個機器周期之間(2)最長時間若當(dāng)前指令是RET、RETI和IP、IE指令,緊接著下一條是乘除指令發(fā)生,則最長為8個周期:2個周期執(zhí)行當(dāng)前指令(其中含有1個周期查詢)+4個周期乘除指令+2個周期長調(diào)用=8個周期。計算機使用TF0和外部中斷源INT0,INT0邊沿觸發(fā)方式且為高優(yōu)先級別

SETBEA;總中斷允許

SETBET0;TF0中斷允許

SETBEX0;INT0中斷允許

SETBIT0;INT0邊沿觸發(fā)方式

SETBPX0;INT0級別高SETBEA;總中斷允許SETBEX1;INT1允許SETBET1;TF1允許SETBES;TI和RI允許SETBPS;TI和RI高優(yōu)先級別SETBPT1;TF1高優(yōu)先級別SETBPX0;INT0高優(yōu)先級別則:______________________可以被響應(yīng).A.CPU正在執(zhí)行INT1中斷,TF1請求.B.CPU正在執(zhí)行TF1中斷,TI請求.C.CPU正在執(zhí)行INT1中斷,INT0請求.D.CPU正執(zhí)行主程序,TF1出現(xiàn)請求(2)設(shè)置中斷優(yōu)先級寄存器IP。(1)設(shè)置中斷允許控制寄存器IE

(4)編寫中斷服務(wù)程序,處理中斷請求。(3)對外中斷源,是采用電平觸發(fā)還是跳沿觸發(fā)。5.6中斷服務(wù)子程序的設(shè)計前3條一般放在主程序的初始化程序段中中斷服務(wù)程序設(shè)計的任務(wù):有5個中斷源,兩個中斷優(yōu)先級,可以實現(xiàn)兩級中斷服務(wù)程序嵌套。 中斷源 中斷入口地址外部中斷0/INT0 0003H定時器0T0 000BH外部中斷1/INT1 0013H定時器1T1 001BH串行口 0023H中斷源常用的主程序結(jié)構(gòu)如下: ORG0000H LJMPMAIN ORGX3X2X1X0;X3X2X1X0為某中斷源中斷入口 LJMPINT ;為某中斷源的入口標(biāo)號

? ORGY3Y2Y1Y0H;主程序入口地址MAIN:主程序INT:中斷服務(wù)程序采用中斷時的主程序結(jié)構(gòu):若有多個中斷源,則按地址由小到大排列多個中斷入口中斷服務(wù)子程序的流程:例:根據(jù)圖中中斷服務(wù)程序流程,編出中斷服務(wù)程序。假設(shè),現(xiàn)場保護(hù)只需將PSW和A的內(nèi)容壓入堆棧中保護(hù)。INT: CLREA ;CPU關(guān)中斷 PUSHPSW ;現(xiàn)場保護(hù) PUSHACC ; SETBEA ;CPU開中斷

中斷處理程序段

CLREA ;CPU關(guān)中斷 POPACC ;現(xiàn)場恢復(fù) POPPSW SETBEA ;CPU開中斷 RETI ;中斷返回,恢復(fù)斷點幾點說明:(1)現(xiàn)場保護(hù)僅涉及到PSW和A的內(nèi)容,如還有其它需保護(hù)的內(nèi)容,只需要在相應(yīng)的位置再加幾條PUSH和POP指令即可。(2)“中斷處理程序段”,應(yīng)根據(jù)任務(wù)的具體要求,來編寫。(3)如果本中斷服務(wù)程序不允許被其它的中斷所中斷??蓪ⅰ爸袛嗵幚沓绦蚨巍鼻昂蟮摹癝ETBEA”和“CLREA”兩條指令去掉。(4)中斷服務(wù)程序的最后一條指令必須是返回指令RETI。在如圖所示的電路中,用P1口輸出控制的8只發(fā)光二極管,實現(xiàn)8位二進(jìn)制計數(shù)器,對INT0上出現(xiàn)的脈沖進(jìn)行計數(shù)。脈沖產(chǎn)生電路顯示電路ORG 0000HAJMPMAIN;轉(zhuǎn)主程序ORG0003H;外中斷入口地址AJMPSER;中斷服務(wù)程序MAIN:SETBIT0;設(shè)定外中斷0為邊沿觸發(fā)SETBEX0;開外中斷0允許SETBEA;開CPU中斷允許CLRA;計數(shù)單元清0MOVP1,A;清顯示HERE:SJMP$;等待中斷SER: INCA;計數(shù)單元加1MOVP1,A;顯示RETI;中斷返回END在如圖所示的電路中,P1口輸出控制8只發(fā)光二極管以20HZ呈現(xiàn)循環(huán)燈狀態(tài),當(dāng)開關(guān)按下時,發(fā)光二極管全部熄滅0.5S,然后回到原來的狀態(tài)。ORG0000HAJMPSTORG0013HAJMPSERST:MOVSP,#40HMOVIE,#84HMOVIP,#04HMOVTCON,#04HMOVA,#01H;ACC初始化RES:MOVP1,A;顯示RLA;循環(huán)移位LCALLDEL;延時保持SJMPRES ;循環(huán)SER: PUSHACC;存當(dāng)前的ACC值 MOVP1,#00H;把二極管熄滅MOVR3,#10;保持LOOP: LCALLDELDJNZR3,LOOP POPACC;取當(dāng)前的ACC值MOVP1,ACCRETI;中斷返回DEL: MOVR1,#123;延時程序DEL1: MOVR2,#200DEL2: DJNZR2,DEL2 DJNZR1,DEL1 RET最高級別中斷請求源IR0接INT0*輸入端,其余的外部中斷請求源IR1~I(xiàn)R4用“線或”的辦法連到單片機的另一個外中斷源輸入端,同時還連到P1口。5個外部中斷源的排隊順序依此為:IR0~I(xiàn)R4。5.7多外部中斷源系統(tǒng)設(shè)計 ORG0013H ;INT1的中斷入口

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論