定時器/計數(shù)器具有4種工作方式,分別介紹如下。
方式0
當M1、M0為00時,定時器/計數(shù)器被設(shè)置為工作方式0,這時定時器/計數(shù)器的等效邏輯結(jié)構(gòu)框圖如圖6-4所示(以定時器/計數(shù)器Tl為例,TMOD.5、TMOD.4=00)。
定時器/計數(shù)器工作在方式0時,為13位計數(shù)器,由TLx(x=0,1)的低5位和THx的高8位構(gòu)成。TLx低5位溢出則向THx進位,THx計數(shù)溢出則把TCON中的溢出標志位TFx置1。
上圖中,C/T位控制的電子開關(guān)決定了定時器/計數(shù)器的兩種工作模式。
(1) C/T的反=0,電子開關(guān)打在上面位置,T1(或T0)為定時器工作模式,把時鐘振蕩器12分頻后的脈沖作為計數(shù)信號。
(2) C/T的反=1,電子開關(guān)打在下面位置,T1(或T0)為計數(shù)器工作模式,計數(shù)脈沖為P3. 4(或P3.5)引腳上的外部輸入脈沖,當引腳上發(fā)生負跳變時,計數(shù)器加1。
GATE位的狀態(tài)決定定時器/計數(shù)器的運行控制取決于TRx一個條件,還是取決于TRx和INTx(的反)(x=0,1)引腳狀態(tài)這兩個條件。
(1) GATE=0時,A點(見上圖)電位恒為1,B點電位僅取決于TRx狀態(tài)。TRx=1,B點為高電平,控制端控制電子開關(guān)閉合,允許Tl(或T0)對脈沖計數(shù)。TRx=0,B點為低電平,電子開關(guān)斷開,禁止T1(或T0)計數(shù)。
(2) GATE=1時,B點電位由INTx(的反)(x=0,1)的輸入電平和TRx的狀態(tài)這兩個條件來確定。當TRx=l,且INTx(的反)=1時,B點才為1,控制端控制電子開關(guān)閉合,允許T1(或T0)計數(shù)。故這種情況下計數(shù)器是否計數(shù)是由TRx和INTx兩個條件共同控制的。
方式1
當Ml、M0為01時,定時器/計數(shù)器工作于方式1,這時定時器/計數(shù)器的等效電路邏輯結(jié)構(gòu)如下圖所示。
方式1和方式0的差別僅僅在于計數(shù)器的位數(shù)不同,方式1為16位計數(shù)器,由THx高8位和TLx低8位構(gòu)成(x=0,1),方式0則為13位計數(shù)器,有關(guān)控制狀態(tài)位的含義(GATE、C/T、TFx、TRx)與方式0相同。
方式2
方式0和方式1的最大特點是計數(shù)溢出后,計數(shù)器為全0。因此在循環(huán)定時或循環(huán)計數(shù)應(yīng)用時就存在用指令反復(fù)裝入計數(shù)初值的問題。這不僅影響定時精度,而且也給程序設(shè)計帶來麻煩。方式2就是針對此問題而設(shè)置的。
當M1、M0為10時,定時器/計數(shù)器處于工作方式2,這時定時器/計數(shù)器的等效邏輯結(jié)構(gòu)如右圖所示(以定時器Tl為例,x=1)。
定時器/計數(shù)器的方式2為自動恢復(fù)初值(初值自動裝入)的8位定時器/計數(shù)器,TLx(x=0,1)作為常數(shù)緩沖器,當TLx計數(shù)溢出時,在溢出標志TFx置1的同時,還自動將THx中的初值送至TLx,使TLx從初值開始重新計數(shù)。定時器/計數(shù)器的方式2工作過程如左圖所示。
這種工作方式可以省去用戶軟件中重裝初值的指令執(zhí)行時間,簡化定時初值的計算方法,可以相當精確地確定定時時間。
方式3
方式3是為了增加一個附加的8位定時器/計數(shù)器而設(shè)置的,從而使AT89 S51單片機具有3個定時器/計數(shù)器。方式3只適用于定時器/計數(shù)器TO,定時器/計數(shù)器Tl不能工作在方式3。Tl處于方式3時相當于TR1=0,停止計數(shù)(此時Tl可用來作為串行口波特率產(chǎn)生器)。
1.工作方式3下的T0
當TMOD的低_2位為11時,TO的工作方式被選為方式3,各引腳與TO的邏輯關(guān)系如下所示。
定時器/計數(shù)器TO分為兩個獨立的8位計數(shù)器TLO和THO,TLO使用TO的狀態(tài)控制位ClT(的反)、GATE、TRO、INTO,而THO被固定為一個8位定時器(不能作為外部計數(shù)模式),并使用定時器Tl的狀態(tài)控制位TR1和TF1,同時占用定時器Tl的中斷請求源TF1。
2.T0工作在方式3時Tl的各種工作方式
一般情況下,當Tl用作串行口的波特率發(fā)生器時,TO才工作在方式3。TO處于工作方式3時,Tl可定為方式0、方式1和方式2,用來作為串行口的波特率發(fā)生器,或不需要中斷的場合。
(1) T1工作在方式0 Tl的控制字中Ml、M0=00時,Tl工作在方式0,工作示意圖如下圖所示。
(2) T1工作在方式1 當Tl的控制字中M1、M0=01時,T1工作在方式1,工作示意圖如上圖所示。
(3) T1工作在方式2 當Tl的控制字中M1、M0=10時,T1的工作方式為方式2,工作示意圖如下圖所示。
(4) Tl設(shè)置在方式3 當T0設(shè)置在方式3時,再把T1也設(shè)置成方式3,此時T1停止計數(shù)。