單片微機原理與應(yīng)用part_05課件_第1頁
單片微機原理與應(yīng)用part_05課件_第2頁
單片微機原理與應(yīng)用part_05課件_第3頁
單片微機原理與應(yīng)用part_05課件_第4頁
單片微機原理與應(yīng)用part_05課件_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、“單片機原理與應(yīng)用”課程 第 5 章 51系列單片機的定時器/計數(shù)器2022/7/211第5章 51系列單片機的定時/計數(shù)器 5.1 定時器/計數(shù)器簡介5.2 定時器/計數(shù)器控制5.3 定時器/計時器的工作模式及控制2022/7/212【基本知識點與要求】(1) 了解51系列單片機定時器/計數(shù)器的結(jié)構(gòu)和工作原理。 (2) 掌握51系列單片機定時器/計數(shù)器的工作模式、特點及應(yīng)用【重點與難點】 重點和難點是51系列單片機的定時器/計數(shù)器的工作模式、特點及其應(yīng)用。 在控制系統(tǒng)中,常常要求有定時或延時控制,如定時輸出、定時監(jiān)測、定時掃描等;也常常要求還有計數(shù)功能,即能對外部事件進(jìn)行計數(shù)。本章首先介紹定

2、時器/計數(shù)器的一般結(jié)構(gòu)和工作原理;其次介紹51系列單片機的定時器/計數(shù)器控制;然后介紹51系列單片機定時器/計數(shù)器的工作模式及其應(yīng)用方法。 第5章 51系列單片機的定時/計數(shù)器 2022/7/2135.1 定時器/計數(shù)器簡介5.1.1 定時器/計數(shù)器的一般工作方式 實現(xiàn)定時/計數(shù)的主要方法有3種:軟件定時、硬件定時和可編程定時器/計數(shù)器。 軟件定時:通過執(zhí)行一段循環(huán)程序而產(chǎn)生延時。這是常用的一種定時方法,主要用于短時定時。其優(yōu)點是不需要增加硬件設(shè)備;缺點是增加了CPU的時間開銷,降低了CPU的效率。此外,軟件定時的時間隨微機時鐘頻率不同而發(fā)生變化 硬件定時:采用硬件電路完成定時,不占用CPU的

3、時間。這種方法定時時間長,但是當(dāng)要求改變定時時間時,只能通過改變硬件電路中的元件參數(shù)來實現(xiàn),使用不夠靈活。2022/7/214 通常微機系統(tǒng)中均采用可編程定時器/計數(shù)器??删幊潭〞r器/計數(shù)器是由一個N位計數(shù)器、計數(shù)時鐘源控制電路、狀態(tài)寄存器和控制寄存器等組成。計數(shù)器的計數(shù)方式有加1計數(shù)和減1計數(shù)兩種。計數(shù)的時鐘可以使用內(nèi)部時鐘也可以使用外部輸入的時鐘。 可編程定時器/計數(shù)器:綜合了軟件定時和硬件定時法各自的優(yōu)點,其最大的靈活性是可以通過軟件編程來選擇定時或者計數(shù)、改變定時時間。其優(yōu)點是工作方式靈活、占用CPU的時間少。5.1 定時器/計數(shù)器簡介2022/7/2151定時器方式 定時器方式就是計

4、數(shù)器對內(nèi)部機器周期計數(shù),由于機器周期持續(xù)的時間是固定的,所以對機器周期的計數(shù)也就是定時功能。計數(shù)值乘以機器周期的時間就是定時時間t。定時器/計數(shù)器的一般結(jié)構(gòu)5.1 定時器/計數(shù)器簡介2022/7/216 2計數(shù)器方式 計數(shù)器方式是對外部輸入的時鐘計數(shù),其計數(shù)的目的是對外部時鐘累加統(tǒng)計或是為了測量外部輸入脈沖的參數(shù)。5.1.2 51系列單片機的定時器/計數(shù)器結(jié)構(gòu)與原理 1. 定時器/計數(shù)器的結(jié)構(gòu) AT89S51單片機內(nèi)部集成了2個16位的可編程定時器計數(shù)器,即定時器/計數(shù)器0和定時器/計數(shù)器1,分別簡記為T0和T1。它們既可以實現(xiàn)定時,也可以對外部事件進(jìn)行計數(shù),T1還可以作為串行接口通信的波特率

5、發(fā)生器。 5.1 定時器/計數(shù)器簡介 AT89S51單片機的定時器/計數(shù)器主要由兩個16位加1計數(shù)器T0、T1、定時器工作模式寄存器TMOD和定時器控制寄存器TCON等四部分組成。2022/7/217 AT89S51定時器/計數(shù)器內(nèi)部結(jié)構(gòu)圖 5.1 定時器/計數(shù)器簡介2022/7/218 定時功能: 定時器/計數(shù)器設(shè)置為定時功能時,加1計數(shù)器對單片機內(nèi)部的機器周期脈沖進(jìn)行計數(shù),每過一個機器周期、計數(shù)器的數(shù)值加1。當(dāng)計數(shù)器加到全為1時,再計入一個脈沖就使計數(shù)器發(fā)生溢出、并回到零。計數(shù)器的溢出使TCON中的溢出標(biāo)志位(TF0或TF1)置1,表示定時時間已到,向CPU發(fā)出中斷請求。5.1 定時器/計

6、數(shù)器簡介 2. 定時器/計數(shù)器的工作原理 計數(shù)功能: 定時器/計數(shù)器設(shè)置為計數(shù)功能時,是對單片機的T0(P3.4)或T1(P3.5)引腳上輸入脈沖的每一個1到0的跳變進(jìn)行加l計數(shù)。單片機在每個機器周期都會對T0和T1引腳的輸入電平進(jìn)行采樣,如果前一個機器周期的采樣值為1,而下一個機器周期的采樣值為0,則加1計數(shù)器的值加1。2022/7/219 定時器/計數(shù)器的工作模式設(shè)定、功能選擇和控制是由TMOD和TCON兩個特殊功能寄存器來完成的,當(dāng)單片機系統(tǒng)復(fù)位后,兩個特殊功能寄存器都被清零。 5.2 定時器/計數(shù)器控制5.2.1 定時器/計數(shù)器的工作模式寄存器TMOD TMOD用于選擇T0和T1的工作

7、模式,是一個逐位定義的8位寄存器,只能字節(jié)尋址,字節(jié)地址為89H。其格式如下: D7 D6 D5 D4 D3 D2 D1 D0GATE M1 M0GATEC/ T M1 M0TC/2022/7/2110(1)GATE:門控位。 GATE1時,由外部中斷引腳輸入的電平和定時器/計數(shù)器啟、停控制位(TR0、TR1)共同來控制定時器。 GATE0時,僅由TR0(TR1)置位或者清零來啟動或者停止定時器T0(T1)。(2) :功能選擇位。 =1時,選擇計數(shù)功能,通過引腳T0(P3.4)對外部輸入脈沖信號進(jìn)行計數(shù)。 =0時,選擇定時功能。計數(shù)輸入信號是內(nèi)部時鐘脈沖,每個機器周期計數(shù)器的值加1。計數(shù)頻率為

8、時鐘頻率的112,當(dāng)采用12MHz的晶振時,計數(shù)頻率為1MHz。定時器的定時時間與系統(tǒng)的時鐘頻率fosc、計數(shù)器的長度和初始值等有關(guān)。 5.2 定時器/計數(shù)器控制2022/7/21115.2 定時器/計數(shù)器控制(3) M1、M0:工作模式選擇位。 M1 M0 工作模式 功能描述 0 0模式013位計數(shù)器 0 1模式116位計數(shù)器 1 0模式2自動重裝入初值8位計數(shù)器 1 1模式3定時器0:分成兩個8位計數(shù)器;定時器1:停止計數(shù)5.2.2 定時器/計數(shù)器的控制寄存器TCON 控制寄存器TCON是一個逐位定義的8位寄存器,既可字節(jié)尋址也可以位尋址,字節(jié)地址是88H,位尋址的地址為88H8FH。其格

9、式如下:2022/7/2112 TCON寄存器可分成兩部分:高4位用于定時器/計數(shù)器的控制,低4位用于外部中斷的控制。 (1)TF1(TCON.7位):T1的溢出標(biāo)志位。T1溢出時,該位由內(nèi)部硬件自動置位。若中斷開放,即向CPU 發(fā)出中斷申請,響應(yīng)中斷進(jìn)入中斷服務(wù)程序后,由硬件自動清0;若中斷禁止,TF1位可作溢出查詢測試用(判斷該位是否為1),此時只能由軟件清0。 (2)TR1(TCON.6位):T1的啟動、停止控制位。5.2 定時器/計數(shù)器控制位地址8FH8EH8DH8CH8BH8AH89H88H位功能TF1TR1TF0TR0IE1IT1IE0IT02022/7/2113 當(dāng)GATE0時,

10、若使用指令 SETB TR1,則啟動T1。若使用指令 CLR TR1,則停止定時器T1工作; 當(dāng)GATE1時,若使用指令 SETB TR1,且外部中斷的引腳輸入高電平時才能啟動T1工作。(3)TF0(TCON.5位):T0的溢出標(biāo)志位。 其功能及操作情況與TF1相同。 5.2 定時器/計數(shù)器控制(4)TR0(TCON.4):T0的啟動、停止控制位。 其功能及操作情況與TR1相同。 5.2.3 定時器/計數(shù)器的初始化2022/7/2114 定時器/計數(shù)器的初始化:定時器/計數(shù)器運行前,CPU必須將一些命令(稱為控制字)寫入定時器/計數(shù)器,這個過程稱 之。 初始化的內(nèi)容主要包括:設(shè)置TMOD、中斷

11、允許寄存器IE和中斷優(yōu)先級寄存器IP,裝入時間常數(shù),啟動定時器/計數(shù)器工作。 (1)選擇定時器/計數(shù)器及其工作模式,確定模式控制字,并寫入TMOD。 (2)根據(jù)需要開啟定時器/計數(shù)器的中斷。 (3)裝入定時器/計數(shù)器的初值。 (4)設(shè)置定時器/計數(shù)器的中斷優(yōu)先級。 (5)啟動定時器/計數(shù)器工作。5.2 定時器/計數(shù)器控制定時器/計數(shù)器初始化步驟2022/7/21155.2 定時器/計數(shù)器控制 (1)選擇定時器/計數(shù)器及其工作模式,確定模式控制字,并寫入TMOD。使用T0,需定義TMOD的低4位,使用T1,需定義TMOD的高4位。定時器/計數(shù)器初始化步驟 (2)根據(jù)需要開啟定時器/計數(shù)器的中斷。

12、IE中與定時器/計數(shù)器中斷有關(guān)的位為EA、ET0和ET1。 (3)裝入定時器/計數(shù)器的初值。定時或計數(shù)初值就是預(yù)先置入定時器/計數(shù)器中的計數(shù)器的常數(shù),稱為定時常數(shù)或計數(shù)常數(shù),標(biāo)記為TC (Timer Constant ) 。 (4)設(shè)置定時器/計數(shù)器的中斷優(yōu)先級。IP中與定時器/計數(shù)器優(yōu)先級有關(guān)的位是PT0和PT1位。 2022/7/2116 若需要定時的時間為t,則有下式: (5)啟動定時器/計數(shù)器工作。置位TR0或TR1,就可以啟動定時器/計數(shù)器T0或T1。 5.2 定時器/計數(shù)器控制2. 定時器/計數(shù)器初值計算 式中: t 定時時間 機器周期 單片機時鐘頻率 L計數(shù)器長度,模式0時,L=

13、13;模式1,L=16;模式2或3,L=8。 TC定時器/計數(shù)器初值(常數(shù)) 2022/7/21173. 定時器/計數(shù)器初值裝入 不同的工作模式下初值的裝入方法有所不同(以T0為例,T1與T0類似) 若工作在計數(shù)器方式時,需要的計數(shù)值為CC,則計數(shù)初值TC的計算如下: TC = 2L計數(shù)值(CC) 定時器/計數(shù)器的定時或計數(shù)初值與工作模式、計數(shù)長度之間的關(guān)系如下頁表5-2 5.2 定時器/計數(shù)器控制 模式0是13位定時器/計數(shù)器,計數(shù)初值的高8位裝入TH0,而低5位裝入TL0的低5位(TL0的高3位無效,可填0)。 模式1是16位定時器/計數(shù)器,計數(shù)初值的高8位裝入TH0,而低8位裝入TL0。

14、 模式2是自動重裝入初值8位定時器/計數(shù)器,只要裝入一次,溢出后就自動裝入初值。計數(shù)初值既要裝入TH0,也要裝入TL0。 2022/7/21185.2 定時器/計數(shù)器控制工作模式計數(shù)長度最大計數(shù)值為M 最長定時時間T定時初值TC計數(shù)初值 CCf=6MHz模式013M=213=8192=2000HT=213TC =8.192msT=213TC =16.384msTC=213t/TcTC = 213CC)模式116M=216=65536T=216TC =65.536msT=216TC =131.072msTC=216t/TcTC = 216CC)模式28M=28=256T=28TC =0.256m

15、sT=28TC =0.512msTC=28t/TcTC = 28CC)模式3(T0)TL0 8M=28=256T=28TC =0.256msT=28TC =0.512msTC=28t/TcTC = 28CC)TH0 8M=28=256T=28TC =0.256msT=28TC =0.512msTC=28t/TcTC = 28CC)2022/7/21195.3.1 模式0及應(yīng)用 當(dāng)TMOD中的M1M0=00時,選定工作模式0。模式0的定時器/計數(shù)器邏輯結(jié)構(gòu)如圖所示。由TLx中的低5位(高3位未用)和THx中的8位組成13位加1計數(shù)器;若TLx中的第5位有進(jìn)位,直接進(jìn)到THx的最低位,THx溢出后

16、將TFx置位,并向CPU申請中斷。 5.3 定時器/計數(shù)器工作模式及應(yīng)用2022/7/2120 【例題5-1】 已知時鐘頻率f=12MHz,要求在P1.0引腳上輸出周期為2ms的方波。解:(1)題意分析與定時器初始化。 方波的周期為2ms,則需要設(shè)定1ms的定時,每隔1ms產(chǎn)生一次定時中斷,在中斷服務(wù)程序中對P1.0引腳輸出信號取反,即可達(dá)到題目的要求。 選用T0定時功能,使用工作模式0。 TC為7192=1C18H,轉(zhuǎn)換為二進(jìn)制數(shù)TC =0001110000011000B,取低13位,其中高8位為E0H,低5位為18H。 計數(shù)初值為7192,定時時間為 5.3 定時器/計數(shù)器工作模式及應(yīng)用2

17、022/7/21215.3 定時器/計數(shù)器工作模式及應(yīng)用TMOD設(shè)定 (2)編程 ORG 0000H AJMP MAIN ORG 000BH ;T0中斷入口地址 AJMP INQP ORG 0030HMAIN: MOV SP,#60H ;設(shè)置堆棧指針2022/7/21225.3 定時器/計數(shù)器工作模式及應(yīng)用 MOV TMOD,#00H ;寫入控制字 MOV TH0,#0E0H ;寫定時常數(shù)(定時1ms) MOV TL0,#18H SETB TR0 ;啟動T0 SETB ET0 ;允許T0中斷 SETB EA ; 開放CPU中斷HERE: AJMP HERE ;等待定時中斷INQP: MOV T

18、H0,#0E0H ;重新寫入定時常數(shù) MOV TL0,#18H CPL P1.0 ;P1.0變反輸出 RETI ;中斷返回 END2022/7/21235.3.2 模式1及應(yīng)用 當(dāng)TMOD中的M1M0=01時,選定工作模式1。模式1的定時器/計數(shù)器邏輯結(jié)構(gòu)如圖5-4所示。在模式1下,定時器/計數(shù)器是由THx中的8位和TLx中的8位組成一個16位加1計數(shù)器。模式1的結(jié)構(gòu)和操作與模式0完全類似,其唯一的差別僅僅在于計數(shù)器的位數(shù)不同。 5.3 定時器/計數(shù)器工作模式及應(yīng)用2022/7/2124【例題5-2】 已知時鐘頻率為6MHz,要求在P3.4引腳上產(chǎn)生周期為40ms的方波輸出。解:(1)題意分析

19、定時器初始化。 方波的周期為40ms,則需要設(shè)定20ms的定時,每隔20ms產(chǎn)生一次定時中斷,在中斷服務(wù)程序中對P3.4引腳輸出信號取反,即可達(dá)到題目的要求。 時鐘頻率為6MHz ,選用T0定時功能,若用模式0,其最長定時時間為16.384ms,無法直接實現(xiàn),所以使用工作模式1。定時時間t=20ms,則初值為: 5.3 定時器/計數(shù)器工作模式及應(yīng)用2022/7/2125 (2)編程 ORG 0000H AJMP MAIN ORG 000BH ;T0中斷入口地址 AJMP INQP ORG 0030HMAIN: MOV SP,#60H ;設(shè)置堆棧指針5.3 定時器/計數(shù)器工作模式及應(yīng)用TC為55

20、536=DBF0H,其中高8位為0DBH,低8位為0F0H。TMOD的設(shè)定 2022/7/2126 MOV TMOD, #01H ;寫控制字 MOV TH0, #0DBH ;寫定時常數(shù)(定時20ms) MOV TL0, #0F0H SETB TR0 ;啟動T0 SETB ET0 ;允許T0中斷 SETB EA ; 開放CPU中斷HERE:AJMP HERE ;等待定時中斷INQP: MOV TH0, #0DBH ;重寫定時常數(shù) MOV TL0, #0F0H CPL P3.4 ;P3.4變反輸出 RETI ;中斷返回 END5.3 定時器/計數(shù)器工作模式及應(yīng)用2022/7/2127【例題5-3】

21、 實時時鐘的程序設(shè)計 1. 設(shè)計的基本思想 可以用定時器/計數(shù)器來實現(xiàn)實時時鐘。時鐘的最小計時單位是秒,如何獲得1秒的定時呢?從定時器的工作模式可知,如果時鐘頻率為6MHz,使用定時器模式1,最大的定時時間也只能達(dá)到131.072ms,無法直接實現(xiàn)。因此,可以將定時器的定時時間定為100ms,采用中斷方式進(jìn)行定時次數(shù)的累計,計滿10次為1s。 5.3 定時器/計數(shù)器工作模式及應(yīng)用定時初值的計算如下: TC為15536=3CB0H,其中高8位為3CH,低8位為0B0H。 2022/7/2128 2. 程序設(shè)計(1)主程序設(shè)計:主程序的主要功能是進(jìn)行定時器T1的初始化,并啟動T1,然后通過反復(fù)調(diào)用

22、顯示子程序,等待100ms定時中斷的到來。主程序的流程如圖5-5所示。 5.3 定時器/計數(shù)器工作模式及應(yīng)用2022/7/2129(2)中斷服務(wù)程序設(shè)計:中斷服務(wù)程序的主要功能是實現(xiàn)時、分、秒的計時處理,程序流程如圖所示 。5.3 定時器/計數(shù)器工作模式及應(yīng)用2022/7/21305.3.3 模式2及應(yīng)用 當(dāng)TMOD中的M1M0=10時,選定工作模式2。該模式下,將16位計數(shù)寄存器分為兩個8位寄存器,組成一個能自動重裝入初值的8位加1計數(shù)器,定時器/計數(shù)器邏輯結(jié)構(gòu)如圖所示。 5.3 定時器/計數(shù)器工作模式及應(yīng)用2022/7/2131 在模式2中,TLx作為8位計數(shù)器,THx作為定時初值或計數(shù)初

23、值寄存器。當(dāng)TLx計數(shù)溢出時,硬件自動使TFx置位、向CPU申請中斷,同時自動將THx的內(nèi)容重新裝入TLx中,繼續(xù)計數(shù)。重新裝入不影響THx的內(nèi)容。 模式0和模式1在每次計數(shù)滿溢出后,計數(shù)器都要置0,要開始新的計數(shù)還需要重置計數(shù)初值。而模式2具有初值自動裝入功能,避免了編成裝入初值的麻煩,適合用于較高精度的定時信號發(fā)生器,通常作為串行口通信時的波特率發(fā)生器使用。 5.3 定時器/計數(shù)器工作模式及應(yīng)用【例題5-4】 已知時鐘頻率為,當(dāng)T0(P3.4)引腳輸入信號發(fā)生從1到0的負(fù)跳變時,則從P1.0引腳上輸出一個頻率為5KHz的方波。2022/7/21325.3 定時器/計數(shù)器工作模式及應(yīng)用 (1

24、)工作模式選擇 根據(jù)題目的要求,T0(P3.4)引腳的輸入信號可視為外部中斷源,定時器/計數(shù)器T0設(shè)置為工作模式1、計數(shù)方式,其初值設(shè)為0FFFFH,當(dāng)外部計數(shù)輸入端T0(P3.4)引腳發(fā)生一次負(fù)跳變時,計數(shù)器T0加1溢出后,使標(biāo)志位TF0置1,并向CPU發(fā)出中斷請求,在T0的中斷服務(wù)子程序中,啟動定時器/計數(shù)器T1在工作模式2定時,每 產(chǎn)生一次中斷,在定時器T1的中斷服務(wù)子程序中對P1.0取反,使P1.0產(chǎn)生頻率為5KHz的方波。 (2)計算T1初值T1的初值計算如下: 2022/7/2133(3)編程 ORG 0000HRESET: LJMP MAIN ;轉(zhuǎn)向主程序 ORG 000BH L

25、JMP IT0P ;轉(zhuǎn)T0中斷服務(wù)程序 ORG 001BH LJMP IT1P ;轉(zhuǎn)T1中斷服務(wù)程序 ORG 1000H MAIN: MOV SP,#60H ;主程序,設(shè)堆棧指針 MOV TMOD,#25H ;T0為模式1、計數(shù)方 ;式,T1為模式 2 MOV TL0,#0FFH ;T0置計數(shù)初值 MOV TH0,#0FFH SETB ET0 ;允許T0中斷5.3 定時器/計數(shù)器工作模式及應(yīng)用2022/7/2134 MOV TL1,#9CH ;T1置計數(shù)初值 MOV TH1,#9CH SETB EA ;CPU開中斷 SETB TR0 ;啟動T0 HERE: AJMP HERE ORG 1200

26、H ;T0中斷服務(wù)程序 IT0P: CLR TR0 ;停止T0計數(shù) SETB ET1 ;允許T1中斷 SETB TR1 ;啟動T1 RETI ORG 1300H ;T1中斷服務(wù)程序 IT1P: CPL P1.0 ; P1.0位取反 RETI END5.3 定時器/計數(shù)器工作模式及應(yīng)用2022/7/2135 1定時器初值計算: 定時器/計數(shù)器T0定時工作模式2,TL0為8位計數(shù)器,TH0為預(yù)置寄存器。定時360s的初值TC1、 40s的初值TC2 計算如下:5.3 定時器/計數(shù)器工作模式及應(yīng)用【例題5-5】 用定時器/計數(shù)器T0、以定時工作模式2,在P1.0輸出周期為400s,占空比為9:10的

27、脈沖,如圖所示。設(shè) ,請編程實現(xiàn)(查詢方式)。 解:由題意可知,P1.0輸出高電平持續(xù)360s,輸出低電平持續(xù)40s。 2022/7/21365.3 定時器/計數(shù)器工作模式及應(yīng)用2程序流程設(shè)計 2022/7/21373編程實現(xiàn) 5.3 定時器/計數(shù)器工作模式及應(yīng)用 ORG 0000H AJMP MAIN ORG 0040HMAIN:MOV SP,#60H SETB P1.0 MOV TMOD, #02H MOV IE, #00H MOV TL0, #4CH MOV TH0, #0ECHAGAIN:SETB TR0 LOOP:JBC TF0,LOOP1 AJMP LOOP LOOP1:CPL P

28、1.0 JNB P1.0,LOOP2 MOV TH0, #0ECH AJMP LOOP LOOP2: MOV TH0,#4CH AJMP LOOP HERE: SJMP HERE END2022/7/21385.3.4 模式3及應(yīng)用 TMOD中的M1M0l1時,選定工作模式3。在工作模式3下,T0分為兩個獨立的8位加1計數(shù)器TH0和TL0。其中TL0既可用于定時,也可用于計數(shù);TH0只能用于定時。T1不能在模式3下工作。 5.3 定時器/計數(shù)器工作模式及應(yīng)用1.工作模式3下的定時器/計數(shù)器T0 2022/7/21395.3 定時器/計數(shù)器工作模式及應(yīng)用2. T0在工作模式3下時的定時器/計數(shù)器

29、T1 TL0:8位定時器計數(shù)器,它占用了T0的各控制位、引腳和中斷源。即 、GATE、啟動停止控制位TR0、T0引腳(P3.4)及計數(shù)器溢出標(biāo)志位TF0和T0的中斷服務(wù)入口地址(000BH)等。 TH0:作為8位定時器用,它占用了定時器計數(shù)器T1的啟動停止控制位TR1、計數(shù)溢出標(biāo)志位TF1及T1中斷服務(wù)入口地址(001BH)。TH0只能對機器周期進(jìn)行計數(shù),因此,它只能用作內(nèi)部定時,不能用作對外部脈沖進(jìn)行計數(shù)。 T0工作模式3下時的定時器/計數(shù)器T1的邏輯結(jié)構(gòu)如圖。T1不能工作在模式3下,只能選模式0、1或2,此時,定時器/計數(shù)器T1由 位控制其為定時或計數(shù)功能。當(dāng)計數(shù)器溢出時,只能將輸出送往串

30、行口。通常作串行口波特率發(fā)生器時或不需要中斷的地方。定時器/計數(shù)器T1的啟動和關(guān)閉比較特殊,設(shè)置好T1的工作模式,就開始計數(shù)。若要停止計數(shù),只需要送入一個設(shè)置定時器T1為模式3的命令即可。2022/7/21405.3 定時器/計數(shù)器工作模式及應(yīng)用【例題5-6】 設(shè) ,編程實現(xiàn)用AT89S51產(chǎn)生兩個方波,一個方波周期為200s,另一個方波周期為400s。 2022/7/2141(2)定時常數(shù)計算:TL0時常記為TCL0,需要定時100s;TH0時常記為TCH0,需要定時200s。 (1)工作模式的選擇:這時T0采用模式3工作,其中,TL0產(chǎn)生100s定時,由P1.0輸出方波1;TH0產(chǎn)生200

31、s定時,由Pl.1輸出方波2。 5.3 定時器/計數(shù)器工作模式及應(yīng)用2022/7/2142(3)編程 ORG 0000H AJMP MAIN ORG 000BH AJMP ITL0 ORG 00lBH AJMP ITH0 ORG 0100HMAIN: MOV SP, #60H MOV TMOD,03H MOV TL0,0B3H MOV TH0,66H SETB TR0 SETB TR1SETB ET0 SETB ET1 SETB EA HERE: AJMP HEREITL0: MOV TL0,0B3H CPL P1.0 RETIITH0: MOV TH0,66HCPL P1.1 RETIEND

32、 5.3 定時器/計數(shù)器工作模式及應(yīng)用2022/7/21435.3.5 定時器/計數(shù)器門控位的應(yīng)用 門控位GATE可用作對引腳上輸入的高電平持續(xù)時間進(jìn)行計量。一般情況下,設(shè)置門控位GATE=0時,定時器/計數(shù)器的運行只受TRx的控制。當(dāng)門控位GATE=1時,定時器/計數(shù)器的運行同時受到TRx為和引腳電平的控制。據(jù)此,當(dāng)設(shè)置GATE位為“1”、定時器/計數(shù)器的啟動位TRx為“1”時,定時器/計數(shù)器的啟/停就完全取決于引腳輸入的信號。當(dāng)引腳電平為“1”時,則啟動定時器/計數(shù)器工作。當(dāng)引腳電平為“0”時,則停止定時器/計數(shù)器工作。這樣,定時器實際記錄的時間就是相應(yīng)引腳上高電平的持續(xù)時間。 5.3 定

33、時器/計數(shù)器工作模式及應(yīng)用2022/7/2144【例題5-7】 利用定時器計數(shù)器測定圖5-12所示波形的高電平持續(xù)時間。 5.3 定時器/計數(shù)器工作模式及應(yīng)用解法一(采用查詢的方式) 此題目實際上是要測量外部輸入正脈沖的寬度。T1作為定時器使用,當(dāng)門控信號GATE=1、TR1=1時,T1的啟動和關(guān)閉就由控制。當(dāng)為高電平時,啟動定時器工作直到=0為止,T1停止計數(shù)。然后讀出T1的計數(shù)值,此計數(shù)值再乘以機器周期即為外部輸入正脈沖的寬度。 2022/7/2145 ORG 0000H LJMP MAIN ORG 1000HMAIN: MOV TMOD,#90H ;設(shè)置T1為模式1,GATE位置1 MO

34、V TL1,#00H ;設(shè)置定時初值 MOV TH1,#00HLP1: JB P3.3,LP1 ; P3.3為高電平,等待 SETB TR1 ; P3.3為低電平時,置TR1位為1LP2: JNB P3.3,LP2 ; 當(dāng)P3.3為低電平時,再等待LP3: JB P3.3,LP3 ; 當(dāng)P3.3為高電平時,啟動T1 CLR TR1 ; P3.3為低電平時,高電平脈寬定時結(jié)束 MOV R0,TH1 MOV R1,TL1 ;(R0R1)的內(nèi)容是高電平的寬度HERE: SJMP HERE END5.3 定時器/計數(shù)器工作模式及應(yīng)用2022/7/2146解法二(采用定時器中斷的方法): 如果被測脈沖的

35、寬度大于65536個機器周期時,可設(shè)一個中斷次數(shù)計數(shù)器R2,每當(dāng)定時器/計數(shù)器記滿65536個機器周期而產(chǎn)生溢出中斷時,中斷次數(shù)計數(shù)器R2加1,而定時器/計數(shù)器清零后重新從0開始計數(shù),直到脈沖信號變?yōu)?時結(jié)束。 5.3 定時器/計數(shù)器工作模式及應(yīng)用 ORG 0000H AJMP MAIN ;轉(zhuǎn)向主程序 ORG 000BH ;T0中斷入口地址 AJMP INQP ORG 0030H MAIN: MOV TMOD,#09H ;T0為模式1,GATE=1 MOV TH0, #00H ;設(shè)置定時初值 MOV TL0, #00H 2022/7/2147 MOV IE, #82H ;開放CPU和T0中斷

36、MOV R2, #00H ;中斷次數(shù)計數(shù)器清0 LOOP1: JB P3.2,LOOP1 ;等待變成低電平 SETB TR0 ;置TR0為1,為T0啟動作準(zhǔn)備 LOOP2: JNB P3.2,LOOP2 ;等待變成高電平,啟動T0 LOOP3: JB P3.2,LOOP3 ;等待變成低電平,停止定時 CLR TR0 ;停止T0 MOV R0, TL0 ;取出當(dāng)前的定時時間 MOV R1, TH0 HERE: SJMP HERE INQP: INC R2 ;中斷次數(shù)計數(shù)器加1 RETI END ;(R2)*65536+(R1R0)*機器周期。 5.3 定時器/計數(shù)器工作模式及應(yīng)用2022/7/2

37、148解法三(采用外部輸入信號和定時器中斷的方法): 設(shè)一個定時器中斷次數(shù)計數(shù)器R2,每當(dāng)定時器/計數(shù)器記滿65536個機器周期而產(chǎn)生溢出中斷時,中斷次數(shù)計數(shù)器R2加1,而定時器/計數(shù)器清零后重新從0開始計數(shù),直到輸入的脈沖信號變?yōu)?時下跳沿申請中斷,進(jìn)入外部 中斷服務(wù)計算時間。 5.3 定時器/計數(shù)器工作模式及應(yīng)用 ORG 0000H AJMP MAIN ;轉(zhuǎn)向主程序 ORG 0003H ;INT0中斷入口地址 AJMP INT0AN ORG 000BH ;T0中斷入口地址 AJMP T0AN ORG 0100H MAIN: MOV TMOD,#09H ;T0為模式1,GATE=1 2022

38、/7/2149 MOV TH0, #00H ;設(shè)置定時初值 MOV TL0, #00H MOV IE, #83H ;CPU開放、INT0和T0中斷 MOV R2, #00H ;中斷次數(shù)計數(shù)器清0 SETB TR0 ;置TR0為1,為T0啟動作準(zhǔn)備 HERE: SJMP HERE T0AN: INC R2 ;中斷次數(shù)計數(shù)器加1 RETI INT0AN: MOV R0, TL0 ;取出當(dāng)前的定時時間 MOV R1, TH0 MOV TH0, #00H MOV TL0, #00H 計算處理;(R2)*65536+(R1R0)*機器周期。 RETI END ;5.3 定時器/計數(shù)器工作模式及應(yīng)用2022/7/21505.3.6 看門狗定時器(WDT) 1. 看門狗定時器的組成 AT89S51單片機內(nèi)部設(shè)置了一個看門狗定時器(WDT),它由一個14位計數(shù)器和看門狗復(fù)位寄存器(WDTRST)構(gòu)成。主要是為了解決CPU程序運行時可能進(jìn)入混亂和死循環(huán)。外部復(fù)位時,WDT默認(rèn)為關(guān)閉狀態(tài),要啟動WDT,必須按順序?qū)?1EH和0E1H寫入看門狗復(fù)位寄存器(WDTRST的地址為0A6H)。當(dāng)啟動了WDT,它會隨晶體振蕩器在每個機器周期計數(shù),除硬件復(fù)位和

溫馨提示

  • 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

提交評論