單片機(jī)原理與應(yīng)用 第5章 定時器計數(shù)器_第1頁
單片機(jī)原理與應(yīng)用 第5章 定時器計數(shù)器_第2頁
單片機(jī)原理與應(yīng)用 第5章 定時器計數(shù)器_第3頁
單片機(jī)原理與應(yīng)用 第5章 定時器計數(shù)器_第4頁
單片機(jī)原理與應(yīng)用 第5章 定時器計數(shù)器_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單片機(jī)原理與應(yīng)用,北京交通大學(xué)電子信息工程學(xué)院自動化系 2017年1月,北京交通大學(xué),2,第5章 定時器/計數(shù)器,本章主要內(nèi)容 定時/計數(shù)器的功能 與定時/計數(shù)器有關(guān)的寄存器 定時/計數(shù)器四種工作方式 定時器的應(yīng)用,北京交通大學(xué),3,本章要求:熟練掌握計數(shù)/定時編程方法,定時方法,軟件定時 硬件定時 可編程定時器定時,北京交通大學(xué),4,TF1 TR1 TF0 TR0 GATE C/T M1 M0 GATE C/T M1 M0,TCON,TMOD,TH1 TL1 TH0 TL0,CPU,一、定時/計數(shù)器的功能,圖1定時/計數(shù)器與TMOD、TCON的結(jié)構(gòu)框圖,共有兩個可編程的定時/計數(shù)器T0和T1

2、 都是十六位加法計數(shù)器結(jié)構(gòu),分別由TH0、TL0 和TH1、TL1四個8位計數(shù)器組成 每個定時計數(shù)器都具有定時和計數(shù)兩種功能,北京交通大學(xué),5,圖 2 定時/計數(shù)器的結(jié)構(gòu)框,北京交通大學(xué),6,功能:對外來脈沖進(jìn)行計數(shù) 外來計數(shù)脈沖加在單片機(jī)的兩個信號引腳T0(P3.4)T1(P3.5) 外部輸入的脈沖在負(fù)跳變時觸發(fā)計數(shù) 計數(shù)器在每個機(jī)器周期的S5P2期間采樣外部輸入信號。 若一個周期采樣值為1,下一個周期采樣值為0,則計數(shù)器加1。 脈沖的頻率最高為振蕩頻率的1/24 外部輸入信號的高電平和低電平保持時間大于一個機(jī)器周期 計數(shù)器計滿回零,發(fā)中斷申請,1.計數(shù)功能,北京交通大學(xué),7,2.定時功能

3、計數(shù)器的計數(shù)來實(shí)現(xiàn) 計數(shù)脈沖:每個機(jī)器周期產(chǎn)生一個計數(shù)脈沖。即計數(shù)頻率為振蕩頻率的1/12。 根據(jù)計數(shù)器的預(yù)置值計算出定時時間。按定時時間的要求,計算出計數(shù)器的預(yù)置值。,北京交通大學(xué),8,二、定時/計數(shù)器的方式和控制寄存器 1.定時器控制寄存器(TCON) 控制方式:外部中斷控制與定時控制。 定時控制功能: 定時器在溢出時,設(shè)定標(biāo)志位(TFx) 控制定時器的運(yùn)行或停止等(TRx),北京交通大學(xué),9,定時控制寄存器(TCON),(88H),TF1 TR1TF0 TR0 IE1 IT1 IE0 IT0,8F 8E 8D 8C 8B 8A 89 88,INT0觸發(fā)方式 0:電平觸發(fā)(低) 1:邊沿觸

4、發(fā)(下跳沿),INT0請求標(biāo)志 0:無請求(硬件置位或清除) 1:有請求,INT1觸發(fā) 請求標(biāo)志,用于定時/計數(shù)器,位地址,外部中斷,北京交通大學(xué),10,TF0(TF1):為T0(T1)定時器溢出中斷標(biāo)志位 當(dāng)T0(T1)計數(shù)溢出時,由硬件置位,并在允許中斷的情況下,發(fā)出中斷請求信號。 當(dāng)CPU響應(yīng)中斷轉(zhuǎn)向中斷服務(wù)程序(000BH,001BH)時,由硬件自動將該位清0。 TR0(TR1):為T0(T1)運(yùn)行控制位 當(dāng)TR0(TR1)=1時啟動T0(T1); TR0(TR1)=0時關(guān)閉T0(T1) 該位由軟件進(jìn)行設(shè)置。 復(fù)位時TCON清零,北京交通大學(xué),11,2.定時器方式寄存器(TMOD),用

5、于控制兩個定時/計數(shù)器的工作方式 高4位定義T1,低4位定義T0, 字節(jié)地址為89H,格式:,GATE C/T M1 M0 GATE C/T M1 M0,T0,T1,GATE:門控位,GATE0,以運(yùn)行控制位TRx啟動定時器 GATE1,啟動信號=TRxINTx,在沒有外中斷請求信號(INTx=1)才允許定時器啟動,北京交通大學(xué),12,C/T:定時或計數(shù)方式選擇位: C/T0,定時工作方式; C/T1,計數(shù)工作方式。 M1M0:工作方式選擇位: M1M000 方式0:13位計數(shù)(TL0-4、TH0-7) M1M001方式1:16位計數(shù) M1M010方式2:8位計數(shù) 自動裝入計數(shù)器初值功能 M1

6、M011方式3:T0分為兩個8位計數(shù)器 TL0允許作為定時或計數(shù)方式 TH0只能作為定時方式,北京交通大學(xué),13,三、定時/計數(shù)器工作方式 1.方式0 方式0工作邏輯結(jié)構(gòu)圖。,12 分頻,fosc,C/T=0 C/T=1,TL1 TH1 (5位)(8位),TF1,中斷,T1,控 制,GATE INT1,+,TR1,1,軟件啟動方式,1/24fosc,1/12fosc,計數(shù)輸入,中斷,TF1 ET1 EA,北京交通大學(xué),14,方式0是13位結(jié)構(gòu)的工作方式,其計數(shù)器由 TH1的全8位和TL1的低5位構(gòu)成。TL1的高3位棄之 不用。 計數(shù)方式:計數(shù)值的范圍為:1-8192(213) 定時方式:定時時

7、間T的計算公式為: 啟動的條件是: (TRx=1)AND(GATE=1 OR INTx=1),2000H,T(213計數(shù)初值x)晶振周期12 或 T(213計數(shù)初值x)機(jī)器周期 機(jī)器周期=12/晶振頻率=12*晶振周期,北京交通大學(xué),15,方式0應(yīng)用舉例 設(shè)單片機(jī)晶振頻率fosc=6MHz,使用定時器1以方式0產(chǎn)生周期為500us的方波,并由P1.0輸出。以查詢或中斷方式完成。 解:計算定時初值x 欲產(chǎn)生500us的方波,在P1.0端以250us為周期交替輸出高低電平即可實(shí)現(xiàn)。為此,定時時間應(yīng)為250us。晶振為6MHz,則1個機(jī)器周期為(12/6)2us。 則: (213x)*2uS250u

8、S x80671111110000011B(2000H-7DH) 即: TH10FCH,TL103H。,北京交通大學(xué),16,步驟:,TMOD初始化,工作方式選擇 計數(shù)器初值計算 置位EA使CPU開中斷 置位ETx允許C/T中斷 置位TRx啟動計數(shù),北京交通大學(xué),17, TMOD初始化 定時器1,M1M0=00H(方式0) C/T=0(定時) GATE0(以軟件啟動定時器) 不用的位設(shè)定為0 TMOD為初始化00H。 TCON寄存器的TR1位來啟動(1) 或停止(0)定時器,北京交通大學(xué),18,程序設(shè)計 查詢方式: MOV TMOD,#00H ;T1工作在方式0 SETB TR1 ;啟動T1工作

9、 LOOP: MOV TL1,#03H MOV TH1,#0FCH ;置定時初值 WAIT: JNB TF1,WAIT ;定時未到,循環(huán)等待 CLR TF1 ;定時到,清TF1 CPL P1.0 ;由P1.0輸出,信號取反 SJMP LOOP ;循環(huán)輸出方波,北京交通大學(xué),19,中斷方式: ORG 8000H MOV TMOD,#00H ;T1工作在方式0 MOV TL1,#03H MOV TH1,#0FCH ;置定時初值 SETB EA ;開中斷 SETB ET1 ;允許T1中斷 LOOP: SETB TR1 ;啟動T1工作 WAIT: SJMP WAIT ;等待中斷 AJMP LOOP O

10、RG 001BH ;T1中斷入口 LJMP SUB ;跳至中斷服務(wù)程序SUB ORG 8100H ;中斷服務(wù)程序 SUB1: CPL P1.0 ;輸出信號取反 MOV TL1,#03H MOV TH1,#0FCH ;重置定時初值 RETI ;中斷返回,北京交通大學(xué),20,2.方式1 其邏輯電路和工作情況與方式完全相同。所不同的只是組成計數(shù)器的位數(shù)為16位。,計數(shù)值的范圍為: 1-65536(216) 定時時間的計算公式與方式0類似。即:,TL1,TH1,TF1,計數(shù)輸入,7 0 7 0,T(216計數(shù)初值x)晶振周期12 或 T(216計數(shù)初值x)機(jī)器周期,北京交通大學(xué),21,12 分頻,fo

11、sc,C/T=0 C/T=1,TL0 (8位),TF0,TR0,控 制,GATE INT0,+,TR0,TH0 (8位),重裝入,中斷,3.方式2 工作方式2邏輯結(jié)構(gòu)如圖。,北京交通大學(xué),22,該方式把16位計數(shù)器分為兩部分 既以TL1作計數(shù)器 以TH1作預(yù)置計數(shù)器 初始化計數(shù)初值分別裝入TL1和TH1中 當(dāng)計數(shù)溢出后,由預(yù)置寄存器TH1, 以硬件方法自動給計數(shù)器TL1重新加載 最大計數(shù)值只能到256,適用于循環(huán)定時或循環(huán)計數(shù)應(yīng)用,方式2具有自動重新加載功能,即自動加載計數(shù)初值,北京交通大學(xué),23,方式2應(yīng)用舉例 設(shè)單片機(jī)晶振頻率fosc=6MHz,使用T0以方式2產(chǎn)生周期為200us的方波,

12、并由P1.0輸出。 以查詢或中斷方式完成 解: 計算計數(shù)初值x,晶振為6MHz,則1個機(jī)器周期為2us。則: (28x)2100,x206CEH 即 TH00CEH,TL00CEH。,TMOD寄存器初始化 定時器0 M1M0=10H(方式2) C/T=0(定時) GATE0 (以軟件啟動定時器) 不用的位設(shè)定為0 最后得TMOD應(yīng)初始化為02H。,北京交通大學(xué),24,北京交通大學(xué),25, 用TCON寄存器的TR0位來啟動(1)或停止(0)定時器。 程序設(shè)計(查詢方式): MOV TMOD,#02H ;T0工作在方式2 MOV TL0,#0CEH MOV TH0,#0CEH ;置定時初值 SET

13、B TR0 ;啟動T0工作 WAIT: JNB TF0,WAIT ;定時未到, 循環(huán)等待 CLR TF0 ;定時到,清TF0 CPL P1.0 ;由P1.0輸出,信號取反 SJMP WAIT ;循環(huán)輸出方波,北京交通大學(xué),26,中斷方式: MOV TMOD,#02H ;T0工作在方式2 MOV TL0,#0CEH MOV TH0,#0CEH ;置計數(shù)初值 SETB EA ; 開中斷 SETB ET0 ; 允許T0中斷 LOOP: SETB TR0 ;啟動T0工作 WAIT: SJMP $ ;等待中斷 CLR TF0 ;計數(shù)溢出標(biāo)志位TF0清0 AJMP LOOP ORG 000BH ;中斷服務(wù)

14、程序 CPL P1.0 ;由P1.0輸出,信號取反 RETI ;中斷返回,北京交通大學(xué),27,TH0 (8位),TF1,T0,控制,GATE INT0,+,TR0,C/T=0 C/T=1,1/12fosc,1/12fosc TR1,中斷,TL0 (8位),TF0,控制,中斷,4. 方式3,計數(shù)/定時,定時,北京交通大學(xué),28,工作在方式3下的T0 T被拆成兩個獨(dú)立的8位計數(shù)器。 1.TL0既可以作計數(shù)器使用,又可以作定時器使用,其功能和操作方式與方式或方式1完全相同。 2.TH0只能作8位定時器使用,并占用了T的中斷資源TR1和TF1。,北京交通大學(xué),29,工作在方式3下的T1 如果T已工作在

15、方式3下: T1只能工作在方式02下,用于任何不需要中斷控制的場合 用作串行口的波特率發(fā)生器 通常只有當(dāng)T1用作串行口的波特率發(fā)生器時: T0才被定義為方式,以增加一個8位計數(shù)器。 T1設(shè)定工作方式2、計數(shù)器初值,T1便可自動運(yùn) 如停止計數(shù):只需送入一個把它設(shè)為方式3的控制字即可,這時T1直接把溢出標(biāo)志TF1送給串行口,北京交通大學(xué),30,四、定時器的應(yīng)用,定時器門控位GATE的應(yīng)用: 當(dāng)GATE=1時,定時器的啟動受外部INTx的控制。 在TRx=1時,若INTx=1,則啟動計數(shù); 若INTx=0,則停止計數(shù)。 應(yīng)用:測試外部脈沖的寬度。,北京交通大學(xué),31,12 分頻,fosc,C/T=0

16、 C/T=1,TL1 TH1 (8位)(8位),TF1,中斷,T1,控 制,GATE INT1,+,TR1,1,軟件啟動方式,1/24fosc,1/12fosc,計數(shù)輸入,中斷,TF1 ET1 EA,例:設(shè)被測脈沖由P3.3輸入,利用T1測試正脈沖的寬度。設(shè)fosc=12MHz,將測試結(jié)果存放在內(nèi)部RAM的40H,41H單元中。,北京交通大學(xué),32,四、定時器的應(yīng)用,分析: 測試時,1.檢測INT1端由低變高時, TR1=1啟動計數(shù);,P3.3 (INT1),置TR1=1 啟動計數(shù),停止計數(shù),2. INT1再次變低時,計數(shù)停止,此時的計數(shù)值即為被測正脈沖的寬度。 3.由于T1工作于方式1,所以

17、可測最大脈寬為65536uS(fosc=12MHz); 4.由于外部脈寬的最高頻率為fosc/24,所以,測試值的合理范圍是2-65536x2。,北京交通大學(xué),33,四、定時器的應(yīng)用,ORG 300H START:MOV TMOD,#90H ;GATE=1 ,T1方式1 MOV TL1,#00H ;從零開始計數(shù) MOV TH1,#00H MOV R0,#40H ;置數(shù)據(jù)指針 DONE:JNB P3.3,DONE ;等INT1變高 SETB TR1 ;啟動計數(shù) DONE1:JB P3.3,DONE1 ;等INT1變低,北京交通大學(xué),34,四、定時器的應(yīng)用,CLR TR1 ;停止計數(shù) MOV A,

18、TH1 ;存結(jié)果 MOV R0,A INC R0 MOV A,TL1; MOV R0,A END,北京交通大學(xué),35,練習(xí)題,編程實(shí)現(xiàn)利用定時器T1產(chǎn)生一個50Hz的方波,由P1.3輸出,設(shè)晶體振蕩器頻率為12MHz。,北京交通大學(xué),36,作業(yè) P118: 2, 9,北京交通大學(xué),37,ORG 8000H START:MOV TMOD,#09H ;GATE=1,方式1,定時 MOV TL0,#00H MOV TH0,#00H WAIT1:JB P3.2,WAIT1 SETB TR0 WAIT2:JNB P3.2,WAIT2 WAIT3:JB P3.2,WAIT3 CLR TR0 MOV R0,TL0 MOV R1,TH0 SJMP $,習(xí)題: 1.利用T0門控GATE測量INT0引腳出現(xiàn)的脈沖寬度 脈寬=計數(shù)值X機(jī)器周期 設(shè)T0方式1,GATE=1,TR0=1,計數(shù)初值=00H,INT0 (P3.2),計數(shù),停止,北京交通大學(xué),38,2.設(shè)重復(fù)周期大于1ms的低頻脈沖信號從T0(P3.4)輸入。要求P3.4每發(fā)生一次負(fù)跳變時,P1.0,P1.1輸出如下波形. 設(shè)晶振為6MHz,P3.4 (T0),P1.0,P1.1,500US,1ms,方法:T0方式2計數(shù),初值為FFH。當(dāng)T

溫馨提示

  • 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

提交評論