計數器的4種工作方式及應用

在前面的學習中,我們已經知道通過設置TMOD的M1、M0兩位,可以選擇定時/計數器的四種工作方式。T0和T1在使用前三種工作方式時,除使用的寄存器和控制位不同外,其他操作相似。另外,T1沒有工作方式3。下面以T0為例來講述4種工作方式。

工作方式0及應用

當M1M0=00時,T0採用方式0工作,如圖5-2所示,此時T0是一個由TL0的低5位和TH0的8位構成的13位計數器(注:TL0的高3位未用)。

定時器/計數器的4種工作方式及應用

圖5-2 定時/計數器T0工作方式0的原理圖

13位計數器的最大計數值為2 13 =8192,若振盪器的時鐘頻率 f OSC=12MHz時,機器週期為1 μ s,方式0最大的定時時間為8192 μ s。

若TL0的低5位計數滿時,直接向TH0進位(而不是向TL0的第6位進位);13位定時/計數溢出時,TF0置“1”。

技巧

定時/計數原理:定時/計數器只有在計數值達到最大(發生溢出)時,才會產生中斷。那麼任意值的定時或計數怎麼實現呢,比如採用方式0時,我們需要計數500,那麼,計數開始前,在定時/計數器中寫入預置數7692(8192-500),就可以達到需要的效果。

【例5-1】 利用T0方式0定時由P1.0輸出頻率為500Hz的方波信號,晶振為12MHz。

分析如下:

已知信號的頻率為500Hz,則週期為2ms,由於輸出的是方波信號,定時時間為半個週期,即1000us。

則 定時初值=2 13 -t/T機器=8192-1000/1=7192

TH0= 7192/32=0xe0

TL0= 7192%32=0x18

c語言的源程序如下:

定時器/計數器的4種工作方式及應用

工作方式1及應用

當M1M0=01時,T0採用方式1工作,如圖5-3所示,此時T0是TL0和TH0構成16位的定時/計數器,最大計數值為2 16 =65536,其他特性和方式0相似。

定時器/計數器的4種工作方式及應用

圖5-3 定時/計數器T0工作方式1的原理圖

【例5-2】 利用定時器0產生10Hz的方波,由P1.0口輸出,設晶振頻率為12MHz。

分析如下:

頻率為10Hz的方波,週期為100ms,定時時間為50ms,12MHz晶振的機器週期為1us。

T0初值=2 16 -t/T機器=65536-50000/1=55536=0x3cb0

則TH0=0x3c,TL0=0xb0

C語言的源程序如下:

定時器/計數器的4種工作方式及應用

工作方式2及應用

當M1M0=10時,T0採用方式2工作,如圖5-4所示,此時T0是一個8位自動重裝定時/計數器,低8位TL0用作計數(最大計數值為2 8 =256),高8位TH0用於保存計數初值。若TL0計數已滿發生溢出,TF0置“1”的同時,TH0中的初值將自動裝入TL0。

定時器/計數器的4種工作方式及應用

圖5-4 定時/計數器T0工作方式2的原理圖

提示

方式2的計數範圍雖然比較小,但是初值可自動恢復,因此適用於計數範圍較小、需要重複計數的場合,例如脈衝信號發生器。

【例5-3】 在工業流水線生產中,常利用傳感器檢測貨品經過個數。這裡我們進行模仿操作,由單片機定時器T1的外部脈衝輸入引腳對檢測的脈衝信號進行計數,當計數滿12個時,讓電機運轉3秒後停止。脈衝計數及電機控制的電路如圖5-5所示。

定時器/計數器的4種工作方式及應用

圖5-5 脈衝計數及電機控制電路圖

分析如下:

利用T1的方式2計數對外部脈衝計數,根據題目要求,當計數12次能夠產生溢出,則T1的初值應設定為256-12=244。TMOD寄存器的高4位是針對T1進行設置,其中M1M0=10設為方式2,

設為計數方式。電機的啟動與停止通過P1.0進行控制,當P1.0輸出1時三極管導通,電機得電運行,當P1.0輸出0時,三極管截止,電機失電停止。

c語言的源程序如下:

定時器/計數器的4種工作方式及應用

工作方式3及應用

當M1M0=11時,T0採用方式3工作,如圖5-6所示,在這種工作方式下,T0被拆成兩個獨立的定時/計數器來用。其中,TL0使用T0原有的資源,可以作為8位定時/計數器;TH0使用T1的TR1和TF1,只能對內部脈衝計數,作為定時器使用。

定時器/計數器的4種工作方式及應用

圖5-6 定時/計數器T0工作方式3的原理圖

當T0工作在方式3時,T1仍可設置為方式0、方式1或方式2,如圖5-7所示。此時,T1由定時/計數方式選擇位切換其定時或計數功能,當計數器計滿溢出時,將輸出送往串行口。在這種情況下,T1一般用作串行口波特率發生器。

定時器/計數器的4種工作方式及應用

圖5-7 T0工作在方式3時T1的三種工作方式

提示

由於T1的TR1位被TH0佔用,因此,其啟動和關閉較為特殊。當工作方式設置完成時,T1就開始運行;將T1的工作方式設置為方式3時,T1停止工作。

【例5-4】 有一應用系統,將T1置於方式2作為串行口的波特率發生器,現要求T0增加一個外部中斷源,中斷時P1.1口取反,並由P1.0輸出頻率為10KHz的方波信號(假設單片機的晶振頻率為12MHz)。

分析如下:

由於T1已經被使用,因而T0既要作為方波信號發生器,又要增加一個外部中斷源,只能採用工作方式3,其中TH0為8位定時器,TL0為預置初值0xff的計數器。

10KHz方波的週期為100us,因此,TH0初值為256-100/2=206=0xce

程序如下:

定時器/計數器的4種工作方式及應用


分享到:


相關文章: