單片機原理及應(yīng)用課件陳林林第5章定時計數(shù)器原理及其應(yīng)用2rev1_第1頁
單片機原理及應(yīng)用課件陳林林第5章定時計數(shù)器原理及其應(yīng)用2rev1_第2頁
單片機原理及應(yīng)用課件陳林林第5章定時計數(shù)器原理及其應(yīng)用2rev1_第3頁
單片機原理及應(yīng)用課件陳林林第5章定時計數(shù)器原理及其應(yīng)用2rev1_第4頁
單片機原理及應(yīng)用課件陳林林第5章定時計數(shù)器原理及其應(yīng)用2rev1_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片微機原理及應(yīng)用教學課件,定時/ 原理及其應(yīng)用,Email:,5.1 定時/計數(shù)器基本原理 單片機內(nèi)部集成了兩個16位定時/計數(shù)器,分別稱為定時/計數(shù)器0(T0)和定時/計數(shù)器1(T1) 兩個定時/計數(shù)器的結(jié)構(gòu)一樣,通過TMOD的設(shè)置,都可有4種工作方式,除方式3外,其他3種工作方式的工作原理一樣。,第五章 定時/計數(shù)器,單片微機原理及應(yīng)用教學課件,2個16位定時器/計數(shù)器 (52系列有3個16位Timer) 定時器:對片內(nèi)機器時鐘(周期方波)進行計數(shù) 計數(shù)器:對Tx引腳輸入的負脈沖進行計數(shù),與Timer工作有關(guān)的特殊功能寄存器: TCON 和 TMOD,第五章 定時/計數(shù)器,定時/計數(shù)器的

2、核心部件是一個16位的加1計數(shù)器 兩個定時/計數(shù)器的加1計數(shù)器共由2組、4個特殊功能計數(shù)器構(gòu)成,它們分別是: TH0:T0加1計數(shù)器的高8位 TL0:T0加1計數(shù)器的低8位 TH1:T1加1計數(shù)器的高8位 TL1:T1加1計數(shù)器的低8位,對定時/計數(shù)器啟動后,加1計數(shù)器可自動對規(guī)定脈沖源的脈沖數(shù)進行計數(shù),TLX計數(shù)滿后自動向相應(yīng)的THX進位,當THX也計數(shù)滿后,將置位TCON特殊功能寄存器中的TFX位,供程序查詢或向CPU發(fā)出中斷請求。 定時/計數(shù)器THX和TLX均可按字節(jié)讀寫,對其寫入特定的數(shù)值,可控制從開始計數(shù)到計數(shù)溢出置位TFX所需計數(shù)的脈沖個數(shù);而對其讀出,則可了解從啟動定時器到現(xiàn)在所

3、計的脈沖個數(shù)。,“規(guī)定脈沖源”,定時/計數(shù)器能夠計數(shù)的“規(guī)定脈沖源”有兩個: 一個是內(nèi)部振蕩源12分頻后形成的脈沖,即對機器周期進行計數(shù); 另一個是對從T0(或T1)引腳引入的外部脈沖計數(shù),這種情況下,計數(shù)器在每個機器周期的S5P2節(jié)拍期間采樣外部輸入信號,若一個周期采樣值為“1”,下一個周期的采樣值為“0”,則計數(shù)器加1,所以,對外部信號的最高計數(shù)率是振蕩頻率的1/24,且要求外部輸入信號的高、低電平時間均需保持一個機器周期以上。,周期信號關(guān)系圖,由于單片機振蕩頻率是已知的,因此對內(nèi)部振蕩源12分頻后形成的脈沖進行計數(shù)時,即可完成定時。 實現(xiàn)定時的具體作法是,向THX、TLX寫入特定的基數(shù),

4、可預(yù)先確定從定時/計數(shù)器開始運行到THX、TLX溢出所需的時間,一旦TFX置位,則經(jīng)歷了預(yù)期的時間,從而完成定時。,加1計數(shù)器的工作原理,單片微機原理及應(yīng)用教學課件,Timer的2個特殊功能寄存器(TCON,TMOD),TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,定時器控制寄存器TCON (88H),TFx: Timer0/1計數(shù)溢出標志位。 =1 計數(shù)溢出; =0 計數(shù)未滿 TFx標志位可用于申請中斷或供CPU查詢。 在進入中斷服務(wù)程序時會自動清零;但在 查詢方式時必須軟件清零。,TRx: Timer0/1運行控制位。 =1 啟動計數(shù); =0 停止計數(shù),單片微機原理及應(yīng)用

5、教學課件,TR0/TR1:Timer0/1運行控制位: TR0/TR1 =0 時,Timer0/1停止計數(shù) TR0/TR1 =1 時,Timer0/1啟動計數(shù),定時器T0/T1 中斷申請過程, 在已經(jīng)開放T0/T1中斷允許且已被啟動的前提下: T0/T1加滿溢出時 TF0/TF1標志位自動置“1” 檢測到TCON中TF0/TF1變“1”后,將產(chǎn)生指令: LCALL 000BH/LCALL 001BH 執(zhí)行中斷服務(wù)程序, TF0/TF1標志位會自動清“0”,以備下次中斷申請。,定時/計數(shù)器可按片內(nèi)機器周期定時,也可對由T0/T1引腳輸入一個負脈沖進行加法計數(shù),TF1 TR1 TF0 TR0 IE

6、1 IT1 IE0 IT0,TCON (88H),單片微機原理及應(yīng)用教學課件,GATE C / T M1 M0 GATE C / T M1 M0,定時器方式寄存器TMOD (89H),T1,T0,M1,M0:工作方式定義位 ( 定義4 種方式 ):,C/T :計數(shù)器/定時器選擇位 = 1 外部事件計數(shù)器。對Tx引腳的負脈沖(負跳變)計數(shù); = 0 片內(nèi)時鐘定時器。對機器周期脈沖計數(shù)定時。,0 0:13位 Timer用它無益,不要記它! 0 1:16位 Timer經(jīng)常用到 1 0:可自動重裝的 8位 Timer經(jīng)常用到 1 1:T0 分為2個8位 Timer;T1 此時不工作 因為沒有帶來甚麼好

7、處,幾乎無用,單片微機原理及應(yīng)用教學課件,GATE C / T M1 M0 GATE C / T M1 M0,T1,T0,GATE門控位: Timer可由軟件與硬件兩者控制 GATE = 0 普通用法 Timer的啟/停由軟件對TRx位寫“1”/“0”控制,定時器方式寄存器TMOD(續(xù)),(89H), GATE = 1 門控用法 Timer的啟/停由軟件對TRx位寫“1”/“0” 和在INTx引腳上出現(xiàn)的信號的高/低共同控制。 軟件啟動TR0或TR1后,外部中斷引腳 /INT0 或 /INT1也必須同時為高電平,才能啟動定 時/計數(shù)器T0或T1工作,定時器結(jié)構(gòu)與工作方式,兩個定時/計數(shù)器工作方

8、式0 方式2的原理完全相同,只是有關(guān)的加1計數(shù)器(THX、TLX)及TMOD、TCON中對應(yīng)的控制、標識位不同;對應(yīng)的外部輸入引腳不同。,工作方式0:13位的定時/計數(shù)器,定時器結(jié)構(gòu)與工作方式,13位計數(shù)模式:由TL1的低5位(高3位未用)和TH1的8位組成加1計數(shù)器。 TL1的低5位溢出時向TH1進位,TH1溢出時,置位TCON中相應(yīng)的TF1標志,向CPU發(fā)出中斷請求或供程序查詢。 從啟動到溢出的定時時間為: T213(TH1TL1)初值機器周期 最長定時時間為:T213機器周期 最大脈沖計數(shù)個數(shù)為:N2138192,工作方式0:13位的定時/計數(shù)器,定時器結(jié)構(gòu)與工作方式,工作方式1:16位

9、的定時/計數(shù)器,加1計數(shù)器長度為16位,由TL1作為低8位、TH1作為高8位, 定時時間為: T216(TH1TL1)初值機器周期 最長定時時間為: T216機器周期 最大脈沖計數(shù)個數(shù)為: N21665536,單片微機原理及應(yīng)用教學課件,定時器結(jié)構(gòu)與工作方式,工作方式1:16位的定時/計數(shù)器,單片微機原理及應(yīng)用教學課件, THx/TLx賦初值:THx賦高8位,TLx賦低8位,工作方式1 的編程要點:, TMOD選方式: 寫“M1,M0”=01 b 選方式1, 若不用門控位,直接用軟件寫TRx控制啟/停 若使用門控位,先置位TRx,然后由INTx端 的高/低電平來控制其啟/停, 若要允許中斷,還

10、須先置位ETx、EA等中斷 允許控制位,并編寫中斷服務(wù)程序 若不用中斷,可查詢“計數(shù)溢出標志TFx” 的方式工作,但溢出標志TFx須軟件清0,單片微機原理及應(yīng)用教學課件,定時器(方式1)應(yīng)用程序舉例:,分析:已知fosc = 6MHz 則: (振蕩周期)1Tc=1/6MHz (機器周期)1Tm=12Tc=12/6MHz=2S 粗略地說:Tmin 2S 16位定時器最大數(shù)值為:216=65536=0FFFFH+1 故選擇方式 1 工作可以得到: Tmax = 655362 = 131072S131.072mS,例1:若晶振頻率為6MHz,計算單片機的最小與最大定時時間:,單片微機原理及應(yīng)用教學課

11、件,分析:已知fosc = 6MHz 則: (機器周期)1Tm=12Tc=12/6MHz=2S 100mS2 S = 50000 16位定時器最大數(shù)值為: 216 = 65536 (=0FFFFH+1) 故選擇方式1工作可以滿足要求。 計算初值:6553650000=15536=3CB0H,例2:要求對T0產(chǎn)生100mS定時進行初始化。 (晶振=6MHz),定時器(方式1)應(yīng)用程序舉例:,單片微機原理及應(yīng)用教學課件,GATE C / T M1 M0 GATE C / T M1 M0,定時器方式 寄存器TMOD,由分析得知:T0選擇方式1,初值=3CB0H,X X X X 0 0 0 1,初始化

12、:MOV TMOD,#01H ;選 T0 方式 1 MOV TH0, #3CH ;賦初值高8位 MOV TL0, #0B0H ;賦初值低8位 SETB TR0 ;啟動 T0定時 若需要定時器0產(chǎn)生中斷還應(yīng)當寫如下語句: SETB ET0 ;開T0中斷允許 SETB EA ;開總中斷允許 以及相應(yīng)的中斷服務(wù)程序。,該方式下,加1計數(shù)器溢出后可自動重新加載初值,不必軟件干預(yù) 軟件簡單,定時更為準確,特別適合用于需要連續(xù)高精度定時的場合(如串口波特率發(fā)生器)。 定時時間為: T28TL1初值機器周期 最長定時時間為: T28機器周期,工作方式2:8 位自動重裝的定時/計數(shù)器,單片微機原理及應(yīng)用教學課

13、件,工作方式2:8 位自動重裝的定時/計數(shù)器,振蕩器,12,TLx (8位),TFx,申請中斷,Tx端,TRx位,GATE位,INTx端,1, AJMP MAIN ORG 001BH AJMP TINT ;見下一頁 MAIN: MOV TMOD,#10H ;選T1方式1 MOV TH1, #3CH ;賦初值3CB0H=15536(只能定100mS) MOV TL1,#0B0H MOV 30H,#10 ;軟件計數(shù)單元30H 初值=10 CLR TF0 ;芯片復(fù)位時已經(jīng)是“0”,此句可有可無 SETB ET1 ;開T1中斷 SETB EA ;開總中斷 SETB TR1 ;啟動T1 HERE: JB

14、C F0,TIMEUP ;原地等待“1秒到”的標志 F0 AJMP HERE TIMEUP:(do something) ;定時1秒到了以后要做的事情 AJMP HERE,中斷服務(wù)在主程序中,單片微機原理及應(yīng)用教學課件,長定時舉例(續(xù)):,ORG 0000H AJMP MAIN ORG 001BH AJMP TINT MAIN: TINT:DJNZ 30H,RTN ;若中斷不到10次就返回 SETB F0 ;已經(jīng)中斷夠10次了“置1”標志位 MOV 30H,#10 ;為下一個1秒定時做準備 RTN: MOV TH1,#3CH ;再賦定時100mS的初值3CB0H MOV TL1,#0B0H R

15、ETI ;中斷返回 END,單片微機原理及應(yīng)用教學課件,將此例的中斷服務(wù)改寫在中斷服務(wù)程序中:,ORG 0000H AJMP MAIN ORG 001BH AJMP TINT ;見下一頁 MAIN: MOV TMOD,#10H ;選T1方式1 MOV TH1,#3CH ;賦初值3CB0H=15536(只能定100mS) MOV TL1,#0B0H MOV 30H,#10 ;軟件計數(shù)單元30H 初值=10 CLR TF0 ;芯片復(fù)位時已經(jīng)是“0”,此句可有可無 SETB ET1 ;開T1中斷 SETB EA ;開總中斷 SETB TR1 ;啟動T1 HERE: AJMP HERE ;原地等待中斷

16、,單片微機原理及應(yīng)用教學課件,長定時舉例(續(xù)):,ORG 0000H AJMP MAIN ORG 001BH AJMP TINT MAIN: TINT:DJNZ 30H,RTN ;若中斷不到10次就返回 MOV 30H,#10 ;為下一個1秒定時做準備 (do something);定時1秒到了以后要做的事情) RTN: MOV TH1,#3CH ;再賦初值 MOV TL1,#0B0H RETI ;中斷返回 END,中斷服務(wù),例6 使用定時器實現(xiàn)長時間的延時,思路: 把定時器設(shè)置為50ms,另外設(shè)置兩個軟件計數(shù)器20、60 ,總時間為 50ms2060=60000ms=1分鐘 T1為方式1則M

17、1M0=01H,使用定時器G/T=0 ,GATE=0 ,TMOD=10H 時鐘頻率為12MHz。方式1為16位計數(shù)器,最大65536,減去50000等于15536,則計數(shù)器初值為3CB0H,ORG 0000H ;程序開始 LJMP MAIN ORG 0030H MAIN: MOV 30H,#20 ;30h,31h分別置常數(shù)20,60 MOV 31H,#60; MOV TMOD,#10H ;定時器方式1 MOV TH1,#03CH ;置定時器初值 MOV TL1,#0B0H MOV IE,#00H ;禁止中斷 SETB TR1 ;起動定時器 LOOP: JBC TF1 ,LOOP1 ;查詢定時器時間到轉(zhuǎn)loop1 AJMP LOOP LOOP1:MOV TH1,#03CH ;重置定時器 MOV TL1,#0B0H DJNZ 30H,LOOP ;定時是否到了20次 MOV 30H,#20 DJNZ 31H,LOOP ;定時是否到了60次 MOV 31H,#

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論