第6章 定時計數(shù)器_第1頁
第6章 定時計數(shù)器_第2頁
第6章 定時計數(shù)器_第3頁
第6章 定時計數(shù)器_第4頁
第6章 定時計數(shù)器_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

知識回顧:

6定時/計數(shù)器

定時器/計數(shù)器(Timer/Counter),是單片機內(nèi)的重要部件,其作用主要包括產(chǎn)生各種時標(biāo)間隔、記錄外部事件的數(shù)量等。AT89S51單片機有2個16位的定時器/計數(shù)器、定時器/計數(shù)器0(T0)和定時器/計數(shù)器1(T1)。AT89S52包含3個16位的定時器/計數(shù)器:定時器/計數(shù)器0(T0),定時器/計數(shù)器1(T1)、定時器/計數(shù)器2(T2)。AT89S51單片機還包含有一個用作看門狗的14位定時器(T3)。

6.1AT89S51單片機的定時器/計數(shù)器的基本原理

定時器/計數(shù)器的核心是一個16位的加1計數(shù)器。作定時器時,其計數(shù)脈沖來源于時鐘振蕩器(經(jīng)12分頻后提供)。這個脈沖的周期稱為單片機的機器周期,每一個機器周期定時寄存器自動加1,所以定時器也可看作是計算機器周期的計數(shù)器。作計數(shù)器時,其計數(shù)脈沖來源于單片機外部引腳T0(或T1)的脈沖。即Tx端口有從“1”到“0”的負跳變,計數(shù)器就自動加1。計算機是在每個機器周期S5P2狀態(tài)時采樣Tx端口,當(dāng)前一個機器周期采樣為1、后一個采樣周期采樣為0時,計數(shù)器即加一計數(shù)。計算機需用兩個機器周期來識別1次計數(shù),因而最大計數(shù)速率為振蕩頻率的1/24。

6.2定時器/計數(shù)器T0、T1的內(nèi)部結(jié)構(gòu)

AT89S51單片機的定時器/計數(shù)器和微處理器的關(guān)系,如圖6-1所示,定時器/計數(shù)器T0由TH0、TL0構(gòu)成,T1由TH1、TL1構(gòu)成。TMOD用于控制和確定各定時器/計數(shù)器的功能和工作模式。TCON用于控制定時器/計數(shù)器T0、T1的啟動和停止計數(shù),同時包含定時/計數(shù)器的狀態(tài)。它們屬于特殊功能寄存器。這些寄存器的內(nèi)容靠軟件設(shè)置。系統(tǒng)復(fù)位時,寄存器的所有位都被清零。定時器/計數(shù)器的T0、T1的特殊功能寄存器有:方式寄存器TMOD、控制寄存器TCON、數(shù)據(jù)寄存器。

圖6-1定時器/計數(shù)器的結(jié)構(gòu)

AT89S51單片機有2個特殊功能寄存器TMOD和TCON:TMOD用于設(shè)置T/C的工作方式;TCON用于控制定時器T0、T1的啟動與停止,并包含了定時器的狀態(tài)。

1.定時/計數(shù)器T0、T1的方式寄存器-TMOD

定時器工作方式寄存器TMOD用于選擇定時器的工作方式,它的高4位控制定時器T1,低4位控制定時器T0。TMOD中各位的定義如下:GATEC/TM1M0GATEC/TM1M0T1T0TMOD89H

其中::T/C功能選擇位,當(dāng)=1時為計數(shù)方式; 當(dāng)=0時為定時方式。

M1M0:T/C工作方式定義位,其具體定義方式如表 6―1所示。表6―1定時/計數(shù)器工作方式

GATE:門控制位,用于控制定時器的啟動是否受外部中斷源信號的影響。GATE=0時,與外部中斷無關(guān),由TCON寄存器中的TRx位控制啟動。GATE=1時,由控制位TRx和引腳共同控制啟動,只有在沒有外部中斷請求信號的情況下(即外部中斷引腳=1時),才允許定時器啟動。

2.定時/計數(shù)器T0、T1的控制寄存器-TCONTCON控制寄存器各位的定義如下:

TF1TR1TF0TR0IE1IT1IE0IT0D7D6D5D4D3D2D1D0TCON88H

其中:

TF0(TF1):為T0(T1)定時器溢出中斷標(biāo)志位。當(dāng)T0(T1)計數(shù)溢出時,由硬件置位,并在允許中斷的情況下,發(fā)出中斷請求信號。當(dāng)CPU響應(yīng)中斷轉(zhuǎn)向中斷服務(wù)程序時,由硬件自動將該位清0。

TR0(TR1):為T0(T1)運行控制位。當(dāng)TR0(TR1)=1時啟動T0(T1);TR0(TR1)=0時關(guān)閉T0(T1)。該位由軟件進行設(shè)置。

TCON的低4位與外部中斷有關(guān),可參閱中斷一節(jié)的有關(guān)內(nèi)容。

TCON寄存器在復(fù)位時也被清0。

6.3定時/計數(shù)器的工作方式

MCS-51單片機的T/C有4種工作方式,分別由TMOD寄存器中的M1、M0兩位的二進制編碼所決定。

1.方式0

當(dāng)M1M0=00時,T/C設(shè)定為工作方式0,構(gòu)成13位的T/C。其邏輯結(jié)構(gòu)如圖6―3所示。在此工作方式下,T/C構(gòu)成一個13位的計數(shù)器,由THx的8位和TLx的低5位組成,TLx的高3位未用,滿計數(shù)值為213。T/C啟動后立即加1計數(shù),當(dāng)TLx的低5位計數(shù)溢出時向THx進位,THx計數(shù)溢出則對相應(yīng)的溢出標(biāo)志位TFx置位,以此作為定時器溢出中斷標(biāo)志。當(dāng)單片機進入中斷服務(wù)程序時,由內(nèi)部硬件自動清除該標(biāo)志。

圖6―3T/C方式0的邏輯結(jié)構(gòu)圖

2.方式1

當(dāng)M1M0=01時,T/C設(shè)定為工作方式1,構(gòu)成16位定時/計數(shù)器,其中THx作為高8位,TLx作為低8位,滿計數(shù)值為216,其余同方式0類似。其邏輯結(jié)構(gòu)如圖6―4所示。圖6―4T/C方式1的邏輯結(jié)構(gòu)圖

3.方式2

當(dāng)M1M0=10時,T/C工作在方式2,構(gòu)成1個自動重裝載的T/C,滿計數(shù)值為28。在方式0和方式1中,當(dāng)計數(shù)滿后,若要進行下一次定時/計數(shù),需用軟件向THx和TLx重新予置計數(shù)初值。在方式2中THx和TLx被當(dāng)作兩個8位計數(shù)器,計數(shù)過程中,THx寄存8位初值并保持不變,由TLx進行8位計數(shù)。計數(shù)溢出時,除產(chǎn)生溢出中斷請求外,還自動將THx中的初值重新裝到TLx中去,即重裝載。除此之外,方式2也同方式0類似。其邏輯結(jié)構(gòu)如圖6―5所示。

圖6―5T/C方式2的邏輯結(jié)構(gòu)圖

4.方式3

方式3只適用于定時器T0。當(dāng)定時器T1處于方式3時相當(dāng)于TR1=0,停止計數(shù)。當(dāng)T0工作在方式3時,TH0和TL0被拆成2個獨立的8位計數(shù)器。這時,TL0既可作為定時器使用,也可作為計數(shù)器使用,它占用了定時器T0所使用的控制位(C/、GATE、TR0、TF0),其功能和操作與方式0或方式1完全相同;而TH0只能作定時器用,并且占據(jù)了定時器T1的兩個控制信號TR1和TF1。在這種情況下,定時器T1雖仍可用于方式0、1、2,但不能使用中斷方式。圖6―6T/C方式3的邏輯結(jié)構(gòu)圖

作業(yè)P1072、3、4、5知識回顧:

定時/計數(shù)器1的方式1的邏輯結(jié)構(gòu)圖6.5AT89S51單片機的定時器/計數(shù)器編程和應(yīng)用6.5.1定時器/計數(shù)器溢出率的計算定時器/計數(shù)器運行前,在其中預(yù)先置入的常數(shù),稱為定時常數(shù)或計數(shù)常數(shù)(TC)。由于計數(shù)器是加1(向上)計數(shù)的,故而預(yù)先置入的常數(shù)均應(yīng)為補碼。其中:t—定時時間。 Tc—機器周期。

fosc—晶體振蕩器頻率。L—計數(shù)器的長度。

對于T0及T1:方式0L=13213=8192

方式1L=16216=65536

方式2L=828=256

對于T2:

L=16216=65536TC—定時器/計數(shù)器初值,即定時常數(shù)或計數(shù)常數(shù)。定時時間的倒數(shù)即為溢出率,即根據(jù)時間的定時時間t,計算出TC值,并將其轉(zhuǎn)換成二進制數(shù)TCB,然后再分別送入THi、TLi(對于T0,i=0;對于T1,i=1)。對于定時器/計數(shù)器T0/T1:方式0時:TCB=TCH+TCL,TCH—高8位,TCL—低5位

MOVTHi,#TCH

;送高8位

MOVTLi,#TCL

;送低5位方式1時:TCB=TCH+TCL,TCH—高8位,TCL—低8位

MOVTHi,#TCH ;送高8位

MOVTLi,#TCL ;送低8位方式2時:TC—8位

MOVTHi,#TCBMOVTLi,#TCB6.5.2定時器/計數(shù)器的編程

定時器/計數(shù)器的編程可分為以下幾步:1)寫TMOD,只能用字節(jié)尋址。設(shè)置定時器/計數(shù)器的工作方式(M1,M0)、功能選擇()及是否使用門控(GATE)。2)將時間常數(shù)或計數(shù)常數(shù)寫入THi及TLi,也只能用字節(jié)尋址。根據(jù)上面的計算結(jié)果寫入THi及TLi。3)啟動定時或計數(shù),即寫TCON,用字節(jié)尋址或用位尋址。如:

SETBTRi ;啟動定時器

CLRTRi ;停止定時器4)定時器中斷開放和禁止,即寫IE。如:

SETBETi ;允許中斷ETiSETBEA ;開放中斷

CLRETi ;禁止中斷ETiCLREA ;關(guān)閉中斷

[例6-1]使用定時器/計數(shù)器T1的方式1,設(shè)定1ms定時。在P1.0引腳上產(chǎn)生周期為2ms的方波輸出。晶體振蕩器的頻率為fosc=6MHz。解:(1)定時常數(shù)計算振蕩器的頻率fosc=6MHz=6×106Hz,計數(shù)器長度L=16,2L=216=65536。定時時間t=1ms=1﹡10-3s。定時常數(shù)TC轉(zhuǎn)換成二進制TCB=1111111000001100B=0FE0CH所以TCH=0FEH(高8位),TCL=0CH(低8位)。(2)TMOD的設(shè)定(即控制字)(3)編程

ORG 000BH ;T0中斷矢量地址

AJMP INQP ORG 0100H ;主程序入口

MOV SP,#60H ;堆棧設(shè)置

MOV TMOD,#10H ;寫控制字

MOV TH1,#0FEH ;寫定時常數(shù)

MOV TL1,#0CH SETB TR1 ;啟動T1 SETB ET1 ;允許T1中斷

SETB EA ;開放CPU中斷

SJMP $ ORG 00XXH ;中斷服務(wù)程序INQP: MOV TH1,#0F0H ;重寫定時常數(shù)

MOV TL1,#0CH CPL P1.0 ;P1.0變反輸出

RETI ;中斷返回[例6-2]借助于單片機內(nèi)的定時器/計數(shù)器,測量人體心率。假設(shè)單片機的晶振頻率為6MHz。[測量頻率]:由單片機T0實現(xiàn)1分鐘的定時,T1負責(zé)對外計數(shù),1分鐘定時時間到,讀出T1計數(shù)器中的數(shù)值就是心率。具體做法:

T0和T1都選方式1,這樣最大定時時間 t=65536x2=131.072ms便于計算讓計數(shù)器定時100ms,選30H,31H分別為秒和分存儲單元。30H單元計數(shù)10次滿1秒,31H單元計數(shù)60次滿1分。分析:兩種方法:頻率測量法和周期測量法。預(yù)置:(TH0)=3CH,(TL0)=0B0HTMOD設(shè)置:MOVTMOD,#51H

時間常數(shù)計算:晶體振蕩器為6MHz,基本定時時間為100ms,機器周期Tc為:

設(shè)置初值為xx=216—50000=15536=3CB0H[測周期]:(1)定時器T0設(shè)置利用定時器/計數(shù)器測定周期a)波形圖案b)連接示意圖

為高電平時,啟動定時器;定時器/計數(shù)器T1為計數(shù)器,T1的電平由1到0,計數(shù)器計數(shù)。

定時器T0的TMOD的設(shè)置:GATEM1M01001門控定時器方式1控制字為9H。

時間常數(shù)計算:晶體振蕩器為6MHz,基本定時時間為100ms,機器周期Tc為設(shè)置初值為xx=216—50000=15536=3CB0H預(yù)置:

(TH0)=3CH,(TL0)=0B0H(2)計數(shù)器設(shè)置定時器/計數(shù)器T1為計數(shù)器。計數(shù)值為2,當(dāng)計數(shù)1時,啟動定時器;當(dāng)計數(shù)2時,中斷計數(shù)器T1,并停止定時器T0的定時;中斷方式,其優(yōu)先級高于定時器T0。計數(shù)器T1的TMOD的設(shè)置:

C/GATEM1M00101

計數(shù)器方式1控制字為5H。計數(shù)初值為:FFFEH,預(yù)置:(TH1)=0FFH,(TL0)=0FEH。MOVTMOD,#59H注:課本上其余例子作為課堂練習(xí)小結(jié):測量低頻信號,為了快速測量又保證測量精度,一般采用測周法。高頻信號采用測頻法。問題1:頻率測量和周期測量的界線如何確定?問題2:如何保證測量結(jié)果的準確性?總結(jié)要正確使用定時器/計數(shù)器,首先要根據(jù)要求確定選用那個定時器/計數(shù)器,工作在什么方式;如何啟動定時器/計數(shù)器,如何停止定時器/計數(shù)器、如何利用定時器/計數(shù)器的中斷來進行信號測量,都是需要考慮的問題。

測頻程序:

MOV TMOD,#51H;寫控制字

MOV TH0,#3CH ;寫定時常數(shù)

MOV TL0,#0B0H MOV TH1,#00H;對心臟電信號脈沖進行計數(shù)

MOV TL1,#00H MOV 30H,#00H;秒存放單元

MOV 31H,#00H ;分存放單元

MOV 32H,#00H;心率存放單元

SETB TR0;啟動T0定時

SETB TR1;啟動T1計數(shù)

ACALLTEST

;調(diào)用心率測量程序

MOV 32H,TL1;將測量結(jié)果存放在32H單元

SJMP $TEST: JNB TF0,$ CLR TF0INC30H CLR C MOV A,30H CJNE A,#0AH,SECOND;判斷是否到1秒鐘

MOV 30H,#00H

;到1秒鐘,清秒單元

INC 31H CLR C MOV A,31H CJNE A,#3CH,SECOND

;判斷是否到1分鐘

CLR TR0 CLR TR1 RETSECOND:MOV TH0,#3BH ;重寫定時常數(shù)

MOV TL0,#0F0HAJMP TEST

測周期程序: ORG 0000H AJMP MAIN ORG 000BH ;T0的中斷入口

AJMP TIME0 ORG 001BH ;T1的中斷入口

AJMP TIME1 ORG 0033H

MAIN:MOV SP,#60H MOV R3,#0 ;清除軟件計數(shù)器

SETB P3.2 ;置P3.2,P3.5為輸入狀態(tài)

SETB P3.5 MOV TMOD,#59H MOV TH0,#3CH ;定時器初值

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論