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