




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第第5章章 MCS-51的定時器的定時器/計數(shù)器計數(shù)器 5.1 定時器定時器/計數(shù)器的結(jié)構(gòu)計數(shù)器的結(jié)構(gòu) 5.2 定時器定時器/計數(shù)器的工作原理計數(shù)器的工作原理 5.3 定時器定時器/計數(shù)器的控制計數(shù)器的控制 5.4 定時器定時器/計數(shù)器的工作方式計數(shù)器的工作方式 5.5 定時器定時器/計數(shù)器的精度計數(shù)器的精度 5.6 定時器定時器/計數(shù)器的程序設(shè)計及應(yīng)用實例計數(shù)器的程序設(shè)計及應(yīng)用實例5.1 定時器定時器/ /計數(shù)器的結(jié)構(gòu)計數(shù)器的結(jié)構(gòu)圖圖5-1 定時器定時器/計數(shù)器結(jié)構(gòu)圖計數(shù)器結(jié)構(gòu)圖特殊功能寄存器特殊功能寄存器TH0、TL0、TH1、TL1、TMOD、TCON5.2 定時器定時器/ /計數(shù)器的工
2、作原理計數(shù)器的工作原理 兩個16位的定時/計數(shù)器T0(TH0TL0)和T1 (TH1TL1),基本工作原理是加1計數(shù),即對指定的脈沖信號進行加1操作,直到出現(xiàn)溢出。 (1)定時器,對機器周期加1計數(shù),因此,計數(shù)周期固定為12/ (2)計數(shù)器,對單片機外部輸入的脈沖信號加1計數(shù),T0(P3.4),T1(P3.5) OSCf5.3 定時器定時器/計數(shù)器的控制計數(shù)器的控制5.3.1 定時器定時器/計數(shù)器方式控制寄存器計數(shù)器方式控制寄存器TMOD TMOD用于控制定時器/汁數(shù)器的工作模式及工作方式,其字節(jié)地址為80H,格式如下。其中,低4位用于決定T0的工作方式,高4位用于決定T1的工作方式。1、M1
3、和M0工作方式控制位M0和和M1為工作方式控制位,確定為工作方式控制位,確定4種工作方式,如種工作方式,如表表5-1所示。所示。定時器/計數(shù)器方式選擇位 =0,定時方式,對機器周期進行計數(shù); =1,計數(shù)方式,對外部信號進行計數(shù),外部信號接至T0(P3.4)或T1(P3.5)引腳。3、GATE門控位 GATE=0時,只要用軟件使TR0(或TR1)置1就能啟動定時器T0(或T1); GATE=1時,只有在INT0(或INT1)引腳為高電平的情況下,且由軟件使TR0(或TR1)置1時,才能啟動定時器T0(或T1)工作CT/CT/CT/5.3.2 定時器/計數(shù)器的控制寄存器TCON 控制寄存器TCON
4、的位地址是88H,可以對它進行位尋址。其功能:啟動:設(shè)定好了定時器/計數(shù)器的工作方式后,通過設(shè)置控制寄存器TCON中的相應(yīng)位來啟動。 (2)停止:要使定時器/計數(shù)器停止運行,也通過設(shè)置TCON中的相應(yīng)位來實現(xiàn)。 (3)標志:TCON能標明溢出和中斷情況。1. TR0:定時器T1運行控制位??捎绍浖?(或清零)來啟動(或關(guān)閉)定時器T0,使定時器T0開始計數(shù)。 2. TF0:定時器T0溢出標志位。當定時器T0溢出時,由硬件自動使TF1置1,并向CPU申請中斷。CPU響應(yīng)中斷后,自動對TF0清零。TF0也可以用軟件查詢和清零。3. TR1 :定時器T1運行控制位。功能與TR0 相同。4. TF0
5、 :定時器T0溢出標志位。功能與TF0相同。 IE1:外部中斷1請求標志位。 IT1:外部中斷1觸發(fā)方式控制位。 IE0:外部中斷0請求標志位。 IT0:外部中斷0觸發(fā)方式控制位。 5.4 定時器/計數(shù)器的工作方式5.4.1 工作方式0(M1 M0:00) 定時器/計數(shù)器工作在方式0時,16位計數(shù)器只用了13位,即THx的高8位和TLx的低5位,組成一個13位定時器/計數(shù)器。(x=0或1)圖5-2 定時器計數(shù)器方式0結(jié)構(gòu)框圖 5.4.2 工作方式1 (M1 M0:01) 定時器/計數(shù)器工作在方式0時,16位計數(shù)器,即THx作為高8位,TLx作為低8位。 圖5-3 定時器計數(shù)器方式1結(jié)構(gòu)框圖5.
6、4.3 工作方式2 (M1 M0:10) 自動重裝初值8位計數(shù)器。TLx作為8位計數(shù)器, THx用作常數(shù)寄存器。 TLx計數(shù)滿產(chǎn)生溢出時,一方面置1溢出標志TFx;另一方面自動將THx中的內(nèi)容送至TLx ,使8位定時器/計數(shù)器從所裝初值開始更新開始計數(shù)。 圖5-4 定時器計數(shù)器方式2結(jié)構(gòu)框圖5.4.4 工作方式3 (M1 M0:11)將16位的計數(shù)器T0分為兩個獨立的8位計數(shù)器TH0和TL0。定時器T1只能工作在方式02,不需中斷的場合。 圖5-5 定時器計數(shù)器方式3結(jié)構(gòu)框圖5.5 定時器/計數(shù)器的精度 定時: 對機器周期(即12/ fosc )計數(shù)。精度取決于輸入脈沖的周期,因此當需要高分辨
7、率的定時時,應(yīng)盡量選用頻率較高的晶振(MCS-51最高為12MHz)。 如:fosc=12MHz時,機器周期1微秒,計數(shù)脈沖周期間隔為1微秒,誤差為1微秒。 fosc=6MHz時,機器周期2微秒,計數(shù)脈沖周期間隔為2微秒,誤差為2微秒。 注:在使用中斷情況下,如果有其它中斷服務(wù)正在執(zhí)行,延遲取決于其它中斷服務(wù)程序執(zhí)行的時間。 計數(shù):由于確認一次下跳變要花兩個機器周期的時間,因此外部輸入的計數(shù)脈沖的最高頻率為振蕩器頻率的1/24。且高低電平至少保持一個機器周期Tcy 。 Tcy:一個機器周期 另外,在讀取運行中的定時器計數(shù)器時,需要加以注意,否則讀取的計數(shù)值有可能出錯。原因是不可能在同一時刻同時
8、讀取THx和TLx的內(nèi)容。 一種解決讀錯問題的方法是:先讀(THx),后讀(TLx),再讀(THx),若兩次讀得的(THx)相同,則可確定讀得的內(nèi)容是正確的。 如下面的程序,讀得的(TH0)和(TL0)分別放置在R1和R0內(nèi)。RDTIME: MOV A,TH0 ;讀(TH0) MOV R0,TL0 ;讀(TL0) CJNE A,TH0,RDTIME ;比較兩次讀得的(TH0) MOV R1,A RET5.6 定時器/計數(shù)器的程序設(shè)計及應(yīng)用使用定時器/計數(shù)器時必須計算計數(shù)初值。假設(shè)T為定時時間,計數(shù)器位數(shù)為n,系統(tǒng)時鐘頻率為fosc,計數(shù)初值為x,則它們滿足下列關(guān)系式:T122oscfxn212
9、fnoscxT即 【例5-1】利用定時器T0產(chǎn)生1ms定時。由P1.0輸出占空比為1:1的周期為2ms的方波信號。(設(shè)時鐘頻率為6MHZ)。 1. 確定計數(shù)初值 由于時鐘頻率為6MHZ,所以,機器周期為:12/fosc=2s t=(-T0初值) 機器周期當t=1ms時,(-T0初值) 2=1 解得:T0初值=7692=1111000001100B 高8位11110000B=0F0H賦給TH0, 低5位01100B=0CH賦給TL0。設(shè)計程序 MOV TMOD , #00H;設(shè)定T0的工作方式 SETB TR0; 啟動T0工作LOOP: MOV TH0 , #0F0H; 給定時器T0送初值 MO
10、V TL0 , #0CH LOOP1: JNB TF0 , $; $為當前指令指針地址 CLR TF0 CPL P1.0 SJMP LOOP【例5-2】 用定時器T0產(chǎn)生25HZ的方波。由P1.0輸出此方波(設(shè)時鐘頻率為12MHZ)。25HZ的方波周期為40ms,可用定時器產(chǎn)生20ms的定時,每隔20ms改變一次P1.0的電平,即可得25HZ的方波。 1. 確定計數(shù)初值 由于時鐘頻率為12MHZ,所以,機器周期為:12/fosc=1s t=(2 -T0初值) 機器周期當t=20ms時,(-T0初值) 1=20 解得:T0初值=45536=0B1E0H 高8位0B1H賦給TH0, 低8位0E0H
11、賦給TL0。 2.設(shè)計程序 MOV TMOD, #01H;設(shè)定T0的工作方式1 SETB TR0; 啟動T0工作LOOP: MOV TH0, #0B1H;給定時器T0送初值 MOV TL0 , #0E0H LOOP1: JNB TF0, $; $為當前指令指針地址 CLR TF0 CPL P1.0 SJMP LOOP【例5-3】 用定時器T1產(chǎn)生500us的定時。由P1.0輸出周期為1ms的方波(設(shè)時鐘頻率為6MHZ)。 1ms的方波,可用定時器產(chǎn)生500us的定時,每隔500us改變一次P1.0的電平。 1. 確定計數(shù)初值 由于時鐘頻率為6MHZ,所以,機器周期為:12/fosc=2s t=
12、(2 -T1初值) 機器周期當t= 500us時,(2 -T1初值) 210 =500 10解得:T1初值=06H 06H賦給TL1, 06H同時賦給TH1。 2.設(shè)計程序 MOV TMOD , #20H;設(shè)定T1的工作方式2 MOV TH1, #06H; 給定時器T1送初值 MOV TL1, #06H SETB TR1; 啟動T1工作LOOP: JNB TF1 , $; $為當前指令指針地址 CLR TF1 CPL P1.0 SJMP LOOPT0的中斷服務(wù)程序:IT0P: MOVTH0,#3CH;T0重新賦值MOVTL0,#0B0HCPLP1.7;P1.7取反作T1的計數(shù)脈沖 RETI;中
13、斷返回T1的中斷服務(wù)程序:IT1P: CPLP1.0;P1.0取反輸出RETIEND例5.4 由P3.4(T0)引腳輸入一個頻率小于0.5kHz的低頻脈沖信號,要求P3.4每發(fā)生一次負跳變時,P1.0輸出一個500s的同步負脈沖,同時P1.1輸出一個1ms的同步正脈沖。已知晶振頻率為fosc=6MHz。解題分析:按題意畫出輸出信號的波形如圖5.12所示。 P1.0 P3.4 P1.1 1ms 1ms 500s 500s 設(shè)初態(tài)P1.0輸出高電平,P1.1輸出低電平。設(shè)T0以工作方式2計數(shù),計數(shù)初值為FFH。當加在引腳T0上的外部脈沖產(chǎn)生由1至0的負跳變時,則使T0計數(shù)器加1 而產(chǎn)生溢出,進入中
14、斷服務(wù)程序。在中斷服務(wù)程序中,T0改變?yōu)橐怨ぷ鞣绞?定時500s,并且使P1.0輸出低電平,P1.1輸出高電平。當?shù)谝淮味〞r500s到時,定時器溢出后,使P1.0恢復為高電平,T0繼續(xù)第二次500s定時,產(chǎn)生溢出后,使P1.1恢復為低電平。然后T0又恢復對外部脈沖進行計數(shù),如此循環(huán)。 500s定時計數(shù)初值: (28-X)210-6=50010-6 求解得:X=06H。主程序:ORG0000HLJMPMAINORG000BH;T0中斷服務(wù)程序入口LJMPIT0PORG0030HMAIN: MOV SP,#60H ;堆棧設(shè)置為內(nèi)部RAM 為60H MOVTMOD,#06H;設(shè)置T0工作方式2,計數(shù)
15、方式MOVTH0,#0FFH;設(shè)置T0計數(shù)初值MOVTL0,#0FFHSETBEA;中斷總允許SETBET0;定時器0允許中斷SETBP1.0;P1.0初態(tài)為高電平CLRP1.1;P1.1初態(tài)為低電平SETBTR0;啟動定時器0SJMP$;等待中斷T0的中斷服務(wù)程序:IT0P: CLRTR0;關(guān)閉定時器0MOVTMOD,#02H;設(shè)置T0為方式2,定時MOVTH0,#06H;設(shè)置T0計數(shù)初值MOVTL0,#06HMOVIE,#00H;禁止中斷CLRP1.0;P1.0為低電平SETBP1.1;P1.1為高電平SETBTR0;啟動定時器0LOOP1:JBCTF0,LP1;第一個500s到否SJMP
16、LOOP1 ;未到等待LP1: SETBP1.0 ;到了P1.0變?yōu)楦唠娖絃OOP2:JBCTF0,LP2;第二個500s到否SJMPLOOP2LP2: CLRP1.1;到了P1.1變?yōu)榈碗娖?CLRTR0;關(guān)閉定時器0MOVTMOD,#06H;T0重新設(shè)為方式2,計數(shù)MOVTH0,#0FFH;T0重新賦初值MOVTL0,#0FFHMOVIE,#82H;定時器0中斷允許SETBTR0;啟動定時器0RETI;中斷返回END 例5.5 利用兩個定時器控制一個接P1.0的發(fā)光二極管亮1秒、暗1秒,周而復始。已知晶振頻率為fosc=6MHz。解題分析:兩個定時器中一個用于定時,另一個用于計數(shù)。定時的時
17、間到可以輸出一個控制信號作為另一個定時器的計數(shù)脈沖。線路連接如圖5.11所示。 VCC P1.0 8031 P1.7 T1(P3.5) 5.1k 設(shè)T0以工作方式1定時100ms,T1以工作方式2計數(shù)。當T0定時100 ms時,控制P1.7輸出取反,P1.7輸出周期為200ms的方波作為T1的計數(shù)脈沖,T1計數(shù)滿溢出控制P1.0取反,所以當T1計滿5次,P1.0輸出的脈寬為1s的方波。 T0的計數(shù)初值:(216-X)210-6=10010-3 求解得:X=3CB0H。 T1的計數(shù)初值: 28-5=251=FBH。TMOD寄存器初始化: T0:M1M0=01; C/T=0; GATE=0。 T1:M1M0=10; C/T=1; GATE=0。 因此(TMOD)=61H。主程序:ORG0000HAJMPMAINORG000BH;T0中斷服務(wù)程序入口AJMPIT0PORG001BH;T1中斷服務(wù)程序入口AJMPIT1PORG0100HMAIN: CLRP1.7;P1.7初態(tài)為低電平MOVTMOD,#61H;設(shè)置T0方式
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 沿街門面房合租合同范本
- 農(nóng)村房屋購買合同范本
- 校企合作實習實訓協(xié)議書范本
- 銀行基本建設(shè)借款合同范本
- 全款車輛抵押借款合同范本
- 企業(yè)計算軟件開發(fā)合同
- 倉儲保管及質(zhì)押作業(yè)合同
- 銀川市公共租賃住房租賃合同
- 南京農(nóng)村田地租賃合同
- 借款用房產(chǎn)做抵押的合同范例
- 立體幾何解答題罕見壓軸難題(解析版)
- 《阿Q正傳》(課件)2023-2024高二語文選擇性必修下冊
- 溫室大棚租賃合同標準范本
- 箱式變電站吊裝方案設(shè)計規(guī)范
- 期末考試-公共財政概論-章節(jié)習題
- MOOC 走進舞蹈藝術(shù)-首都師范大學 中國大學慕課答案
- AED急救知識課件
- 2023版《思想道德與法治》(緒論-第一章)緒論 擔當復興大任 成就時代新人;第一章 領(lǐng)悟人生真諦 把握人生方向 第3講 創(chuàng)造有意義的人生
- 2023年水處理BOT合同模板范本
- mil-std-1916抽樣標準(中文版)
- 監(jiān)控施工方案范文六篇
評論
0/150
提交評論