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

下載本文檔

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

文檔簡(jiǎn)介

知識(shí)回顧:

6定時(shí)/計(jì)數(shù)器

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

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

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

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

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

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

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

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

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

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

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

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

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

TF1TR1TF0TR0IE1IT1IE0IT0D7D6D5D4D3D2D1D0TCON88H

其中:

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

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

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

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

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

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

1.方式0

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

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

2.方式1

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

3.方式2

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

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

4.方式3

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

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

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

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

對(duì)于T0及T1:方式0L=13213=8192

方式1L=16216=65536

方式2L=828=256

對(duì)于T2:

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

MOVTHi,#TCH

;送高8位

MOVTLi,#TCL

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

MOVTHi,#TCH ;送高8位

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

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

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

SETBTRi ;啟動(dòng)定時(shí)器

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

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

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

[例6-1]使用定時(shí)器/計(jì)數(shù)器T1的方式1,設(shè)定1ms定時(shí)。在P1.0引腳上產(chǎn)生周期為2ms的方波輸出。晶體振蕩器的頻率為fosc=6MHz。解:(1)定時(shí)常數(shù)計(jì)算振蕩器的頻率fosc=6MHz=6×106Hz,計(jì)數(shù)器長(zhǎng)度L=16,2L=216=65536。定時(shí)時(shí)間t=1ms=1﹡10-3s。定時(shí)常數(shù)TC轉(zhuǎn)換成二進(jì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í)常數(shù)

MOV TL1,#0CH SETB TR1 ;啟動(dòng)T1 SETB ET1 ;允許T1中斷

SETB EA ;開放CPU中斷

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

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

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

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

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

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

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

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

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

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

C/GATEM1M00101

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

測(cè)頻程序:

MOV TMOD,#51H;寫控制字

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

MOV TL0,#0B0H MOV TH1,#00H;對(duì)心臟電信號(hào)脈沖進(jìn)行計(jì)數(shù)

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

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

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

SETB TR0;啟動(dòng)T0定時(shí)

SETB TR1;啟動(dòng)T1計(jì)數(shù)

ACALLTEST

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

MOV 32H,TL1;將測(cè)量結(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í)常數(shù)

MOV TL0,#0F0HAJMP TEST

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

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

AJMP TIME1 ORG 0033H

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論