第4章 單片機(jī)的中斷系統(tǒng).ppt_第1頁
第4章 單片機(jī)的中斷系統(tǒng).ppt_第2頁
第4章 單片機(jī)的中斷系統(tǒng).ppt_第3頁
第4章 單片機(jī)的中斷系統(tǒng).ppt_第4頁
第4章 單片機(jī)的中斷系統(tǒng).ppt_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章單片機(jī)的中斷系統(tǒng),單片機(jī)原理、接口及應(yīng)用,MCS-51單片機(jī)的中斷系統(tǒng)中斷的基本概念中斷的系統(tǒng)結(jié)構(gòu)中斷的響應(yīng)過程中斷的的應(yīng)用編程小結(jié),內(nèi)容提要,4.1.1中斷技術(shù)的概念在CPU和外設(shè)交換信息時,存在著快速CPU和慢速外設(shè)間的矛盾,機(jī)器內(nèi)部有時也可能出現(xiàn)突發(fā)事件,為此,計算機(jī)中通常采用中斷技術(shù)。中斷CPU和外設(shè)并行工作,當(dāng)外設(shè)數(shù)據(jù)準(zhǔn)備好(或有某種突發(fā)事件發(fā)生)時向CPU提出請求,CPU暫停正在執(zhí)行的程序轉(zhuǎn)而為該外設(shè)服務(wù)(或處理緊急事件),處理完畢再回到原斷點繼續(xù)執(zhí)行原程序。中斷源引起中斷的原因,中斷申請的來源,中斷源可以是I/O設(shè)備、故障、時鐘、調(diào)試中人為設(shè)置。,4.1中斷概述,中斷優(yōu)先級當(dāng)有多個中斷源同時向CPU申請中斷時,CPU優(yōu)先響應(yīng)最需緊急處理的中斷請求,處理完畢再響應(yīng)優(yōu)先級別較低的,這種預(yù)先安排的響應(yīng)次序。中斷的嵌套在中斷系統(tǒng)中,高優(yōu)先級的中斷請求能中斷正在進(jìn)行的較低級的中斷源處理,本章將討論MCS-51系列單片機(jī)的中斷系統(tǒng)。,8XX51有5個中斷源,3個在片內(nèi),2個在片外,它們在程序存貯器中有固定的中斷入口地址,當(dāng)CPU響應(yīng)中斷時,硬件自動形成這些地址,由此進(jìn)入中斷服務(wù)程序;5個中斷源有兩級中斷優(yōu)先級,可形式中斷嵌套.,4.2MCS-51單片機(jī)中斷系統(tǒng)的結(jié)構(gòu),4.2.1中斷源8XX51有5個中斷源,其符號、名稱、產(chǎn)生條件及中斷服務(wù)程序的入口地址如下表。,說明:IT0和IT1為外中斷INT0和INT1中斷觸發(fā)方式選擇,若選下降沿觸發(fā)則相應(yīng)位置1;若選低電平觸發(fā),IT相應(yīng)位置0。某中斷源有中斷請求,該中斷標(biāo)志置1,無中斷請求,該中斷標(biāo)志置0TR0和TR1為定時器T0和T1工作啟動和停止控制。,4.2.2中斷標(biāo)志寄存器1.定時器控制寄存器TCON,2.串行口的空制寄存器SCON8XX51串行通信的方式選擇,接受和發(fā)送控制及串行口的標(biāo)志均由專用寄存器SCON控制和指示,其格式如下:,TI:發(fā)送中斷標(biāo)志位。發(fā)送前必須用軟件清零,發(fā)送過程中TI保持零電平,發(fā)送完一幀數(shù)據(jù)后,由硬件置“1”,如果再發(fā)送,必須用軟件再清零。RI:接收中斷標(biāo)志位。接收前,必須用軟件清零,接收過程中RI保持零電平,接收完一幀數(shù)據(jù)后由片內(nèi)硬件自動置“1”。如果再接收必須用軟件清零。,4.2.3中斷控制寄存器,(1)中斷的允許和禁止中斷控制寄存器IEIE寄存器的各位對應(yīng)相應(yīng)的中斷源,如果允許該中斷源中斷則該位置1,禁止中斷則該位置0。IE可以位尋址,EA:中斷總控開關(guān),是CPU是否響應(yīng)中斷的前提。EA=1,CPU開中斷;EA=0,CPU關(guān)中斷。ES:串行口中斷允許位,ES=1,允許串行口發(fā)送/接收中斷;ES=0,禁止串行口中斷。ET1:定時器T1中斷允許位,ET1=1,允許T1計數(shù)溢出中斷;ET1=0,禁止T1中斷。,ET0:定時器T0中斷允許位,ET0=1,允許T1計數(shù)溢出中斷;ET0=0,禁止T0中斷。EX1:外部中斷INT1允許位,EX1=1,允許INT1中斷;EX1=0,禁止INT1中斷。EX0:外部中斷INT0允許位,EX0=1,允許INT0中斷;EX0=0,禁止INT0中斷。,(2)中斷優(yōu)先級管理寄存器IP,T0,INT0,INT1,T1,串行口,當(dāng)某幾個中斷源在IP寄存器相應(yīng)位同為1或同為零時,由內(nèi)部查詢確定優(yōu)先級,查詢的順序是:,CPU優(yōu)先響應(yīng)先查詢的中斷請求,五個中斷源的優(yōu)先級別由IP寄存器管理,相應(yīng)位置1,則該中斷源優(yōu)先級別高,置0的優(yōu)先級別低。,4.3中斷響應(yīng)過程,4.3.1中斷處理過程中斷處理過程分為四個階段:中斷請求,中斷響應(yīng),中斷處理、中斷返回。MCS51系列單片機(jī)的中斷過程流程如圖所示。,N,N,Y,Y,Y,N,執(zhí)行指令,中斷標(biāo)志1?(中斷請求?),指令最后一個T周期?,EA=1?允許位=1?,CPU判別優(yōu)先權(quán),響應(yīng)優(yōu)先權(quán)高的中斷,斷點的PC進(jìn)棧,中斷服務(wù)入口地址送PC,撤除中斷標(biāo)志,中斷服務(wù),中斷返回,斷點出棧送PC,中斷請求.,中斷響應(yīng),中斷服務(wù),中斷返回,中斷請求、中斷響應(yīng)過程由硬件自動完成。中斷服務(wù)程序應(yīng)根據(jù)需要進(jìn)行編寫。程序中要注意保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場。中斷返回是通過執(zhí)行一條RETI中斷返回指令,使堆棧中被壓入的斷點地址送PC,從而返回主程序的斷點繼續(xù)執(zhí)行主程序。另外RETI還有恢復(fù)優(yōu)先級狀態(tài)觸發(fā)器的作用,因此不能以RET指令代替“RETI”指令。,若某個中斷源通過編程設(shè)置,處于被打開的狀態(tài),并滿足中斷響應(yīng)的條件,然而下面三種情況單片機(jī)不響應(yīng)此中斷:當(dāng)前正在執(zhí)行的那條指令沒執(zhí)行完;當(dāng)前響應(yīng)了同級或高級中斷;正在操作IE、IP中斷控制寄存器或執(zhí)行RETI指令。在正常的情況下,從中斷請求信號有效開始,到中斷得到響應(yīng),通常需要3個機(jī)器周期到8個機(jī)器周期。,4.3.2中斷請求的撤除CPU響應(yīng)中斷后,應(yīng)撤除該中斷請求標(biāo)志,否則會再次中斷。,對電平觸發(fā)的外部中斷,CPU在響應(yīng)中斷時也不會自動清除中斷標(biāo)志,因此,在CPU響應(yīng)中斷后應(yīng)立即撤除INT1或INT0的低電平信號。,對定時計數(shù)器T0、T1的溢出中斷,CPU響應(yīng)中斷后,硬件自動清除中斷請求標(biāo)志TF0和TF1。,對邊沿觸發(fā)的外部中斷INT1和INT0,CPU響應(yīng)中斷后硬件自動清除中斷請求標(biāo)志IE0和IE1。,對于串行口中斷,CPU響應(yīng)中斷后,沒有用硬件清除中斷請求標(biāo)志TI、RI,即這些中斷標(biāo)志不會自動清除,必須用軟件清除,這是在編串行通信中斷服務(wù)中應(yīng)該注意的。,4.4中斷的程序設(shè)計,用戶對中斷的控制和管理,實際是對4個與中斷有關(guān)的寄存器IE、TCON、IP、SCON進(jìn)行控制或管理。這幾個寄存器在單片機(jī)復(fù)位時是清零的,因此必須根據(jù)需要對這幾個寄存器的有關(guān)位進(jìn)行預(yù)置。在中斷程序的編制中應(yīng)注意:,開中斷總控開關(guān)EA,置位中斷源的中斷允許位。,對外部中斷INT0、INT1應(yīng)選擇中斷觸發(fā)方式。,編寫中斷服務(wù)程序,并注意用保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場,以免中斷返回時,丟失原寄存器、累加器中的信息。,多個中斷源中斷,應(yīng)設(shè)定中斷優(yōu)先級,預(yù)置IP。,若要在執(zhí)行當(dāng)前中斷程序時禁止更高優(yōu)先級中斷,可以采用軟件關(guān)CPU中斷或禁止某中斷源中斷,在中斷返回前再開放中斷。,匯編語言的中斷服務(wù)程序按規(guī)定的中斷矢量地址存入,由于五個中斷矢量地址0003H、000BH、0013H、001BH、0023H之間相距很近,往往裝不下一個中斷服務(wù)程序,通常將中斷服務(wù)程序安排在程序存貯器的其他地址空間,而在矢量地址的單元中安排一條轉(zhuǎn)移指令。,4.4.1匯編語言中斷程序的設(shè)計,例1.在圖6.3中P1.4P1.7接有四個發(fā)光二極管,P1.0P1.3接有四個開關(guān),消抖電路用于產(chǎn)生中斷請求信號,當(dāng)消抖電路的開關(guān)來回拔動一次將產(chǎn)生一個下降沿信號,通過INT0向CPU申請中斷,要求:初時發(fā)光二極管全黑,每中斷一次,P1.0P1.3所接的開關(guān)狀態(tài)反映到發(fā)光二極管上,且要求開關(guān)斷開的對應(yīng)發(fā)光二極管亮,編程如下:,ORG0000HAJMPMAINORG0003H;INT0中斷入口AJMPWBI;轉(zhuǎn)中斷服務(wù)程序ORG0030H;主程序MAIN:MOVP1,#0FH;全燈滅,低四位輸入SETBIT0;邊沿觸發(fā)中斷SETBEX0;允許外中斷0中斷SETBEA;開中斷開關(guān)SJMP$WBI:MOVP1,#0FH;P1先寫入“1”且燈滅MOVA,P1;輸入開關(guān)狀態(tài)SWAPAMOVP1,A;輸出到P1高4位RETIEND,此例的執(zhí)行現(xiàn)象是,每重置一次四個開關(guān)的開、合狀態(tài),四個發(fā)光二極管維持原來的亮、滅狀態(tài),僅當(dāng)來回拔動消抖電路開關(guān)后,產(chǎn)生了中斷,發(fā)光二極管才反映新置的開關(guān)狀態(tài)。,例2.89C51的P1口接一個共陰極的數(shù)碼管,利用消抖開關(guān)產(chǎn)生中斷請求信號,每來回拔動一次開關(guān),產(chǎn)生一次中斷,用數(shù)碼管顯示中斷的次數(shù)(最多不超過15次)。,ORG0000HAJMPMAINORG0013H;INT1中斷入口AJMPINT1;轉(zhuǎn)中斷服務(wù)程序ORG0030H;主程序MAIN:SETBIT1;邊沿觸發(fā)中斷SETBEX1;允許INT1中斷SETBEA;開中斷開關(guān)MOVR0,#0;計數(shù)初值為0MOVA,#3FH;“0”的字形碼送AAL1:MOVP1,A;顯示數(shù)碼AL2:CJNER0,#0FH,AL1;沒滿15次循環(huán)顯示MOVR7,#0FFH;滿15次,顯F,延時,DJNZR7,MOVP1,#0;關(guān)顯示CLREA;關(guān)中斷SJMP;結(jié)束INT1:INCR0;中斷次數(shù)加1MOVA,R0MOVDPTR,TAB;DPTR指向字形碼表首址MOVCA,A+DPTR;查表POPDPHPOPDPL;彈出斷點MOVDPTR,#AL1PUSHDPLPUSHDPH;修改中斷返回點,AL1壓入堆棧RETI;從堆棧AL1地址PC,返主程序AL處,TAB:DB3FH,06H,5BH,4FH,66H,6DHDB7DH,07H,7FH,6FH,77H,7CHDB39H,5EH,79H,71H;段碼表(字形碼)END上面程序每中斷一次,執(zhí)行一次中斷服務(wù)程序INT1。在中斷服務(wù)程序中,累計中斷次數(shù)并查字形表,返回到主程序AL1地址執(zhí)行顯示。,以上中斷在AL1或AL2兩指令處發(fā)生,究竟是哪一指令處中斷是隨機(jī)的,為保證返回到AL1顯示F,這里采用修改中斷返回點的辦法,即先從棧中彈出中斷響應(yīng)時壓入的斷點彈到DPTR中,修改DPTR為用戶需要的返回點,并將其壓入堆棧,再通過執(zhí)行RETI指令彈出棧中內(nèi)容到PC、彈出的即為修改后的地址,從而返回到主程序中用所希望的地址執(zhí)行。上例中中斷次數(shù)在主程序判斷,目的是使讀者了解修改中斷返回點的方法,如果改在中斷服務(wù)程序中判斷,編程簡潔些,下面僅介紹和上例中的不同部分的程序。,MOVR0,#0;計數(shù)初值為0MOVP1,#3FH;顯示0MOVDPTR,#TAB;指向字形碼表AGA:SJMP;等待中斷INT1:INCR0;中斷次數(shù)加1MOVA,R0MOVCA,A+DPTR;查字形碼表MOVP1,A;顯示CJNER0,#0FH,RE;15次中斷未到轉(zhuǎn)RECLREA;15次到關(guān)中斷RE:RETI;返回主程序的AGA處TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71H,每個中斷源有固定的中斷服務(wù)程序的入口地址(稱矢量地址或向量地址)。當(dāng)CPU響應(yīng)中斷以后單片機(jī)內(nèi)部硬件保證它能自動的跳轉(zhuǎn)到該地址。因此,此地址是應(yīng)該熟記的,在匯編程序中,中斷服務(wù)程序應(yīng)存放在正確的向量地址內(nèi)。(或存放一條轉(zhuǎn)移指令);而在C語言中是靠Interruptn的關(guān)鍵字n自動設(shè)置的。,4.3小結(jié),(1)中斷技術(shù)是實時控制中的常用技術(shù),51系列單片機(jī)有三個內(nèi)部中斷,二個外部中斷。所謂外部中斷就是在外部引腳上有產(chǎn)生中斷所需要的信號。,(2)單片機(jī)的中斷是靠內(nèi)部的寄存器管理的,這就是中斷允許寄存器IE,中斷優(yōu)先權(quán)寄存器IP,必須在CPU開中斷即開全局中斷開關(guān)EA,開各中斷源的中斷開關(guān),CPU才能響應(yīng)該中斷源的中斷請求,其中缺一不可。(3)從程序表面看來,主程序和中斷服務(wù)程序好象是沒有關(guān)連的,只有掌握中斷響應(yīng)的過程,才能理解中斷的發(fā)生和返回,看得懂中斷程序,并能編寫高質(zhì)量中斷程序。(4)本章重點應(yīng)掌握中斷的基本概念,并能熟練編制中斷程序。,第5章單片機(jī)的定時/計數(shù)器與串行接口,單片機(jī)原理、接口及應(yīng)用,4.5定時/計數(shù)器的結(jié)構(gòu)及工作原理定時計數(shù)器結(jié)構(gòu)和工作原理定時計數(shù)器的控制寄存器定時器的四種工作方式定時計數(shù)器的應(yīng)用編程,51系列單片機(jī)片內(nèi)有二個十六位定時/計數(shù)器:定時器0(T0)和定時器1(T1)。兩個定時器都有定時或事件計數(shù)的功能,可用于定時控制、延時、對外部事件計數(shù)和檢測等場合定時/計數(shù)器實際上是16位加1計數(shù)器。T0由2個8位持殊功能寄存器TH0和TL0構(gòu)成,T1由2個8位持殊功能寄存TH1和TL1構(gòu)成。每個定時器都可由軟件設(shè)置為定時工作方式或計數(shù)工作方式。T0和T1受特殊功能寄存器TMOD和TCON控制。,4.5.1定時/計數(shù)器結(jié)構(gòu),1.定時工作方式,設(shè)置為定時工作方式時,定時器計數(shù)的脈沖是由51單片機(jī)片內(nèi)振蕩器經(jīng)12分頻后產(chǎn)生的。每經(jīng)過一個機(jī)器周期定時器(T0或T1)的數(shù)值加1直至計數(shù)滿產(chǎn)生溢出。如:當(dāng)8051采用12MHz晶體時,每個機(jī)器周期為1s,計5個機(jī)器周期即為5s,即定時5s。,4.5.2定時/計數(shù)器的工作原理,2.計數(shù)工作方式,設(shè)置為計數(shù)工作方式時,通過引腳T0(P34)和T1(P35)對外部脈沖信號計數(shù)。當(dāng)輸入脈沖信號產(chǎn)生由1至0的下降沿時,定時器的值加1,在每個機(jī)器周期CPU采樣T0和T1的輸入電平。若前一個機(jī)器周期采樣值為高,下一個機(jī)器周期采樣值為低,則計數(shù)器加1。由于檢測一個1至0的跳變需要二個機(jī)器周期,故最高計數(shù)頻率為振蕩頻率的二十四分之一。雖然對輸入信號的占空比無特殊要求,但為了確保某個電平在變化之前至少被采樣一次,要求電平保持時間至少是一個完整的機(jī)器周期。,4.6定時/計數(shù)器工作方式4.6.1定時/計數(shù)器的控制寄存器定時器共有兩個控制寄存器:定時器控制TCON(88H)定時器工作模式寄存器TMOD(89H),1.工作模式寄存器TMOD(89H),TMOD用于控制T0和T1的操作模式。其各位的定義如下:,定時器T0,定時器T1,GATE:門控信號GATE=0,TRx=1時即可啟動定時器工作;GATE=1,INTx=1才可啟動定時器工作。C/T:定時器/計數(shù)器選擇位C/T=1,為計數(shù)器方式;C/T=0,為定時器方式。M1M0工作模式選擇位M1M0=00工作方式0(13位方式)。M1M0=01工作方式1(16位方式)。M1M0=10工作方式2(8位自動再裝入方式)。M1M0=11工作方式3(T0為2個8位方式)。,2.控制寄存器TCON(88H),TCON寄存器中定時器控制僅用了其中高四位,其意義如下:TF1:T1溢出中斷請求標(biāo)志。TF1=1,T1有溢出中斷請求。TF1=0,T1無溢出中斷請求。TR1:T1運行控制位。TR1=1,啟動T1工作。TR1=0,停止T1工作。,TF0:T0溢出中斷請求標(biāo)志。TF0=1,T0有溢出中斷請求。TF0=0,T0無溢出中斷請求。TR0:T0運行控制位。TR0=1,啟動T0工作。TR0=0,停止T0工作。,C/T,C/T,4.6.2定時器的工作方式,對TMOD寄存器的M1、M0位的設(shè)置,可選擇四種工作方式,即方式0、方式1、方式2和方式3。下面用THX、TLX(X=1或0)表示TH1TL1TH0TL0。1.方式0定時器(T0或T1)工作于13位定時、計數(shù)方式。用于計數(shù)方式時最大計數(shù)值為2138192個脈沖用于定時工作時,定時時間為:t(213一T0初值)時鐘周期12在這種模式下,16寄存器(THX和TLX)只用13位,其中THX占高8位。其中TLX占低5位,TLX的高3位末用。當(dāng)TLX的低5位溢出時向THX進(jìn)位,而THX溢出時硬件置位TF0,并申請中斷。,定時、計數(shù)溢出否可查詢TF0是否置位,如果開中斷則產(chǎn)生溢出中斷。,2.方式1當(dāng)TMOD中M1M0=01時,定時計數(shù)器工作在方式1。該模式是一個16位定時計數(shù)方式。寄存器TH0和TL0是以全16位參與操作,計數(shù)方式時最大計數(shù)21665536(個外部脈沖)用于定時工作方式時,定時時間為:t(216一T0初值)時鐘周期1216寄存器(THX和TLX)中THX提供高8位、TLX提供低8位計數(shù)初值,3.方式2當(dāng)TMOD中M1M0=10時,定時器工作在方式2。方式2是8位的可自動重裝載的定時計數(shù)方式。16位的計數(shù)器被拆成兩個8位,其中TL0用作8位計數(shù)器,TH0用以保持計數(shù)初值。當(dāng)TL0計數(shù)溢出,置位TF0,TH0中的初值自動裝入TL0,繼續(xù)計數(shù),循環(huán)重復(fù)計數(shù)。用于計數(shù)工作方式時,最大計數(shù)值為:28256(個外部脈沖)。用于定時工作方式時,其定時時間為;t(28TH0初值)振蕩周期12這種工作方式可省去用戶重裝常數(shù)的程序,并可產(chǎn)生精確的定時時間,特別適用作串行口波待率發(fā)生器。,4.方式3當(dāng)TMOD中M1M0=11時,定時器工作在方式3。若將T0設(shè)置為模式3,TL0和TH0被分成為兩個互相獨立的8位計數(shù)器TH0和TL0。TL0可工作為定時方式或計數(shù)方式。占用原T0的各控制位、引腳和中斷源。即CT、GATE、TR0、TF0和T0(P3.4)引腳、INT0(P3.2)引腳。TH0只可用作定時功能,占用定時器T1的控制位TR1和T1的中斷標(biāo)志位TF1,其啟動和關(guān)閉僅受TRl的控制。定時器T1無模式3,可工作于方式0、1、2,但不能使用中斷方式。只有將T1用做串行口的波特率發(fā)生器時,T0才工作在方式3,以便增加一個定時器。,5

溫馨提示

  • 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

提交評論