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

下載本文檔

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

文檔簡介

89C51單片機原理及應(yīng)用89C51單片機定時器/計數(shù)器

單片機的定時/計數(shù)器

單片機應(yīng)用系統(tǒng)中定時計數(shù)的需求:

如用單片機控制的打鈴器、空調(diào)的定時開關(guān)、啤酒自動生產(chǎn)線上對酒瓶的計數(shù)裝置等。

89C51單片機片內(nèi)的定時/計數(shù)器:

兩個16位可編程的定時/計數(shù)器:T0和T1,都能定時和對外部事件進行計數(shù)。此外,T1還可以作為串行接口的波特率發(fā)生器。定時/計數(shù)器的結(jié)構(gòu)1.定時和計數(shù)的原理(1)計數(shù)

定時/計數(shù)器的實質(zhì)是在處置基礎(chǔ)上的加1計數(shù)器(16位),16位定時/計數(shù)器的計數(shù)容量是65536單片機是對脈沖個數(shù)計數(shù),計數(shù)器每接收到一個脈沖,計數(shù)值加1,當(dāng)接收滿65535個脈沖后,再來一個脈沖,計數(shù)值清0表明這一輪計數(shù)結(jié)束,同時將標(biāo)志位TF0或TF1置1。

(2)定時單片機內(nèi)部的計數(shù)器用作定時器時,是對標(biāo)準(zhǔn)的時鐘進行了計數(shù),每來一個時鐘脈沖,計數(shù)器加1,只要保證計數(shù)脈沖的間隔相等,則計數(shù)值就代表了時間的流逝。計數(shù)器如何能作為定時器使用呢?單片機中的定時器和計數(shù)器其實是一個器件:計數(shù)器:是對外部發(fā)生的事件進行計數(shù),定時器:是對單片機內(nèi)部的標(biāo)準(zhǔn)時鐘脈沖進行計數(shù)。單片機內(nèi)部的標(biāo)準(zhǔn)時鐘脈沖是如何獲得的呢?由單片機的晶振經(jīng)過12分頻后得到。由于晶振的頻率很準(zhǔn),所以這個時鐘脈沖的時間間隔也很準(zhǔn)。當(dāng)單片機采用12MHz的晶振時,它提供給計數(shù)器的脈沖頻率是12MHz/12=1MHz,脈沖周期就是1微秒。定時/計數(shù)器T0的結(jié)構(gòu)示意圖獲得標(biāo)準(zhǔn)時間單片機內(nèi)部的16位定時/計數(shù)器由高8位和低8位兩個寄存器組成:

T0由TH0和TL0組成,

T1由TH1和TL1組成,定時/計數(shù)器的計數(shù)值就存放在這里面。定時/計數(shù)器T1的結(jié)構(gòu)與T0相同。定時器/計數(shù)器的控制寄存器TMOD:選擇定時器/計數(shù)器T0、T1的工作模式和工作方式。TCON:控制T0、T1的啟動和停止計數(shù),同時包含了

T0、T1的狀態(tài)。定時/計數(shù)器的結(jié)構(gòu)單片機復(fù)位時,兩個寄存器的所有位都被清0。定時器/計數(shù)器控制寄存器TCON

低4位與外部中斷有關(guān),已介紹。高4位的功能如下:

(1)TF1、TF0——計數(shù)溢出標(biāo)志位(2)TR1、TR0——計數(shù)運行控制位 1:啟動定時器/計數(shù)器工作

0:停止定時器/計數(shù)器工作

工作方式控制寄存器TMOD8位分為兩組,高4位控制T1,低4位控制T0。(1)GATE——門控位 0:以TRX(X=0,1)來啟動定時器/計數(shù)器運行。 1:用外中斷引腳(INT0*或INT1*)上的高電平和TRX來啟動定時器/計數(shù)器運行。(2)M1、M0——工作方式選擇位M1M0工作方式00 方式0,13位定時器/計數(shù)器。01 方式1,16位定時器/計數(shù)器。10 方式2,8位常數(shù)自動重新裝載11 方式3,僅適用于T0,T0分成兩個8位計數(shù)器,T1停止計數(shù)。(3)C/T*——計數(shù)器模式和定時器模式選擇位

0:定時器模式。 1:計數(shù)器模式。

定時/計數(shù)器的工作方式一.方式0方式0是13位的定時/計數(shù)方式,因而最大計數(shù)值為2的13次冪,等于8192。如計數(shù)值為N,則置入的初值X為:

X=8192-N例如定時/計數(shù)器T0的計數(shù)值為1000,則初值為7192,轉(zhuǎn)換成二進制數(shù)為1110000011000B,則TH0=11100000B,TL0=00011000B。工作方式0為13位的計數(shù)器,C/T*位決定工作模式:

0:開關(guān)打在上面,為定時器工作模式; 1:開關(guān)打在下面,為計數(shù)器工作模式,計數(shù)脈沖為P3.4、P3.5引腳上的外部輸入脈沖,當(dāng)引腳上發(fā)生負(fù)跳變時,計數(shù)器加1。GATE位:決定定時器/計數(shù)器的運行取決于TRx一個條件還是TRx和INTx*引腳兩個條件。(1)0:A點是否計數(shù),僅取決于TRx的狀態(tài)。(2)1:B點電位由INTX*的輸入電平和TRX的狀態(tài)這兩個條件來確定。是否計數(shù)是由TRx和INTx*二個條件來控制的。二、方式1方式1是16位的定時/計數(shù)方式,因而最大計數(shù)值為2的16次冪,等于65536。如計數(shù)值為N,則置入的初值X為:X=65536-N如定時/計數(shù)器T0的計數(shù)值為1000,則初值為65536-1000=64536,轉(zhuǎn)換成二進制數(shù)為1111110000011000B,則TH0=11111100B,TL0=00011000B。三.方式2方式2,16位的計數(shù)器只用了8位來計數(shù),用的是TL0(或TL1)的8位來進行計數(shù),而TH0(或TH1)用于保存初值。當(dāng)TL0(或TL1)計滿時則溢出,一方面使TF0(或TF1)置位,另一方面溢出信號又會觸發(fā)三態(tài)門,使三態(tài)門導(dǎo)通,TH0(或TH1)的值就自動裝入TL0(或TL1)。TLX作為常數(shù)緩沖器,當(dāng)TLX計數(shù)溢出時,在置“1”溢出標(biāo)志TFX的同時,還自動的將THX中的初值送至TLX,使TLX從初值開始重新計數(shù)。特別適合于產(chǎn)生比較精確的連續(xù)脈沖信號。由于是8位的定時/計數(shù)方式,因而最大計數(shù)值為2的8次冪,等于256。如計數(shù)值為N,則置入的初值X為:

X=256-N

如定時/計數(shù)器T0的計數(shù)值為100,則初值為256-100=156,轉(zhuǎn)換成二進制數(shù)為10011100B,則TH0=TL0=10011100B。注意:

由于方式2計滿后,溢出信號會觸發(fā)三態(tài)門自動地把TH0(或TH1)的值裝入TL0(或TL1)中,因而如果要重新實現(xiàn)N個單位的計數(shù),不用重新置入初值。方式3只有定時/計數(shù)器T0才有,當(dāng)M1M0兩位為11時,定時/計數(shù)器T0工作于方式3,定時/計數(shù)器T0被分為兩個部分TL0和TH0,其中,TL0可作為定時/計數(shù)器使用,占用T0的全部控制位:GATE、C/T、TR0和TF0;而TH0固定只能作定時器使用,對機器周期進行計數(shù),這時它占用定時/計數(shù)器T1的TR1位、TF1位和T1的中斷資源。四、方式3工作方式3相當(dāng)于增加一個附加的8位定時器/計數(shù)器,從而具有3個定時器/計數(shù)器。只適用于定時器/計數(shù)器T0。T1不能工作在方式3,T1方式3時相當(dāng)于TR1=0,停止計數(shù)(此時T1可用來作串行口波特率產(chǎn)生器)。1.工作方式3下的T0T0分為兩個獨立的8位計數(shù)器:TL0和TH0。TL0使用T0的狀態(tài)控制位C/T*、GATE、TR0、,而TH0被固定為一個8位定時器(不能作外部計數(shù)模式),并使用定時器T1的狀態(tài)控制位TR1和TF1,同時占用定時器T1的中斷請求源TF1。2.T0工作在方式3下T1的各種工作方式

當(dāng)T1用作串行口的波特率發(fā)生器時,T0才工作在方式3。T0處于方式3時,T1可定為方式0、方式1和方式2,用來作為串行口的波特率發(fā)生器,或不需要中斷的場合。定時器/計數(shù)器對輸入信號的要求

外部計數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24,例如選用12MHz頻率的晶體,則可輸入500KHz的外部脈沖。輸入信號的高、低電平至少要保持一個機器周期。如圖所示,圖中Tcy為機器周期。定時器/計數(shù)器的初始化定時/計數(shù)器的方式寄存器TMOD其中:M1、M0為工作方式選擇位,用于對T0的四種工作方式,T1的三種工作方式進行選擇,選擇情況如下C/T:定時或計數(shù)方式選擇位,當(dāng)C/T=1時工作于計數(shù)方式;當(dāng)C/T=0時工作于定時方式。GATE:門控位,用于控制定時/計數(shù)器的啟動是否受外部中斷請求信號的影響。定時/計數(shù)器的控制寄存器TCON其中:TF1:定時/計數(shù)器T1的溢出標(biāo)志位,當(dāng)定時/計數(shù)器T1計滿時,由硬件使它置位,如中斷允許則觸發(fā)T1中斷。進入中斷處理后由內(nèi)部硬件電路自動清除。TR1:定時/計數(shù)器T1的啟動位,可由軟件置位或清零,當(dāng)TR1=1時啟動;TR1=0時停止。16位定時/計數(shù)器計滿65536個脈沖時,也會發(fā)生溢出。

定時/計數(shù)器溢出后標(biāo)志位TF0(或TF1)由0變1,由此能夠引發(fā)定時中斷(在中斷定時方式下),這就像定時的時間一到,鬧鐘就會響一樣。

如果采用12MHz的晶振,對應(yīng)的脈沖周期是1微秒,計滿65536個脈沖所對應(yīng)的時間就是65.536ms。定時/計數(shù)值的設(shè)置

計數(shù)器的道理是一樣的,只要用預(yù)置數(shù)的方法先在計數(shù)容器內(nèi)存入一個初值,如我們要計100,那就存入65436,只要再來100個脈沖,就剛好會溢出,引發(fā)中斷。在時鐘頻率為12MHz的情況下,每個時鐘脈沖是1微秒,則計滿65536個脈沖需65.536毫秒,如要定時10毫秒則存入初值55536,(10毫秒是10000微秒,需計數(shù)10000個脈沖)??梢?,

定時器的定時時間長短與系統(tǒng)時鐘和定時器初值有關(guān)。

說明

1.當(dāng)定時/計數(shù)器用作計數(shù)器時,通過引腳P3.4、P3.5對外部輸入脈沖計數(shù)。

2.定時/計數(shù)器T0(T1)啟動運行后,會按設(shè)定的工作方式獨立進行計數(shù),不再占用CPU時間。當(dāng)計數(shù)器T0(T1)計滿溢出時,TF0(TF1)置1,向CPU發(fā)出中斷請求信號。定時器初值的設(shè)置定時器/計數(shù)器初值計算

定時器/計數(shù)器用于定時或計數(shù)時,必須按照需要給計數(shù)器設(shè)置初值。定時器/計數(shù)器在計數(shù)初值的基礎(chǔ)上以加1的方式進行計數(shù),在計數(shù)器從全1變?yōu)槿?時,將自動產(chǎn)生溢出中斷請求。(1)計數(shù)初值計算假設(shè)要計數(shù)的值為X,由于計數(shù)器是加工計數(shù)器,所以定時器/計數(shù)器的初值為2-X:其中n的值依賴于工作方式, 對于方式0,n=

13;即初值=8192-X 對于方式1,n=

16;即初值=65536-X 對于方式2和方式3,n=8;即初值=256-Xn2)定時初值計算定時就是定時間,假設(shè)晶振頻率為f,定時時間為T,對應(yīng)的計數(shù)值為X,此時計數(shù)器是將系統(tǒng)時鐘12分頻后作為計數(shù)脈沖,則以下等式成立。要裝入的計數(shù)器初值CI=2-T·fosc/12。例如:已知晶振的頻率為6MHz,要求定時為2ms,則當(dāng)為方式0時,應(yīng)裝入的計數(shù)初值為;8192-2×10×6×10/12=8192-1000=7192n36

定時時間常數(shù)初值X:方式0X=8192-T(fosc/12)

方式1X=65536-T(fosc/12)

方式2、方式3X=256-T(fosc/12)

其中T是需要定時的時間,單位是微秒;fosc是晶振

計數(shù)時間常數(shù)X:方式0X=8192-S

方式1X=65536-S

方式2、方式3X=256-S

說明:式中S是需要計數(shù)的次數(shù)

定財器/計數(shù)器初始化步驟

1)確定工作方式:把工作方式控制字寫入到TMOD中;

2)設(shè)置定時或計數(shù)的初值:根據(jù)問題要求,求出定時或計數(shù)的初值,寫入到寄存器THO、TLO或THI、TLI中。

3)如果需要中斷,使定時器中斷允許位ET0或ETI置位,如果要求中斷嵌套,還應(yīng)設(shè)置相應(yīng)的中斷優(yōu)先級,然后置位EA,使CPU開放中斷;如果不需要中斷,僅以軟件方式對計數(shù)器溢出標(biāo)志TFO或TFI進行查詢,則可略去此步驟;

4)啟動定時器/計數(shù)器:將TRO或TRI置1即可啟動定時器/計數(shù)器。定時器/計數(shù)器的編程和應(yīng)用

4種工作方式中,方式0與方式1基本相同,由于方式0是為兼容MCS-48而設(shè),初值計算復(fù)雜,在實際應(yīng)用中,一般不用方式0,而采用方式1。方式1應(yīng)用

例1

假設(shè)系統(tǒng)時鐘頻率采用6MHz,要在P1.0上輸出一個周期為2ms的方波,如圖所示。

方波的周期用T0來確定,讓T0每隔1ms計數(shù)溢出1次(每1ms產(chǎn)生一次中斷),CPU響應(yīng)中斷后,在中斷服務(wù)程序中對P1.0取反。(1)計算初值X

設(shè)初值為X,則有: (216-X)×2×10-6=1×10-3216-X=500X=65036X化為16進制,即所以,T0的初值為:TH0=0FEHTL0=0CH例2假設(shè)系統(tǒng)時鐘為6MHz,編寫定時器T0產(chǎn)生1秒定時的程序。(1)T0工作方式的確定定時時間較長,采用哪一種工作方式?

溫馨提示

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

評論

0/150

提交評論