C51單片機的中斷_第1頁
C51單片機的中斷_第2頁
C51單片機的中斷_第3頁
C51單片機的中斷_第4頁
C51單片機的中斷_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第5章單片機的定時與中斷系統(tǒng)中斷系統(tǒng):包含中斷源、中斷方式、中斷控制寄存器、中斷響應和中斷請求的撤除。本章主要內容定時/計數器:包含定時/計數器的定時和計數功能、定時/計數器的控制寄存器、工作方式及其應用。單片機在某一時刻只能處理一個任務,當多個任務同時要求單片機處理時,這一要求應該怎么實現呢?通過中斷可以實現多個任務的資源共享。

MCS-51的中斷系統(tǒng)看書電話鈴響接電話繼續(xù)看書中斷響應中斷返回中斷請求中斷的基本概念主程序斷點執(zhí)行中斷服務(或處理)子程序繼續(xù)執(zhí)行程序中斷響應中斷返回中斷請求中斷的基本概念所謂的中斷就是,當CPU正在處理某項事務的時候,如果外界或者內部發(fā)生了緊急事件,要求CPU暫停正在處理工作而去處理這個緊急事件,待處理完后,再回到原來中斷的地方,繼續(xù)執(zhí)行原來被中斷的程序,這個過程稱作中斷。中斷的定義實現這種功能的部件稱為中斷系統(tǒng)(中斷機構)。產生中斷的請求源稱為中斷源。中斷過程中又有中斷發(fā)生稱為中斷嵌套。中斷執(zhí)行的程序稱為中斷服務子程序。中斷功能強弱是計算機性能優(yōu)劣的重要標志提高CPU效率解決速度矛盾實現并行工作實時處理應付突發(fā)事件……中斷源是指在計算機系統(tǒng)中向CPU發(fā)出中斷請求的來源。

MCS-51的中斷系統(tǒng)——中斷源8051單片機有5個中斷源:外部中斷源:外部中斷0(INT0)外部中斷1(INT1)內部中斷源:定時/計數中斷0(T0)定時/計數中斷1(T1)串行中斷

1.外部中斷源

外部中斷0(INT0):來自引腳P3.2

外部中斷1(INT1):來自引腳P3.3外部中斷請求兩種方式:電平觸發(fā)方式(低電平有效)下降沿觸發(fā)方式(脈沖的下降沿有效,至少要維持一個機器周期)

2.內部中斷源定時/計數中斷0(T0):定時/計數發(fā)生溢出時,產生中斷請求。定時/計數中斷1(T1):定時/計數發(fā)生溢出時,產生中斷請求。

串行中斷:為完成串行數據傳送而設置。單片機完成接受或發(fā)送一組數據時,產生中斷請求。說明:外部中斷源中斷請求需設置,而內部中斷源中斷請求不需設置,

自動產生。

MCS-51的中斷系統(tǒng)——中斷標志CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TIRI中斷源中斷標志位每一個中斷源都有相應的中斷標志位;某一個中斷源申請中斷,相應中斷標志位置1。

MCS-51的中斷系統(tǒng)——中斷允許CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TIRI中斷源中斷標志位

EA——總中斷允許位,EA=1開放所有中斷,EA=0,禁止所有中斷;某一個中斷源還有相應的中斷允許位,1允許相應中斷源的中斷,0禁止相應中斷源的中斷。中斷允許ESET0EX0EX1ET1EA

MCS-51的中斷系統(tǒng)——中斷優(yōu)先級CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TISI中斷源中斷標志位

單片機中有兩個中斷優(yōu)先級,即高優(yōu)先級中斷和低優(yōu)先級中斷,前者優(yōu)先權高于后者(在程序中設置,相應位=1,為高優(yōu)先級);同一優(yōu)先級別的中斷源按照自然優(yōu)先級順序確定優(yōu)先級別(硬件形成,無法改變)。中斷允許ESET0EX0EX1ET1EA自然優(yōu)先級高低優(yōu)先控制PSPT0PX0PX1PT1IE0TCONSCONINT0IT0=0IT0=1INT1IT1=0IT1=1TF0IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然優(yōu)先級矢量地址高級中斷請求自然優(yōu)先級矢量地址低級中斷請求PX0PT0PX1PT1PSIEIPMCS-51的中斷系統(tǒng)結構圖中斷標志位中斷源允許總允許中斷優(yōu)先級表5.18051中斷源定時器控制寄存器(TCON)串行口控制寄存器(SCON)中斷允許控制寄存器(IE)中斷優(yōu)先級控制寄存器(IP)中斷控制寄存器(4個):TF1

TF0

IE1IT1IE0IT0TCONT1溢出中斷標志(TCON.7):T1啟動計數后,計滿溢出由硬件置位TF1=1,向CPU請求中斷,此標志一直保持到CPU響應中斷后,才由硬件自動清0。也可用軟件查詢該標志,并由軟件清0。765432101.定時器控制寄存器(TCON)計數溢出標志位的使用有兩種情況:采用中斷方式時,作中斷請求標志位來使用;采用查詢方式時,作查詢狀態(tài)位來使用。TF1

TF0

IE1IT1IE0IT0TCON88H外部中斷INT1中斷標志位(TCON.3):IE1=1,外部中斷1向CPU申請中斷外部中斷INT1觸發(fā)方式控制位(TCON.2):

IT1=0,電平觸發(fā)方式

IT1=1,下降沿觸發(fā)方式76543210IE0和IE1——外中斷請求標志位

當CPU采樣到INT0(或INT1)端出現有效中斷請求時,IE0(或IE1)位由硬件置“1”。當中斷響應完成轉向中斷服務程序時,由硬件把IE0(或IE1)清零。

返回

TI(SCON.1)——串行發(fā)送中斷標志。

RI(SCON.0)——串行接收中斷標志。

TIRISCON98H76543210注意:該寄存器可以位尋址。2.SCON寄存器

TI——串行口發(fā)送中斷請求標志位當發(fā)送完一幀串行數據后,由硬件置“1”;在轉向中斷服務程序后,用軟件清“0”。

RI——串行口接收中斷請求標志位當接收完一幀串行數據后,由硬件置“1”;在轉向中斷服務程序后,用軟件清“0”。

串行中斷請求由TI和RI的邏輯或得到。其中與中斷有關的控制位共2位:

IEA8H

EA

ESET1EX1ET0EX0例:允許定時器T0中斷:SETBEASETBET0或MOVIE,#82H76543210(3)中斷允許寄存器IE(4)中斷優(yōu)先級控制寄存器(IP)MCS-51有兩個優(yōu)先級,1為高,0為低字節(jié)地址:B8H位地址:0BFH~0B8H

51單片機有兩個中斷優(yōu)先級——高級和低級專用寄存器IP為中斷優(yōu)先級寄存器,用戶可用軟件設定相應位為1,對應的中斷源被設置為高優(yōu)先級,相應位為0,對應的中斷源被設置為低優(yōu)先級系統(tǒng)復位時,均為低優(yōu)先級

PSPT1PX1PT0PX0

IPB8H

76543210對同時發(fā)生多個中斷申請時:?不同優(yōu)先級的中斷同時申請(很難遇到)——先高后低?相同優(yōu)先級的中斷同時申請(很難遇到)——按序執(zhí)行?正處理低優(yōu)先級中斷又接到高級別中斷——高打斷低?正處理高優(yōu)先級中斷又接到低級別中斷——高不理低中斷優(yōu)先級處理原則自然優(yōu)先級:INT0高T0INT1T1RI/TI低CPU正在執(zhí)行低中斷源高中斷源RETIRETI中斷控制寄存器匯總例如,某軟件中對寄存器IE、IP設置如下:MOVIE,#00HMOVIE,#8FH(10001111B)MOVIP,#06H(00000110B)SETBEA;SETBEX0;SETBET0;SETBEX1;SETBET1;CLRES中斷設計舉例則此時該系統(tǒng)中:CPU中斷允許;允許外部中斷0、外部中斷1、定時器/計數器0、定時器/計數器1提出的中斷申請;允許中斷源的中斷優(yōu)先次序為:

定時器/計數器0>外部中斷1>外部中斷0>定時器/計數器1。在中斷服務程序編程時,首先要對中斷系統(tǒng)進行初始化,也就是對幾個特殊功能寄存器的有關控制位進行賦值。初始化的內容包括:(1)開總中斷和相應中斷源的中斷(2)設置所用中斷源的優(yōu)先級;(3)若是外部中斷,則應規(guī)定是低電平觸發(fā)還是下降沿觸發(fā)。中斷初始化例1:若規(guī)定外部中斷1為電平觸發(fā)方式,高優(yōu)先級,試寫出有關的初始化程序。SETBEA;開中斷SETBEX1;允許外中斷1中斷SETBPX1;外中斷1定為高優(yōu)先級CLRIT1;電平觸發(fā)例2:使用外部中斷0(INT0)和外部中斷1(INT1),INT1為高優(yōu)先級,電平觸發(fā)方式,INT0為低優(yōu)先級,下降沿觸發(fā)方式。

則初始化程序如下:MOVIP,#04HMOVTCON,#01HMOV IE,#85HMOVIP,#04HMOVTCON,#01HSETBEA SETBEX0SETBEX1或使用位操作指令如下:中斷處理過程中斷處理過程分為三個階段:中斷響應、中斷處理和中斷返回。

中斷響應中斷處理(又稱中斷服務)

中斷返回中斷請求的撤除

中斷響應中斷返回中斷響應條件:?有中斷源發(fā)出中斷請求。?中斷總允許位EA=1。?申請中斷的中斷源允許。滿足以上基本條件,CPU一般會響應中斷。a.CPU正在響應同級或高優(yōu)先級的中斷。b.當前指令未執(zhí)行完。c.正在執(zhí)行RETI中斷返回指令或訪問專用寄存器IE和IP的指令。但若有下列任何一種情況存在,則中斷響應會受到阻斷。一、中斷響應過程CPU在每個機器周期的S5P2期間采樣中斷請求信號。1.采樣:如果有中斷請求,將中斷請求信號鎖定到相應的請求標志位(TCON中)。2.鎖定:TF1

TF0

IE1IT1IE0IT0在S6P2狀態(tài)按一定的順序(INT0、T0、INT1、T1、RI/TI)查詢請求標志,并將有效的中斷請求按優(yōu)先級次序排好。3.查詢:如果查詢到某標志位為“1”(在TCON中),硬件自動產生一條LCALL指令,轉到相應的中斷入口地址(也稱中斷向量或中斷矢量)。4.產生LCALL指令:程序存儲器ROM0000H:復位后,程序的入口地址(PC=0000H)0023H:串行口中斷入口0003H:外部中斷0入口000BH:定時器0溢出中斷入口0013H:外部中斷1入口001BH:定時器1溢出中斷入口002AH使用時,通常在這些入口地址處存放一條跳轉指令,使程序跳轉到用戶安排的中斷服務子程序起始地址上去!中斷源入口地址INT00003HT0000BHINT10013HT1001BHRI/TI0023H特別注意:這些工作是硬件自動完成的!

如:ORG 0003H LJMP INTT0 INTT0: 中斷服務子程序RETI5.中斷入口地址安排跳轉指令:二、中斷處理中斷服務程序從中斷子程序入口地址開始執(zhí)行,直到返回指令RETI為止,這個過程稱為中斷處理(或中斷服務)。中斷服務子程序一般包括兩部分內容,一是保護和恢復現場,二是處理中斷源的請求。中斷響應入口地址RETI中斷處理INTT0:PUSHACC PUSHDPHPUSHDPLPUSHPSW 中斷源服務POPPSWPOPDPLPOPDPHPOPACCRETI保護現場恢復現場三、中斷返回中斷返回是指中斷服務完后,計算機返回到原來暫停的位置(即斷點),繼續(xù)執(zhí)行原來的程序。中斷返回由專門的中斷返回指令RETI來實現。中斷響應中斷返回

RETI指令功能:把斷點地址取出,送回到程序計數器PC中去。另外,它還通知中斷系統(tǒng)已完成中斷處理,將清除優(yōu)先級狀態(tài)觸發(fā)器。特別注意:不能用RET指令代替RETI指令!中斷響應中斷返回程序存儲器ROM0000H:復位后,程序的入口地址(PC=0000H)0023H:串行口中斷入口0003H:外部中斷0入口000BH:定時器0溢出中斷入口0013H:外部中斷1入口001BH:定時器1溢出中斷入口002AH包含T0中斷服務子程序的程序結構:

ORG0000H AJMPMAIN

ORG000BH AJMPINTT0

ORG0100HMAIN:...INTT0:...RETIENDAJMPMAINAJMPINTT0中斷請求的撤銷外中斷包括:邊沿觸發(fā)方式和電平觸發(fā)方式一、外部中斷的撤銷1.邊沿觸發(fā)方式(自動撤銷)中斷響應完由硬件自動將中斷標志位(IE0或IE1)清0。電平觸發(fā)外部中斷撤除方法較復雜。因為在電平觸發(fā)方式中,CPU響應中斷時不會自動清除IE1或IE0標志,所以在響應中斷后應立即撤除INT0或INT1引腳上的低電平。在硬件上,CPU對INT0和INT1引腳的信號不能控制,所以這個問題要通過硬件,再配合軟件來解決。2.電平觸發(fā)方式圖撤除外部中斷請求的電路當CPU響應中斷后,可在中斷服務程序中采用兩條指令:CLRP1.0SETBP1.0(或ANLP1,#0FEH ORL P1,#01H)來撤除外部中斷請求。即:定時中斷標志位(TF0或TF1)清0(中斷響應完由硬件自動清0。)二、定時中斷的撤銷(自動撤銷)即:串行中斷標志位(TI或RI)清0。三、串行中斷的撤銷中斷響應后,還需測試這兩個標志位的狀態(tài),以判定是接收操作還是發(fā)送操作,然后才能清除。串行中斷請求的撤銷使用軟件方法,在中斷服務子程序中進行。在中斷服務程序編程時,首先要對中斷系統(tǒng)進行初始化,也就是對幾個特殊功能寄存器的有關控制位進行賦值。具體來說,就是要完成下列工作:(1)開中斷和允許中斷源中斷(2)確定各中斷源的優(yōu)先級;(3)若是外部中斷,則應規(guī)定是電平觸發(fā)還是邊沿觸發(fā)。中斷程序舉例例1:若規(guī)定外部中斷1為邊沿觸發(fā)方式,在中斷服務程序中將寄存器B的內容左環(huán)移一位。試編寫主程序與中斷服務程序。ORG0000HLJMPMAINORG0013HLJMPINTT1;中斷服務程序轉至INTT1處MAIN:SETBEA;開中斷SETBEX1;允許外中斷1中斷SETBIT1;邊沿觸發(fā)MOVB,#0FEH;設B的初值SJMP$;暫停等待中斷INTT1:MOVA,B;A←BRLA;左環(huán)移一位MOVB,A;回送

(MOVP1,A);輸出到P1口RETI;中斷返回此例的實際意義:在INT1引腳接一個脈沖按鈕,每按一下按鈕就申請一次中斷,中斷服務則是:依次點亮八盞燈中的一盞。P1.0P1.7INT1300 ORG 0000HAJMPMAIN ORG0003HLJMPINTT0 ORG0013HLJMPINTT1例2:當外中斷0響應時,由P1.2口輸出點亮燈,當外中斷1響應時,由P1.2口輸出熄滅燈。 ORG 0030HMAIN:SETB EA SETB EX0SETBEX1 SETB IT0 SETBIT1SJMP $INTT0: CLRP1.2RETIINTT1: SETBP1.2RETI END ORG 0000HAJMPMAIN ORG0003HLJMPINTT0 ORG0013HLJMPINTT1例3:無中斷時,燈全亮,當外中斷0響應時,低四位燈亮,當外中斷1響應時,高四位燈亮。 ORG 0030HMAIN: MOV SP,#60H MOV P1,#00H SETB EA SETB EX0SETBEX1 SETB IT0 SETBIT1SJMP $INTT0: PUSH P1 MOV P1,#0F0H POP P1RETIINTT1:PUSHP1MOV P1,#0FH POPP1 RETI END1.無中斷時,燈循環(huán)亮,當外中斷0響應時,低四位燈亮,當外中斷1響應時,高四位燈亮。思考: ORG 0000HAJMPMAIN ORG0003HLJMPINTT0 ORG0013HLJMPINTT1 ORG 0100HMAIN:MOV P1,#FEH MOV R7,#07H MOV SP,#60HLOOP:MOVA,P1RLAMOVP1,A DJNZR7,LOOP

SETB IT0 SETB EA SETB EX0SETBEX1 SJMP $ ORG 1000HINTT0: PUSH P1 MOV P1,#0F0H ACALLDELAYPOP P1RETI INTT1:PUSHP1MOV P1,#0FH ACALLDELAY POPP1 RETI END注明:DELAY為延時程序。2.無中斷時,奇偶燈每隔1S交替閃爍亮,當外中斷0響應時,低四位燈亮,當外中

溫馨提示

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

評論

0/150

提交評論