80C51單片機的定時計數(shù)器_第1頁
80C51單片機的定時計數(shù)器_第2頁
80C51單片機的定時計數(shù)器_第3頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、80C51單片機的定時計數(shù)器定時計數(shù)器的控制寄存器與定時器計數(shù):器o和1有關(guān)的控制馬存器主要有以下幾個;1. 曲情存® ICONTCO*寄存番既參與中斷控制,又奏與定時控制.有關(guān)中斷控制的內(nèi)容在前一節(jié)已介紹,驅(qū)怎定時控制有關(guān)的控制位介紹1 TFQ (TF1)計數(shù)鎰出標(biāo)志位當(dāng)加1計數(shù)器回到0時,則表示計數(shù)鎰出.當(dāng)產(chǎn)生計數(shù)鎰出時,該位由51件自動直1.使用査詢方式時,此垃磁就鄆 査詢有效后,該位應(yīng)用軟件右法及時潛鳥使用中斷右式時,斷標(biāo)志位,在轉(zhuǎn)向中斷服務(wù)程序時由硬件自動措仇 TKO (TR1) 一定時器運行控制位TRO CTR1) =1啟動宦時器計數(shù)器工作°TXD CTR1)

2、-0停止宦時器計數(shù)器工作.該位根據(jù)需妾以軟件方法肉題1或蓿0.需要指出的是,當(dāng)定時器計數(shù)器開始工作后*加1計數(shù)器就不斷地加h當(dāng)產(chǎn)主計數(shù)溢出后,定時器計數(shù)器并不傅止工作, 從計數(shù)初值開始,重新開始不斷地加L直到把TRO (TR!)瞬少才停止工作.2. 工作芳瞇制寄存蹇TMODTM0D寄存器是一個專用寄存器,就或媲GATE、計數(shù)彳定時方式選擇位匕元、E T1及工作方式選擇位站山們組成.限T 寄存器不能位尋址,貝能用宇節(jié)傳送指令設(shè)買其內(nèi)容-各位定義如D7D6D5D4D3D2DIDOGATEC/TMlMOGATE| C TMlMO<_>y定時器計數(shù)器I定時器計數(shù)器0由圖6-H不難理解各位含

3、義如下 GATEH控位GATE-0 錄用TRO (TR1)來啟動(停止)定時器計數(shù)器-GATE町幣卿TRO (TR1)和菽而(或氏T1)來啟動定時器/計數(shù)器° C TF魏方式淀時方式選擇位C T=0宦時工作右式.C T-1計歎工作方式 Ml :T工件育瓷選擇位羊片機旳訓(xùn)器計隸岳共有口種工作方式如表t h因防武卜方式兒可通過M1MC未選擇;吏弓:才時需計數(shù)寄皿種工杵亡式I1LD工用式ti :訂發(fā)軽社敦miimsjsrE號TL低:位pH-1iSIH* TL1T斗rHl TH為重漩寄存器)pn-TsL中斷5WH帝麗IEIE寄存器訐細內(nèi)容在上一節(jié)已講過,K中與詢器計馥器有關(guān)前位如下,EA中斷

4、比評總控常J悅®ET0 (ETL> 定坯器計數(shù)霍中斷允許控制儻ETO (ET1)=0禁止定時計數(shù)中斷.ETO (ET1) =1允訐定時討隸申斷"S0C51單片機取t時匪1-1數(shù)話共有匹種工作方It下更祝一一Tl細<>定時器/計數(shù)器的工作方式1定時器/計數(shù)器的工作方式0<1)電路邏輯結(jié)構(gòu)當(dāng)圖6-7中的計數(shù)器=13位<TH的8位與TL低5位)即得方式0的邏輯電路圖。<2 )工作方式0的特點 兩個定時器/計數(shù)器TO、T1均可在方式0下工作; 是13位的計數(shù)結(jié)構(gòu),其計數(shù)器由TH全部8位和TL的低5位構(gòu)成 <高3位不用); 當(dāng)產(chǎn)生計數(shù)溢出時,

5、由硬件自動給計數(shù)溢出標(biāo)志位TF0<TF1 )置1,由軟件給TH,TL重新置計數(shù)初值。應(yīng)說明的是,方式0采用13位計數(shù)器是為了與早期的產(chǎn)品兼容,計數(shù)初值的高8位和低5位的確定比較麻煩,所以在實際應(yīng)用中常由 16位的方式1取代。2 定時器/計數(shù)器的工作方式1<1)電路邏輯結(jié)構(gòu)方式1是16位計數(shù)結(jié)構(gòu)的工作方式,計數(shù)器由TH全部8位和TL全部8位構(gòu)成。其邏輯電路如圖 6-11所示。<2 )工作方式1的特點 兩個定時器/計數(shù)器均可在方式1下工作; 是16位的計數(shù)結(jié)構(gòu),其計數(shù)器由TH的全部8位和TL的全部8位構(gòu)成; 當(dāng)產(chǎn)生計數(shù)溢出時,由硬件自動給計數(shù)溢出標(biāo)志位TF0<TF1 )置1

6、,由軟件給TH , TL重新置計數(shù)初值。<3)計數(shù)/定時的范圍在方式1下,當(dāng)為計數(shù)工作方式時,因為是 16位的計數(shù)結(jié)構(gòu),所以計數(shù)范圍是:165536。當(dāng)為定時工作時,其定時時間=<216-計數(shù)初值)M機器周期,例如:設(shè)單片機的晶振頻率 f=12MHz,則機器周期 為1卩s從而定時范圍:1卩s65536g因為80C51單片機的定時計數(shù)器是可編程的。因此,在利用定時/計數(shù)器進行定時計數(shù)之前,先要通過軟件對他進行初始化,初始化一般應(yīng)進行如下工作: 設(shè)置工作方式,即設(shè)置TMOD中的各位 GATE、C/T、M1M0。 計算加1計數(shù)器的計數(shù)初值 COUNT,并將計數(shù)初值 COUNT送入TH、T

7、L中。計數(shù)方式:計數(shù)值 =2n -COUNT ,計數(shù)初值:COUNT= 2n -計數(shù)值。定時方式:定時時間 =<2n -COUNT ) >機器周期,計數(shù)初值COUNT = 2n -定時時間/機器周期。其中n=13、16、8、8分別對應(yīng)方式 0、1、2、3。 啟動計數(shù)器工作,即將TR置1。 T0、T1開中斷例6-5 T0工作于:定時方式1,定時時間T=2ms,系統(tǒng)主頻fosc=8MHz,允許中斷,對 T0進行初始化 編程。解:因為,T0工作于定時方式,T0工作方式1。因此, =0 , GATE=0 , M1M0=01 。T1 不用,故 TMOD=0000 0001=01H 。系統(tǒng)主頻

8、fosc=8M時,時鐘周期 T=1/8 us機器周期=12T=12/8=1.5 s。加 1 計器初值 COUNT =216 2000/1.5 =10000H 535H=FACBH,初始化程序如下:MOV SP , #50HMOV TMOD , #01HMOV TH0 , #0FAHMOV TL0 , #0CBHSETB TR0SETB ET0 SETB EA例6-6定時計器T0工作于計數(shù)方式,計數(shù)值 =1,使用方式1,允許中斷,初始化編程。解:因為,T0工作于計數(shù)方式,T0工作方式1。因此,】日,gATE=0 , T0工作方式1,M1M0=01 。 T1 不用,故 TMOD=0000 0101

9、=05H計數(shù)器初值 COUNT=216 1 = 1111 1111 1111 111 仁FF FFHMOV TMOD , #05HMOV TH0 , #0FFHMOV TL0 , #0FFHSETB TR0SETB ET0SETB EA;設(shè)置TO工作計數(shù)方式1。;加1計數(shù)器高8位TH0賦初值FFH;加1計數(shù)器高8位TL0賦初值FFH;打開T0啟動開關(guān);T0開中斷;CPU開中斷3定時器/計數(shù)器的工作方式2這樣不但影響工作方式0和工作方式1的最大特點是產(chǎn)生計數(shù)溢出后,需要由軟件重新給計數(shù)器賦初值定時精度,而且也給程序設(shè)計帶來不便。方式2在計數(shù)溢出后自動重裝計數(shù)器初值。其邏輯結(jié)構(gòu)如下。<1)邏

10、輯結(jié)構(gòu)如圖6-8所示<2 )工作方式2的特點 兩個定時器/計數(shù)器均可在方式2下工作; 把計數(shù)器分成兩部分 TH和TL,在開始計數(shù) <定時)時,把計數(shù)初值賦給TL的同時,也賦給 TH,在TL發(fā)生計數(shù)溢出后,而是通過硬件自動把TH中的內(nèi)容重新賦給 TL。 是8位的計數(shù)結(jié)構(gòu)TH:暫存器 < 用來暫時存放計數(shù)初值)。TL :計數(shù)器。系頸時衲圉6-3定時計數(shù)器方式2<3)計數(shù)/定時的范圍因為是8位的計數(shù)結(jié)構(gòu),所以,計數(shù)范圍為1256,定時時間=<28-計數(shù)初值)機器周期。例6-7 TO工作于定時方式2,定時時間T=500卩s,系統(tǒng)主頻fosc=6 MHz。進行初始化編程。解

11、:因為,TO工作于定時方式, TO工作方式2。因此,"=0 , GATE=0 , M1M0=10。T1 不用,故 TMOD=00000010=02H系統(tǒng)主頻fosc=6M時,時鐘周期 T=1/6 us機器周期=12T=12/6=2soCOUNT =28-500/2 =256 250=06MOV SP , #50HMOV TMOD , #02HMOV TH0 , #06HMOV TL0 , #06HSETB TR0SETB ET0SETB EA例6-8設(shè)單片機頻率為6MHz,使用定時器0以方式2產(chǎn)生周期為200 s的連續(xù)等寬正方波脈沖,并由 P1.0輸出,以查詢方式來完成。計算計數(shù)初值

12、要產(chǎn)生200卩舶連續(xù)等寬正方波脈沖,只需在P1.0端以100s為周期交替輸出高低電平即可實現(xiàn),從而定時時間為100“ f=6MHz、則機器周期為2八 100=<256-C0UNT ) '2求得:計數(shù)初值 COUNT=206=CEH 。這樣,把 CEH裝入TL0的同時,也裝入 TH0中暫存,即:<TH0) =<TL0 ) =CEH確定TMOD寄存器的內(nèi)容 根據(jù)TMOD各位的含義,不難得出 <TMOD ) =02H。 程序MOVTMOD -02HMOVTLD =0CEHMOVTHO, =OCEHIE,刖OHSETBTROLOOP:JBCTFO, LPAJX1PLOO

13、PLP:CPLP1.0小IPLOOP:對定時器:初始化:設(shè)置計數(shù)初值;暫存計數(shù)初值;禁止中斷:啟動定時器0工作因為工作方式2具有自動裝載功能,因此計數(shù)初值只需設(shè)置一次,以后就不再需要軟件重置。這是方式2與方式0、1的本質(zhì)區(qū)別。4定時器/計數(shù)器的工作方式3在前面的三種工作方式中,兩個定時器/計數(shù)器的設(shè)置和使用是完全相同的。但是在工作方式3下,兩個定時器/計數(shù)器的設(shè)置和使用卻不盡相同,下面分別介紹。<1)在工作方式3下的定時器/計數(shù)器0在工作方式3下,定時器/計數(shù)器0被拆成兩個獨立的8位計數(shù)器TL0和TH0。其中TL0既可以計數(shù)使 用,又可以定時使用,定時器 /計數(shù)器0的控制位和引腳信號全歸

14、它使用。其功能和操作方式0或方式1完全相同。而且邏輯電路結(jié)構(gòu)也極其類似,如圖6-9所示。與TL0的情況不同,對于定時器/計數(shù)器0的另一半TH0 ,則只能作為簡單的定時器使用。而且因為定時器/計數(shù)器0的控制位已被TL0獨占,因此只好借用定時器/計數(shù)器1的控制位TR1和TF1。即以計數(shù)溢出去置位TF1,而定時的啟動和停止則受TR1的狀態(tài)控制。因為 TL0既能作定時器使用也能作計數(shù)器使用,而TH0只能作定時器使用卻不能作計數(shù)器使用,因此在工作方式 3下,定時器/計數(shù)器0可以構(gòu)成二個定時器或一個定時器一個計數(shù)器。系蜿時鐘啟動開關(guān)加1計數(shù)器溢出標(biāo)志fbsc/12TR1圖6-9定時計數(shù)器方式3的T0結(jié)構(gòu)&

15、lt;2 )工作方式3下的定時器/計數(shù)器1如果定時器/計數(shù)器0已工作在工作方式3,則定時器/計數(shù)器1只能工作在方式0、方式1或方式2下,它的 運行控制位TR1及計數(shù)溢出標(biāo)志位 TF1已被定時器/計數(shù)器0借用,如圖6-10所示。加E計數(shù)辭在這種情況下,定時器/計數(shù)器1通常是作為串行口的波特率發(fā)生器使用,以確定串行通信的速率。因 為已沒有計數(shù)溢出標(biāo)志位 TF1可供使用,因此只能把計數(shù)溢出直接送給串行口。當(dāng)作為波特率發(fā)生器 使用時,只需設(shè)置好工作方式,便可自動運行。如要停止工作,只需送入一個把它設(shè)置為方式3的方式控制字就可以了。因為定時器/計數(shù)器1不能在方式3下使用,如果硬把它設(shè)置為方式3,就停止工

16、作。定時器/計數(shù)器的應(yīng)用舉例例6-9設(shè)單片機的晶振頻率 f=6MHz,使用定時器1以方式1產(chǎn)生周期為500卩舶等寬正方波脈沖,并由 P1.0輸出,以中斷方式完成。計算計數(shù)初值250=<216-COUNT ) X2,求得計數(shù)器初值: <TH1 ) =FFH , <TL1 ) =83H確定TMOD寄存器的內(nèi)容001BH開始的8個單元放不下中斷服定時器1向CPU申請中斷時,務(wù)程序,所以在001BHINT T1: WV處安排一條 LJMP INT_T1IH1.切 FFHTL1.述丑ICPL P1.0門-門例6-10利用單片機內(nèi)的定時器/計數(shù)器來定時,每隔1秒鐘把累加器A的內(nèi)容循環(huán)右移

17、一次,共移 8次。設(shè)單片機晶振頻率f=6MHz ) 程序覚6IMODj *10H;對走時器1初始化TH1>:設(shè)置計數(shù)初值X5OVTLB =83HSETBEA:中斷總允許SETBET1;允許定時器1中斷SETBTRI;啟動定時器1的工作SJXIP$?等待中斷HERE:CPU是轉(zhuǎn)到001BH去響應(yīng)中斷,而(訂主程序RD減1(RD J =OAH循環(huán)右移A停OAH禁止中斷- <1(返回丿(b )中斷服務(wù)程序圖鼻L1主程序和中斷服務(wù)程序流程團ORGOOOOHMAINORG001BHLJMPKT T1MAIN:XiOVTXICDj 列OHTH1, *3 CHTLB丸恥HSETBEASETBET

18、1RO, -OAHRl, -OSHSJMP$INT TkMOVTH1, f3CHMOVHl,式恥HDJNZRO LOOPXK),RO,RRADJNZR1 , LOOPCLRTRICLREALOOP: RETI:對定時器1初始化;設(shè)置計數(shù)初值;中斷總允許;允許定時器1中斷:設(shè)晝R0為計數(shù)器,10Cta»】0=15:設(shè)置R1為計數(shù)器 > 購Q&;等待中斷;設(shè)蒼計數(shù)初僅J給弐蘆賦初值,為下次右移作唯備;停止定時器1工作;禁止中斷例6-11門控位GATE的使用,使用TO測試一一引腳上正脈沖寬度 TP。TMOD中有一門控位 GATE,其功能是使TO、T1的運行受到外部中斷請求1、

19、-;二電平的控 制。當(dāng) GATE(TMOD.3>=1 ,必須使TR0和同時為1時,TO才運行;當(dāng) GATE<TMOD.7)=1,必 須使TR1和川丁同時為1時,T1才運行。作為GATE的應(yīng)用實例,這里介紹一種脈沖寬度的檢測方法。設(shè)要檢測的正脈沖加在廠匚上,其寬度為TP。檢測方法是:設(shè)置定時器 TO為方式1、門控、定時。在 /'. I為低電平時軟件啟動 TO,但這 時TO并不立即計數(shù),而是要等到 二二I變?yōu)楦唠娖綍rTO才開始計時。當(dāng) J U變?yōu)榈碗娖綍r,TO隨之停 止計時。這時使 TRO = O,讀出THO、TLO的內(nèi)容乘以定時脈沖周期,可得到被檢測脈沖寬度為TP。高電平TP /5 引腳ZJ低電平LTRD=1IKTO =1 INTO =0U6-12泄脈沖寬毘MAIN:0丫n【8,珂陽;設(shè)TO為方式L門控r疋時X5OrTLO, -OOH;置TO初值THO, =00HW.AJ

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論