本文主要就這四種工作方式展開討論,分別從其邏輯結構的角度來學習和了解各個工作方式的特點和應用方法。其中特別需要注意的是:
1.定時器初值的計算和設定方法。
2.幾種工作方式之間的區(qū)別。
一、定時器/計數器的初始化
使用定時/計數器前需要對其進行初始化,使其按設定的功能工作。初始化的一般步驟如下:
(1)確定工作方式(即對tmod賦值)。
(2)預置定時或計數的初值(可直接將初值寫入th0、tl0或th1、tl1)。
(3)根據需要開放定時器/計數器的中斷。
(4)啟動定時器/計數器。
二、4種工作方式
1.工作方式0:13位定時器/計數器
當m1m0=00時,定時/計數器處于工作方式0。其電路邏輯結構見圖1。工作方式0是13位計數結構的工作方式,其計數器由th的全部8位和tl的低5位構成,tl的高3位沒有使用。以定時器0為例,當c/=0時,多路開關接通振蕩脈沖的12分頻輸出,13位計數器以此進行計數,這就是定時工作方式。當c/=1時,多路開關接通計數引腳(t0),外部計數脈沖由引腳t0輸入,當計數脈沖發(fā)生負跳變時,計數器加1,這就是計數工作方式。
圖1 定時/計數器0工作方式0邏輯結構
在方式0下,當為計數工作方式時,計數值的范圍是:1~8192(213);當為定時工作方式時,定時時間的計算公式為:
(213-計數初值)×機器周期
2.工作方式1:16位的定時/計數器
當m1m0=01時,定時/計數器處于工作方式1。此時,定時/計數器為16位計數結構的工作方式。等效電路如圖2所示,仍以定時器0為例。
圖2 定時器/計數器0工作方式1邏輯結構
在工作方式1下,計數器的計數值范圍是:1~65536(216)
當為定時工作方式1時,定時時間的計算公式為:
(216-計數初值)×機器周期
3.工作方式2—8位自動重裝的定時/計數器
當m1m0=10時,定時/計數器處于工作方式2。以定時/計數器0為例,此時定時器的等效電路如圖3所示,構成自動重新裝入計數初值。
圖3 定時/計數器工作方式2等效電路
工作方式2中,16位計數器分為兩部分,tlx為8位加1計數器,thx為8位初值暫存器,即以tl0為計數器,以th0作為預置寄存器。初始化時把計數初值分別加載至tl0和th0中,當計數溢出時,由預置寄存器th以硬件方法自動給計數器tl0重新加載,這種工作方式適合于重復計數的應用場合。
在工作方式2下,計數器的計數值范圍是:1~256(28)
當定時器工作在方式2時,定時時間的計算公式為:
(28-計數初值)×機器周期
4.工作方式3
當m1m0=11時,定時/計數器處于工作方式3,此時定時器的等效電路如圖4所示。在工作方式3模式下,定時/計數器1的工作方式與之不同。方式3對定時器t0和定時器t1是不相同的。若t1設置為方式3,則停止工作(其效果與tr1=0相同)。所以方式3只適用于t0。
圖4 定時/計數器工作方式3等效電路
當t0工作在方式3時,th0和tl0分成2個獨立的8位計數器。其中,tl0既可用作定時器,又可用作計數器,并使用原t0的所有控制位及其定時器中斷標志和中斷源。th0只能用作定時器,并使用t1的控制位tr1、中斷標志tf1和中斷源。