




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第五章MCS-51中斷系統與定時器/計數器第五章-------1wyx
本章重點:MCS-51的中斷系統和定時器/計數器
講授內容:MCS-51單片機的中斷系統
1)中斷系統概述
2)中斷的處理過程
3)中斷系統的初始化及應用
MCS-51單片機的定時器/計數器
1)定時器/計數器的編程結構
2)控制字與編程方法
3)應用編程
當CPU正在處理某件事情的時候,外部發生了某一更為重要或更為緊迫的事件,需要CPU暫時停下正在執行的工作去處理這一突發事件,之后再繼續執行以前被暫停的下來的工作,這個過程就叫中斷。
5.2MCS-51的中斷系統
第五章-------2wyx
CPU中能夠控制實現這種中斷響應的邏輯機構稱為中斷系統。中斷有以下優點:
1.實現與低速設備的同步;
2.提高系統處理的實時性;
3.實現故障處理,避免系統災難。
MCS-51有5個中斷源——2個外部中斷源INT0和INT1,2個片內定時器/計數器溢出中斷源,1個片內串行口中斷源。分為兩級——高級中斷和低級中斷。其中任何一個中斷源的優先級均可由軟件設定為高級或低級,能實現兩級中斷服務程序嵌套。
都是可屏蔽的,由軟件設定。中斷允許寄存器IE控制中斷優先級寄存器IP控制中斷觸發方式位IT控制第五章-------3wyx一、MCS-51的中斷源
1.中斷源
1)外部中斷0請求,由P3.2引腳輸入??捎捎脩粼O定為兩種觸發方式,(電平觸發方式還是邊沿觸發方式)。一旦輸入信號有效,則向CPU申請中斷,并且將中斷標志IE0置1。
2)外部中斷1請求,由P3.3引腳輸入。亦可由用戶設定為電平觸發方式還是邊沿觸發方式。一旦輸人信號有效,則向CPU申請中斷,并將中斷標志IE1置1。
3)片內定時器T0溢出中斷請求。外部計數脈沖由P3.4引腳輸入,當定時器T0產生溢出時,T0中斷請求標志TF0置1,請求中斷處理。
4)片內定時器T1溢出中斷請求。外部計數脈沖由P3.5引腳輸入,當定時器T1產生溢出時,T1中斷請求標志TF1置l,請求中斷處理。
5)片內串行口發送/接收中斷請求。當通過串行口發送或接收完一幀串行數據時,串行口中斷請求標志TI或RI置1,請求中斷處理。
第五章-------4wyx2.中斷請求標志
1)TCON的中斷標志
TCON是專用寄存器,字節地址為88H,它鎖存了外部中斷請求標志以及T0和T1的溢出中斷請求標志TCON88HD7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0
(1)IT0:外部中斷0(INT0)觸發方式控制位。IT0=0INT0為低電平觸發方式。
(2)IE0:外部中斷0請求標志位。IE0=1,外部中斷0向CPU申請中斷。
(3)IT1:外部中斷1(INT1)觸發方式控制位。
(4)IE1:外部中斷1請求標志位。IE1=1時,外部中斷1向CPU申請中斷。
(5)TF0:片內定時器T0溢出中斷請求標志。T0被啟動后,從初始值開始進行加1
計數,當最高位產生溢出時置TF0=1,向CPU申請中斷。
(6)TF1:片內定時器T1溢出中斷請求標志,其操作功能與TF0類同。第五章-------5wyx以上中斷請求標志在CPU響應該中斷時,由硬件自動清0,也可由軟件查詢該標志,并用軟件清0。
SCON是串行口控制寄存器,字節地址為98H。與中斷有關的是它的低兩位TI和RI。
1)TI(SCON.1)
:串行口發送中斷標志位。每發送完一個串行幀,由硬件置位TI。CPU響應中斷時,不能清除TI,TI必須由軟件清除。
2)RI(SCON.0):串行口接收中斷標志位,當允許串行口接收數據時,每接收完一個串行幀,由硬件置位RI。同樣,RI必須由軟件清除。TIRISCON2)SCON的中斷標志第五章-------6wyx二、MCS-51的中斷控制
1.中斷允許寄存器IE(A8H)
——中斷的允許與開放第五章-------7wyx2.中斷優先級寄存器IP(B8H)
——中斷優先級控制
內部自然優先級:入口地址
INT0高0003HT0000BHINT10013HT1001BHTI/RI低0023H第五章-------88wyx中斷處理過程一般分為三個階段,即中斷響應、中斷處理和中斷返回。三、MCS-51對中斷的響應1.中斷響應的條件1)有中斷源發出請求信號2)中斷是開放的(總允許、源允許)3)沒有封鎖(受阻),受阻情況是:
(1)CPU正在執行同級或高一級的中斷服務程序;
(2)現行機器周期不是正在執行的指令的最后一個機器周期,即現行指令完成前.不響應任何中斷請求;
(3)當前正在執行的是中斷返回指令RETI或訪問專用寄存器IE或IP的指令。也就是說,在執行RETI或是訪問IE、IP的指令后,至少需要再執行一條其他指令,才會響應中斷請求。第五章-------9wyx2.中斷響應過程(CPU自動完成)
進入中斷響應周期。CPU在中斷響應周期要完成下列操作:
1)根據中斷請求源的優先級高低,使相應的優先級狀態觸發器置1。
2)保留斷點,把PC內容壓入堆棧保存。
3)清相應中斷請求標志位IE0、IE1、TF0或TF1。
4)把被響應的中斷源服務程序入口地址送入PC,進入相應中斷服務程序。第五章-------10wyx中斷服務程序入口地址表第五章-------11wyx3.中斷服務與返回
在編寫中斷服務程序時加注意的幾點:
1)因各入口地址之間只相隔8個字節,一般的中斷服務程序是存放不下的。所以通常在中斷入口地址單元處存放—條無條件轉移指令,這樣就可使中斷服務程序靈活地安排在64KB程序存儲器的任何空間。
2)若要在執行當前中斷程序時禁止更高優先級中斷,可先用軟件關閉CPU中斷,或禁止某中斷源中斷,在中斷返回前再開放中斷。
3)注意在中斷服務程序中保護現場和恢復現場。
4)中斷服務程序的最后一條是返回指令RETI,該指令將清除響應中斷時被置位的優先級狀態觸發器,然后自動將斷點地址從棧頂彈出,裝入程序計數器PC,使程序返回到被中斷的程序斷點處,繼續向下執行。
第五章-------12wyx4.中斷請求的撤除
CPU響應中斷請求后,在中斷返回(RETI)前,該中斷請求信號必須撤除,否則會引起另外一次中斷。
1)定時器/計數器溢出中斷標志TF0或TFl,在CPU響應中斷后由硬件自動清除;
2)串行口中斷請求標志TI和RI不能由硬件自動清除,需要在中斷服務程序中,用軟件來清除相應的中斷請求標志;
3)采用邊沿觸發的外部中斷標志IE0或IEl,在CPU響應中斷后由硬件自動清除,但在電平觸發時,IE0或IEl受外部引腳中斷信號的直接控制,所以要在中斷請求得到CPU響應后及時撤除中斷請求信號,以避免對同一中斷請求的多次響應。第五章-------13wyx中斷系統的初始化是指用戶對上述這些特殊功能寄存器中的各控制位進行賦值。1.中斷系統的初始化步驟
1)設定相應中斷源的中斷允許控制;
2)設定所用中斷源的中斷優先級;
3)若為外部中斷,則應規定中斷觸發方式。第五章-------14wyx四、MCS-51中斷系統的初始化例5-5:請寫出INT1為低電平觸發的中斷系統初始化程序。解:(1)采用位操作指令
SETBEASETBEX1;開INT1中斷
SETBPX1;令INT1為高優先級
CLRIT1;令INT1為電平觸發
(2)采用字節型指令
MOVIE,#84H;開INT1中斷
ORLIP,#04H;高優先級
ANLTCON,#0FBH;電平觸發
2.中斷系統應用例5-1:一個外部中斷源時的編程。如圖所示電路,設外部中斷信號為負脈沖,引入外部中斷1引腳。要求每中斷一次,從P1.4~P1.7輸入外部開關狀態,然后從P1.0~P1.3輸出。
第五章-------15wyx程序清單:
ORG0000H;主程序
SJMPMAINORG0013HAJMPINT1 ;轉入服務程序
ORG0030HMAIN:SETBIT1 ;設INT1為邊沿觸發
SETBET1 ;允許INT1中斷
SETBEA;開放總允許
SJMP$INT1:ORLP1,#0F0H;中斷服務程序:
MOVA,P1;從P1口輸入開關狀態
SWAPA ;交換高、低4位
MOVP1,A;輸出
RETIEND第五章-------16wyx例5-2:當外部中斷源多于兩個時,可采取硬件申請與軟件查詢相結合的方法,利用一個外部中斷源輸入端擴展外部多個中斷源服務。如圖所示。把多個中斷源通過“線或”或與非門引到外部中斷源輸入端(INT0或INT1),同時又把信息連到某I/O口,便于軟件進一步逐個查詢。第五章-------17wyx
ORG0000H;主程序
SJMPMAINORG0003HAJMPZINT0 ;轉入服務程序
ORG0100HMAIN:
┋
ZINT0:PUSHPSW;中斷服務程序
PUSHACC JNB P1.0,ZLOOP0;查詢中斷源
NEXT1:JNB P1.1,ZLOOP1 NEXT2:JNB P1.2,ZLOOP2 NEXT3:JNBP1.3,ZLOOP3 LJMPNEXTZLOOP0:┋ ;0號中斷源服務程序段
LJMPNEXT1ZLOOP1:┋ ;1號中斷源服務程序段
LJMPNEXT2
┋
NEXT:RETI第五章-------18wyx
MCS-51系列單片機內有兩個可編程的16位定時器/計數器T0和T1;它可由用戶程序選擇其工作方式,設定其工作參數和條件。5.1MCS-51的定時器/計數器第五章-------19wyx一、定時器/計數器的結構與工作原理1.定時器/計數器的內部結構TH1TL1TH0TL0TCONTMOD內部總線溢出啟動啟動工作方式工作方式44T1T0CPUTM中斷請求溢出
定時器/計數器的核心部件是加1計數器,其輸入的計數脈沖有兩個來源。當加到計數器為全“1”時,再輸入一個脈沖,就使計數器回零,同時產生溢出脈沖使TCON中溢出中斷標志TF0或TF1置1,并可向CPU申請中斷。
1)定時器工作方式。對機器周期TM計數,這時計數器的計數脈沖由振蕩器的12分頻信號產生,即每經過一個機器周期,計數值加1,直至計滿溢出。在機器周期固定的情況下,定時時間的長短與計數器事先裝入的初值有關,裝入的初值越大,定時越短。
2)計數器工作方式。通過引腳T0(P3.4)和T1(P3.5)對外部脈沖信號計數。當T0或T1腳上輸入的脈沖信號出現由1到0的負跳變時,計數器值加1。2.定時器/計數器的工作原理第五章-------20wyx單片機內部的定時/計數器是一種可編程器件,主要包括兩對8位的寄存器(TH0、TL0和TH1、TL1),方式寄存器TMOD和控制寄存器TCON。TH0、TL0用于存放T0的計數初值和經過值;TH1、TL1用于存放T1的計數初值和經過值;TMOD用于設置T0和T1的工作方式;TCON用于控制T0和T1的運行;P3.4和P3.5引腳用于輸入在計數方式下的外部計數脈沖信號。
應用問題:1.定時器/計數器工作方式如何設定?
2.定時器/計數器如何啟動?
3.定時器/計數器的初值如何設定?第五章-------21wyx二、定時器/計數器的控制與工作方式1.定時器/計數器的控制
1)定時器方式寄存器TMOD(89H)
用于選定定時/計數器的工作方式、啟動方式等。00——方式001——方式110——方式211——方式3TMOD(89H)D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0控制T1控制T00——定時器模式1——計數器模式0——與INT0無關1——與INT0有關與T0同第五章-------22wyx
(1)用于設置定時/計數器的工作方式(0~3);
M1M0(2)選擇定時/計數——C/T
;
C/T=0---定時,C/T=1---計數(3)啟動控制方式選擇---內/外;
GATE:門控位,用以決定是軟件還是硬件啟動/停止計數
GATE=0-允許軟件位TR0或TR1啟動;
GATE=1-允許外部引腳信號INT0/INT1控制啟動/停止。在
TR0/TR1為1的情況下,若INT0/INT1為高電平,啟動定時器計數;為低電平時停止計數。第五章-------23wyx例如:設定時器T0工作于方式1定時,由軟件啟動控制,則可用如下指令來裝入控制字。
MOVTMOD,#00000001B;或MOVTMOD,#01H;2)定時器控制寄存器TCON(88H)注意:復位后TMOD、TCON各位均清零。例:啟動T0工作,用指令SETBTR0第五章-------24wyx(1)TF1定時器T1溢出標志(2)TR1定時器T1運行控制位(3)TF0定時器T0溢出標志(4)TR0定時器T0運行控制位(5)IE1外部中斷1請求標志(6)IT1外部中斷1觸發方式選擇位(7)IE0外部中斷0請求標志(8)IT0外部中斷0觸發方式選擇位。
通過控制TMOD中的M1,M0兩位選擇定時器4種工作方式。這4種工作方式的實質是對T0(或T1)的兩個8位計數器TH0、TL0(或TH1、TL1)的計數操作方式而言。方式0下的邏輯結構圖第五章-------25wyx2.定時器/計數器的工作方式1)方式0TL低5位和TH的8位組成13位,高8位溢出置位TF定時器啟、停控制(1)C/T=1為計數工作方式,計數脈沖由T0引腳輸入。計數個數
N=(213—初值X)(2)C/T=0為定時工作方式,計數脈沖頻率為時鐘頻率fosc/12。
定時時間t=(213—初值X)*機器周期
X=213—定時時間t/機器周期方式0下工作時:思考:(1)最大計數或定時時的初值X是多少?(2)時鐘頻率為12MHZ時,方式0最大定時時間是多少?第五章-------26wyx2)方式1
定時/計數器工作于方式1時為一個16位的計數器。其邏輯結構、操作及運行控制幾乎與方式0完全—樣,差別僅在于計數器的位數不同。定時工作方式1時,定時時間為:
t=(216-計數初值X)×機器周期
X=216—定時時間t/機器周期用于計數器工作方式時,計數個數
N=(216—初值X)第五章-------27wyx3)方式2
定時器/計數器工作于方式2時,將兩個8位計數器THx、TLx分成獨立的兩部分,組成一個可自動重裝載的8位定時/計數器。其邏輯結構如圖所示。
方式2的控制運行與方式0、方式1相同。用于定時工作方式時,定時時間t為:t=(28—計數初值X)×機器周期用于計數工作方式時,最大計數值(初值=0時)是28。方式2特別適合于用作較精確的定時和脈沖信號發生器。還常用作串行口波特率發生器。第五章-------28wyx4)方式3
方式3只適用于定時器T0。在方式3下,T0被分成兩個相互獨立的8位計數器TL0和TH0。第五章-------29wyx
1)TH0和TL0變成2個分開的計數器。
2)TL0占用了T0全部的定時器控制位,可以工作于定時/
計數模式。(C/T,GATE,TR0,TF0)
3)TH0只能用于定時方式,運行控制位和溢出標志位則借用T1的TR1和TF1。
4)在T0設置為方式3工作時,一般是將定時器T1工作于方式2,作為串行口波特率發生器,或用于不需要中斷的場合。T0工作于方式3時:第五章-------30wyx三、定時器/計數器計數初始化1.定時器/計數器的初始化方法初始化的主要是對TCON和TMOD編程,計算和裝載T0和T1的計數初值。1)初始化步驟(1)分析定時器/計數器的工作方式,將方式字寫入TMOD寄存器;
(定/計、內/外啟動、工作方式)(2)計算T0或T1中的計數初值,并將其寫入TH0、TL0或TH1、TL1;(3)根據需要開放CPU和定時器/計數器的中斷,即對IE和IP寄存器編程;(4)啟動定時器/計數器工作:若要求用軟件啟動,編程時對TR0或TR1置位即可啟動;若由外部中斷引腳電平啟動,則對TR0或TR1置位后,還需給外引腳提供啟動電平。第五章-------31wyx(1)
計數器模式時的計數初值
X=2M-N
(M為計數器位數,N為要求的計數值)
X=0,計數器的計數值最大——
2M(2)定時器模式時的定時初值定時時間為:t=(2M-計數初值X)×機器周期定時初值X=2M-
(t/12*Tosc
)=2M
-
(t*fosc/12)2)計數器初值的計算213=8192(方式0)216=65536(方式1)28=256(方式2及方式3)第五章-------32wyx
若系統時鐘頻率fOSC=12MHz,1機器周期=1μs;方式0:M=13,tmax
=213*機器周期=8192μs
方式1:M=16,tmax=216*機器周期=65536μs
方式2:M=8,tmax=28*機器周期=256μs(方式3同)X==60536=0EC78H
X=0,定時器的定時時間最大:
tmax=2M×機器周期例如:若fOSC=6MHz,定時時間為10ms,使用定時器T0工作于方式1,則初值:第五章-------33wyx編寫初始化程序的步驟;
1)方式控制字送TMODMOVTMOD,#——2)計數器的初值送TH、TL(0/1)
MOVTH0,#——MOVTL0,#——3)根據需要開放中斷和設定優先級即對IE和IP賦初值(可位尋址)4)啟動T0/T1開始工作---置位TR0/1SETBTR0/15)等待溢出信號的出現(如何進入處理程序?)(查詢法或中斷法)2.定時/計數器初始化舉例第五章-------34wyx例5-3:要求定時器T1于方式1,定時50ms,由軟件啟動,允許中斷。設系統時鐘頻率fOSC=6MHz,編寫初始化程序段。解:1)方式控制字為00010000B=10H2)計數初值為X1=T1初始化程序段如下:
MOV TMOD,#10H
;寫入工作方式控制字
MOV TH1,#9EH ;寫入計數初值
MOV TL1,#58HSETB ET1 ;開放T1中斷
SETB EA ;開放CPU中斷
SETB TR1
;啟動T1工作
┋
第五章-------35wyx例5-4:利用定時器T0產生1ms定時,并使P1.0引腳輸出周期為2ms的方波信號,已知晶振頻率為6MHz,用查詢法編寫程序。解:(1)按題意分析:方波周期T=2ms,可用T0方式0定時1ms,使P1.0每隔1ms取反一次,即可得到周期為2ms的方波。設T0工作在方式0,由軟件啟動。
(2)TMOD控制字為00000000B(3)初值計算:fosc=6MHz,機器周期為2μs。初值=213-1×10-3/2×10-6=8192-500=7692=1111000001100B
即有TH0=0F0H(高8位),TL0=0CH(低5位)。第五章-------36wyx四、定時器/計數器應用舉例程序如下:
ORG2000HSTAR:MOVTMOD,#00H
;寫入工作方式字
MOVTH0,#0F0H
;寫入計數初值
MOVTL0,#0CHSETBTR0
;啟動T0LOOP:JBCTF0,PE
;TF0=1溢出轉移PE,并清除TF0AJMPLOOP
;TF0為0轉LOOP等待
PE:MOVTH0,#0F0H
;重裝初值
MOVTL0,#0C0HCPLP1.0;取反
AJMPLOOP;轉LOOP等定時時間到
END第五章-------37wyx例5-5:要求使用8051的定時器T0定時,在P1.0引腳上輸出周期為2秒的方波,設晶振頻率為12MHz。題意分析:要產生周期為2秒的方波,T0必須定時1秒,這超過了定時器的最大定時時間。因此,只有采用定時器定時和軟件計數相結合的方法才可以解決問題。定時器T0定時50ms,軟件計數器初值設為20,每當定時50ms時間到,CPU就響應T0的溢出中斷請求,進入中斷服務程序。在中斷程序中,先讓軟件計數器減1,然后判斷它是否為零。若為零,表明定時1秒鐘已到,便可恢復軟件計數器初值和改變P1.0引腳電平,然后返回主程序;若不為零,則表示定時1秒未到,也返回主程序。解:(1)按題意分析:可用T0為16位定時器模式(方式1)定時50ms。
(2)TMOD控制字為01H(3)初值計算:fosc=12MHz,機器周期為1μs。初值=216–50ms/1μs=15536=3CB0H,即TH0=3CH,TL0=0B0H。第五章-------38wyx主程序:
ORG1000HSTART:MOVTMOD,#01H
MOVTH0,#3CHMOVTL0,#0B0HMOVIE,#82H;開T0中斷
SETBTR0
;啟動
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網絡工程師與未來技術的適應能力試題及答案
- 軟件設計師考試知識地圖與試題及答案
- 機電工程學習中的有效時間管理及試題與答案
- 綜合化維護復習測試卷含答案
- 英語三上模擬考試卷及答案
- 英語七年級考試卷及答案徐州
- 英語六級參考試卷及答案
- 未來軟件設計趨勢及對應試題答案
- 翼城六年級英語試卷及答案
- 網絡工程師考試項目經驗分享試題及答案
- 家庭油煙機知識培訓課件
- 設備維護保養規范手冊
- 公務接待超標檢討書范文(3篇)
- 高壓滅菌鍋培訓
- 魯蘇省界收費站重大節假日期間應對突發事件應急預案
- 綜合醫院品牌建設與傳播-深度研究
- 流體壓強與流速的關系課件(版次)
- 小學二年級數學萬以內口算題
- 2024年全國職業院校技能大賽中職組(母嬰照護賽項)考試題庫(含答案)
- 服裝行業跨境電商研究報告
- 第二單元探索寓言王國之趣復習課課件語文三年級下冊
評論
0/150
提交評論