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

下載本文檔

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

文檔簡介

單片機原理與應用

Principle&ApplicationofMCU

第5章I80C51單片機的中斷系統(tǒng)1教學內(nèi)容和要求教學內(nèi)容中斷的概念80C51單片機的中斷系統(tǒng)中斷源、中斷控制、中斷向量、中斷響應、中斷服務子程序中斷系統(tǒng)編程應用舉例教學要求掌握80C51單片機中斷控制掌握80C51的中斷的響應過程熟悉中斷服務程序的編程方法2什么是中斷在CPU執(zhí)行程序過程中,由于CPU內(nèi)部或者外部某種隨機事件的發(fā)生,強迫CPU暫時停止正在執(zhí)行的程序而轉(zhuǎn)向?qū)Πl(fā)生的事件進行處理,事件處理結(jié)束后又能回到原來中止的程序,接著中止前的狀態(tài)繼續(xù)執(zhí)行原來的程序,這一過程稱為中斷。3執(zhí)行主程序主程序繼續(xù)執(zhí)行主程序斷點中斷請求中斷響應執(zhí)行中斷處理程序中斷返回中斷方式(CPU被動)580C51中斷系統(tǒng)控制邏輯圖中斷源中斷標志位中斷優(yōu)先級中斷允許外中斷觸發(fā)方式中斷控制及相關寄存器中斷控制的內(nèi)容共3項:外中斷觸發(fā)方式控制中斷允許控制中斷優(yōu)先級控制有4個相關寄存器,包括定時器控制寄存器 TCON串行控制寄存器 SCON中斷允許寄存器 IE中斷優(yōu)先級寄存器 IP6包括了中斷標志位和外中斷觸發(fā)方式控制位。位于內(nèi)部RAM的88H,位地址為8FH-88H。位地址8FH8EH8DH8CH8BH8AH89H88H位符號TF1TR1TF0TR0IE1IT1IE0IT0定時器控制寄存器

TCON(TimerControl)7TCON的位定義TF0和TF1——定時器(T0和T1)計數(shù)溢出標志位。當計數(shù)器產(chǎn)生計數(shù)溢出時,相應的溢出標志位由硬件置1,產(chǎn)生定時中斷請求。此外,這兩位也可以作為狀態(tài)位供查詢使用。IE0和IE1——外部中斷請求標志位。當CPU采樣到INT0(或INT1)端出現(xiàn)中斷請求信號時,對應位由硬件置1,即保存外部中斷請求。在中斷響應完成后轉(zhuǎn)向中斷服務時,再由硬件自動清0。IT0和IT1——外中斷觸發(fā)方式控制位。因為外中中斷請求有電平和脈沖兩種信號方式。8位地址9FH9EH9DH9CH9BH9AH99H99H位符號SM0SM1SM2RENTB8RB8TIRI包括了串行中斷標志位。位于內(nèi)部RAM的98H,位地址為9FH-98H。串行口控制寄存器

SCON(SerialPortControl)9SCON的位定義TI發(fā)送中斷標志位。當串行口發(fā)送完一幀數(shù)據(jù),該標志置“1”,CPU響應串行口中斷后內(nèi)部硬件不清除,必須通過軟件清“0”。RI接收中斷標志位。當串行口接收完一幀數(shù)據(jù),該標志置“1”,CPU響應串行口中斷后內(nèi)部硬件不清除,必須通過軟件清“0”。

10中斷請求的撤銷中斷響應后,中斷源的中斷請求及其標志位應及時清除,否則就意味著中斷請求仍然存在,造成中斷的重復響應。定時中斷請求的撤銷定時中斷響應后,硬件自動把標志位(TF0或TF1)清“0”,定時器的中斷請求也不存在了,因此,定時中斷的中斷請求是自動撤銷的,不需要用戶干預。串行中斷軟件撤銷串行中斷響應后中斷標志不進行自動清“0”。在中斷服務子程序中,測試TI和RI的狀態(tài)判定是接收操作還是發(fā)送操作之后,用軟件清除TI和RI。11外部中斷請求的撤銷中斷標志位置“0”中斷響應后由硬件電路自動完成中斷標志位清0。外中斷請求信號的撤銷脈沖方式中的脈沖信號過后就消失了,也可以說中斷請求信號是自動撤銷的。電平方式的低電平很可能繼續(xù)存在,必須把/INT0和/INT1引腳從低電平強制改為高電平,這需要外加硬件電路來實現(xiàn)。12位地址AFH--ACHABHAAHA9HA8H位符號EA--ESET1EX1ET0EX0中斷允許寄存器

IE(InterruptEnable)用于控制是否允許使用中斷。位于內(nèi)部RAM的A8H,位地址為AFH-A8H。13IE的位定義EA——中斷允許總控制位EA=0,中斷總禁止,禁止所中斷EA=1,中斷總允許,其后中斷的禁止或允許由各類中斷自行設置。EX0和EX1——外部中斷允許控制位EX0(EX1)=0,禁止外部中斷0(1)。EX0(EX1)=1,允許外部中斷0(1)。ET0和ET1——定時器中斷允許控制位ET0(ET1)=0,禁止定時器中斷0(1)。ET0(ET1)=1,允許定時器中斷0(1)。ES——串行中斷允許控制位ES=0,禁止串行中斷。ES=1,允許串行中斷。14用于控制各中斷的優(yōu)先級。位于內(nèi)部RAM的B8H,位地址為BFH-B8H位地址BFHBEHBDHBCHBBHBAHB9HB8H位符號---PSPT1PX1PT0PX0中斷優(yōu)先級控制寄存器

IP(InterruptPriority)15IP的位定義PX0、PX1——外部中斷0/1優(yōu)先級設定位。PT0、PT1——定時器0/1中斷優(yōu)先級設定位。PS——串行中斷優(yōu)先級設定位。0低優(yōu)先級1高優(yōu)先級16【例】中斷優(yōu)先級。假設IP=06H,如果5個中斷同時產(chǎn)生,中斷響應的次序是怎樣?06H即00000110,因此,INT1和T0被設置為高優(yōu)先級中斷,其他3個中斷為低優(yōu)先級中斷。同級優(yōu)先級按硬件查詢順序來排隊。對于兩個高優(yōu)先級中斷,按硬件查詢次序進行排隊(T0,INT1)。剩下的3個低級中斷按硬件查詢次序進行排隊(INT0,T1,串行口中斷)。INT0T0INT1T1串行口中斷RI/TI17中斷響應過程18中斷請求(中斷請求采樣S5P2中斷查詢S6)中斷響應S1中斷服務外部中斷外部中斷請求引入端:引腳INT0/P3.2和INT1/P3.3。兩種觸發(fā)方式:電平方式:低電平有效脈沖方式:下降沿有效觸發(fā)方式定義位:IT0和IT1定義。19外部中斷請求采樣外部中斷來自單片機芯片外部,只有通過采樣才知道是否有中斷請求信號到來采樣是在每個機器周期的S5P2對引腳INT0(P3.2)和INT1(P3.3)采集到有效的中斷請求信號,將IE0或IE1置120外部中斷的中斷請求通過CPU對于引腳采樣得到的電平方式:采樣到低電平即為有效的中斷請求;脈沖方式:若兩個相鄰機器周期的采樣結(jié)果為先高電平后低電平,則為有效的中斷請求信號。21定時器中斷、串行中斷定時器中斷是為滿足定時或計數(shù)的需要而設置的。當計數(shù)器溢出時,表明定時時間到或計數(shù)值滿,這時內(nèi)部電路就產(chǎn)生中斷請求,記錄在TF0和TF1。串行中斷是為串行數(shù)據(jù)傳送而設置的。每當串行口發(fā)送或接收完一幀串行數(shù)據(jù)時,就產(chǎn)生相應的中斷請求,記錄在TI和RI。定時中斷和串行中斷的中斷請求就發(fā)生在芯片內(nèi)部,若有中斷發(fā)生硬件把相應的標志位直接置位。22中斷允許實行兩級控制1、中斷系統(tǒng)總控制當總控制位EA=0,關閉中斷系統(tǒng),整個系統(tǒng)處于中斷禁止狀態(tài),即使各分類中斷是允許的也不管用;只有當EA=1時,開放中斷系統(tǒng),這時才能由各分類中斷控制位控制各類中斷允許和禁止.2、各類中斷單個控制ESET1EX1ET0EX0為1允許中斷為0禁止中斷23中斷查詢中斷查詢是由CPU逐個檢測各中斷標志位的狀態(tài),以確定是否有中斷請求發(fā)生。在每一個機器周期的最后一個狀態(tài)S6進行查詢的,查詢按優(yōu)先級順序進行。先高級中斷后低級中斷同級按“外部中斷0、定時器0中斷、外部中斷1、定時器1中斷、串行中斷”的順序進行。如果查詢到有標志位為1,則表明有中斷請求發(fā)生,接著從相鄰的下一個機器周期的S1狀態(tài)開始進行中斷響應。24主程序中的中斷初始化51系列單片機復位后,(IE)=00H、(IP)=00H、(SP)=07H、(TCON)=00H,所以是否允許發(fā)生中斷以及如何發(fā)生,還需要在主程序中預先設置,也就是進行中斷初始化。中斷初始化的內(nèi)容包括:設置堆棧指針SP外部中斷觸發(fā)方式設置(TCON中的IT0IT1)中斷優(yōu)先級設置(IP中的PX0PT0PX1PT1PS)中斷允許設置(IE中的EAEX0ET0EX1ET1ES)25 ORG0000H LJMPMAIN ORG0003H LJMPINT0 ORG0030HMAIN:

MOVSP,#30H ;設置堆棧指針SP SETBIT0 ;外部中斷觸發(fā)方式MOVTCON,#01H SETBPX0 ;中斷優(yōu)先級設置MOVIP,#01H SETBEX0 ;各中斷允許設置MOVIE,#81H SETBEA ;中斷系統(tǒng)總開放

… ORG2000HINT0: … ;外部中斷0服務子程序 RETI

26中斷響應條件產(chǎn)生中斷請求、中斷允許,且1、沒有在同級或高級的中斷服務中。2、查詢中斷請求的機器周期是當前指令的最后一個機器周期。3、如果當前指令是返回指令(RET、RETI)或訪問IE、IP的指令,則在執(zhí)行完這些指令之后,還應繼續(xù)執(zhí)行一條指令,然后才能響應中斷。80C51對中斷查詢的結(jié)果不作記憶,由于上述這些原因而拖延的查詢結(jié)果將不復存在。271)當高、低優(yōu)先級中斷請求同時出現(xiàn)時,高優(yōu)先級中斷請求被響應。由軟件控制,即由中斷優(yōu)先級寄存器IP的某一位狀態(tài)為1或0決定相應的中斷源為高優(yōu)先級或低優(yōu)先級。2)如果同級的多個中斷請求同時出現(xiàn)則按CPU查詢次序確定哪個中斷請求被響應。內(nèi)部硬件查詢電路規(guī)定為:中斷優(yōu)先級在中斷響應時的體現(xiàn)INT0T0INT1T1串行口中斷RI/TI28中斷優(yōu)先級在中斷嵌套的體現(xiàn)把正在進行的中斷服務暫停下來,而轉(zhuǎn)去進行優(yōu)先級高的中斷服務,這就是中斷嵌套。高優(yōu)先級中斷請求可以打斷低優(yōu)先級的中斷服務,進行中斷嵌套;同優(yōu)先級的中斷不能嵌套;低優(yōu)先級中斷請求不能對高優(yōu)先級的中斷進行嵌套。29中斷響應中斷響應的主要內(nèi)容是由硬件自動生成一個長調(diào)用指令,指令格式為“LCALLaddr16”。Addr16是程序存儲器中斷區(qū)中各中斷的入口地址,即中斷向量。優(yōu)先級觸發(fā)器被置位。生成LCALL指令后,緊接著由CPU執(zhí)行。先將程序計數(shù)器PC的內(nèi)容壓入堆棧以保護斷點,再將中斷入口地址裝入PC,使程序執(zhí)行轉(zhuǎn)向相應的中斷區(qū)入口地址。【例】對于外部中斷0的響應,產(chǎn)生的長調(diào)用指令為LCALL0003H30中斷向量中斷向量是程序存儲器的一個地址,表明中斷的服務程序從這里開始存放。中斷發(fā)生后,要通過它引導CPU轉(zhuǎn)向相應中斷服務。正因為它具有指向性,所以稱其為中斷向量。中斷名稱中斷向量外部中斷00003H定時器0中斷000BH外部中斷10013H定時器1中斷001BH串行發(fā)送中斷、串行接收中斷0023H31注意串行中斷請求由RI和TI的邏輯或得到,也就是說,無論是發(fā)送標志還是接收標志,都會產(chǎn)生中斷請求。

RI和TI的中斷入口都是0023H,所以CPU響應后轉(zhuǎn)入0023H開始執(zhí)行服務程序,首先必須判斷是RI中斷還是TI中斷,然后進行相應服務。32中斷服務子程序的起始地址兩個中斷向量之間只有8個單元。所以,通常在中斷向量處寫無條件跳轉(zhuǎn)指令,這樣就可以把實際處理中斷的程序放在ROM的任何一個位置。33 ORG0000H LJMPMAIN

ORG0003H LJMPINT0 ORG0030HMAIN: … … …

ORG2000HINT0: …

END中斷服務子程序流程圖34開中斷和關中斷在一個多中斷源的系統(tǒng)中,為了保證重要中斷能執(zhí)行到底,不被其他中斷所嵌套,可以設定高優(yōu)先級,或關中斷:即在現(xiàn)場保護之前先關閉中斷系統(tǒng)EA=0,徹底屏蔽其他中斷,待中斷處理完成后再打開中斷系統(tǒng)EA=1。即使中斷處理可以被嵌套,但現(xiàn)場保護和恢復不允許打擾,以免影響現(xiàn)場保護和恢復工作。為此在現(xiàn)場保護和恢復程序段的前后進行開、關中斷。這樣做可以在除現(xiàn)場保護和現(xiàn)場恢復的片刻外,仍然為系統(tǒng)保留中斷嵌套功能。35保護現(xiàn)場和恢復現(xiàn)場所謂現(xiàn)場就是指中斷時刻單片機中存儲單元內(nèi)的數(shù)據(jù)或狀態(tài)。保護現(xiàn)場:為了使中斷服務子程序的執(zhí)行不破壞這些數(shù)據(jù)或狀態(tài),就要把它們送入堆棧中保存起來,以免在中斷返回后影響主程序的運行?,F(xiàn)場保護一定要完成于中斷處理程序之前?;謴同F(xiàn)場:中斷服務結(jié)束后,在返回主程序之前,應把保存的現(xiàn)場內(nèi)容從堆棧中彈出,以恢復相關存儲單元的原有內(nèi)容。現(xiàn)場恢復一定在要中斷處理程序之后進行。要保護哪些現(xiàn)場內(nèi)容由用戶根據(jù)中斷處理子程序所使用的資源來決定。PUSHdirectPOPdirect36中斷返回中斷服務子程序的最后一條指令必須是中斷返回指令。當CPU執(zhí)行該指令時,將“優(yōu)先級”觸發(fā)器復位從堆棧棧頂彈出斷點地址送PC,從而返回主程序。注意:若用戶在中斷服務子程序中進行了壓棧操作,則在RETI指令前必須進行相應的彈棧操作,以保證正常返回。在中斷服務子程序中,PUSH指令與POP指令必須成對使用,否則就不能返回斷點。RETI37 ORG2000HINT0:

CLREA ;關中斷

PUSHPSW ;保護現(xiàn)場

PUSHACC ; SETBEA ;開中斷

MOVA,#02H ;中斷服務

CLREA ;關中斷

POPACC ;恢復現(xiàn)場

POPPSW SETBEA ;開中斷

RETI ;中斷返回

END38中斷編程注意事項中斷的起始地址處放入無條件跳轉(zhuǎn)指令。中斷初始化。視需要確定是否需要保護現(xiàn)場、關中斷。及時清除不能被硬件清除的串行中斷標志位和外中斷電平信號,以免產(chǎn)生錯誤。壓棧和出棧指令必須成對使用,以確保中斷服務子程序的正確返回。39主程序中斷服務子程序中斷編程舉例[例]擴展外部中斷源。利用中斷實現(xiàn)多個故障的LED報警顯示。顯示:無故障時,故障信號源輸入端為低電平;出現(xiàn)故障時,相應的故障信號輸入端變?yōu)楦唠娖?。要求編程實現(xiàn):無故障時,對應指示燈熄滅;有故障時,對應的指示燈點亮。41 ORG0000H ;上電復位后,轉(zhuǎn)主程序

AJMP

MAIN

ORG

0003H ;外部中斷0的中斷向量

AJMP

EXINT0 ;轉(zhuǎn)中斷服務子程序

ORG0030HMAIN:

SETB

IT0 ;外部中斷INT0為邊沿觸發(fā)方式

SETB

EX0 ;允許INT0中斷

SETB

EA ;CPU開中斷HERE: SJMP

$ ;等待中斷42EXINT0: MOV

P1,#0FFH

;全部指示燈滅,并為讀入故障信號作準備 JNB

P1.0,L1;P1.0無故障

CLR

P1.1 ;P1.0為1,表明有故障,p1.1亮

SJMP

L2L1: SETB

P1.1 ;p1.1滅L2: JNB

P1.2,L3 CLR

P1.3 ;實現(xiàn)故障顯示,p1.3亮

SJMP

L4L3: SETB

P1.3 ;p1.3滅L4: JNB

P1.4,L5 CLR

P1.5 ;實現(xiàn)故障顯示,p1.5亮

SJMP

L6L5: SETB

P1.5 ;p1.3滅L6: JNB

P1.6,L7 CLR

P1.7 ;實現(xiàn)故障顯示,p1.7亮

SJMP

L8L7: SETB

P1.7 ;p1.7滅L8: RETI43【例】單片機數(shù)據(jù)傳輸。

外設數(shù)據(jù)經(jīng)P1口輸入單片機,每準備好一個數(shù)據(jù),外設發(fā)出選通信號,經(jīng)觸發(fā)器和非門至INT0。P1口P3.0QDCLKCLR選通信號+5V1INT0數(shù)據(jù)803144數(shù)據(jù)傳送過程:外設每準備好一個數(shù)據(jù)后,發(fā)出選通信號,使觸發(fā)器輸出1再經(jīng)非門得0至INT0,向CPU發(fā)出中斷請求,CPU響應這個中斷請求后,在中斷處理程序中先撤除中斷請求信號,(通過P3.0=0,使INT0=1)再由P1口輸入數(shù)據(jù)到單片機內(nèi)部。P1口P3.0QDCLKCLR選通信號+5V1INT0數(shù)據(jù)803145程序清單:ORG0000HSTART:LJMPMAINORG0003HLJMPIINT0ORG0030H;主程序MAIN:C

溫馨提示

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

評論

0/150

提交評論