定時(shí)器/計(jì)數(shù)器的工作方式是什么?
掃描二維碼
隨時(shí)隨地手機(jī)看文章
定時(shí)器/計(jì)數(shù)器有 4 種工作方式 ,由 TMOD 設(shè)置,并由 TCON 控制。TMOD 和 TCON 都屬于特殊功能寄存器。
1. 定時(shí)器/計(jì)數(shù)器的方式寄存器 TMOD
TMOD 的地址是 89H ,它不能位尋址 ,它里面的內(nèi)容被稱(chēng)為方式字,設(shè)置時(shí)一次寫(xiě)入,其各位的定義如圖 6.2 所示。高 4 位用于定時(shí)器 T1 ,低 4 位用于定時(shí)器 T0 。
下面介紹 TMOD 各位功能。
1) M1M0 工作方式控制位
兩位可組合成 4 種編碼,分別對(duì)應(yīng) 4 種工作方式,見(jiàn)表 6.1 所示。
2) C/T珚 定時(shí)器方式或計(jì)數(shù)器方式選擇位
當(dāng) C/T珚 =1 時(shí),為計(jì)數(shù)器方式;當(dāng) C/T珚 = 0 時(shí),為定時(shí)器方式。
3) GATE 定時(shí)器/計(jì)數(shù)器運(yùn)行門(mén)控標(biāo)志位
當(dāng) GATE=1 時(shí),只有 INT0(或 INT1) 引腳為高電平且 TR0(或 TR1) 置 1 時(shí),相應(yīng)的
定時(shí)器/計(jì)數(shù)器才被選通工作 ,這時(shí)可用于測(cè)量在 INTx 端出現(xiàn)的正脈沖的寬度 。若GATE=0 ,則只要 TR0 (或 TR1) 置 1 ,定時(shí)器/計(jì)數(shù)器就被選通,而不管 INT0(或 INT1) 的電平是高還是低。
2.定時(shí)器/計(jì)數(shù)器控制寄存器 TCON
特殊功能寄存器 TCON 用于控制定時(shí)器的操作及對(duì)定時(shí)器中斷的控制。
TF0 、TF1 分別是定時(shí)器/計(jì)數(shù)器 T0 、T1 的溢出標(biāo)志位,加法計(jì)數(shù)器計(jì)滿(mǎn)溢出時(shí)置 1,申請(qǐng)中斷,在中斷響應(yīng)后自動(dòng)復(fù) 0。TF 產(chǎn)生的中斷申請(qǐng)是否被接受,還需要由中斷是否開(kāi)放來(lái)決定。
TR1、TR0 分別是定時(shí)器/計(jì)數(shù)器 T1 、T0 的運(yùn)行控制位,通過(guò)軟件置 1 后,定時(shí)器/計(jì)數(shù)器才開(kāi)始工作,在系統(tǒng)復(fù)位時(shí)被清 0。
工作方式
定時(shí)器/計(jì)數(shù)器的工作方式有 4 種,由 TMOD 中的 M1 和 M0 位選擇,工作方式不同,計(jì)數(shù)長(zhǎng)度(即最大值 M)和計(jì)數(shù)方式也不同。
方式 0:
當(dāng) M1M0 設(shè)置為 00 時(shí),定時(shí)器選定為方式 0 工作。在這種方式下,16 位寄存器只用了 13 位,加法計(jì)數(shù)器由 TL 的低 5 位和 TH 的高 8 位組成,而 TL 的高 3 位棄之不用。工作方式 0 的邏輯圖如圖 6.3 所示。
當(dāng) GATE=0 時(shí),只要 TCON 中的 TR0 為 1 ,TL0 及 TH0 組成的 13 位計(jì)數(shù)器就開(kāi) 始計(jì)數(shù) ;當(dāng) GATE=1 時(shí),此時(shí)僅 TR0=1 仍不能使計(jì)數(shù)器計(jì)數(shù),還需要 INT0引腳為高電 平才能使計(jì)數(shù)器工作 。當(dāng) GATE=1 和 TR0=1 時(shí),TH0+TL0 是否計(jì)數(shù)取決于 INT0引腳的信號(hào),當(dāng) INT0由低電平變?yōu)楦唠娖綍r(shí),開(kāi)始計(jì)數(shù);當(dāng) INT0由高電平變?yōu)榈碗娖綍r(shí),停止計(jì)數(shù),這樣就可以用來(lái)測(cè)量在 INT0 引腳上出現(xiàn)的正脈沖寬度。
圖 6.3 方式 0(13 位計(jì)數(shù)器)
當(dāng) 13 位計(jì)數(shù)器加 1 到全“1”以后,再加 1 就產(chǎn)生溢出,這時(shí)置 TCON 的 TF0 為 1 ,同 時(shí)把計(jì)數(shù)器全變?yōu)椤?”。這種方式的計(jì)數(shù)長(zhǎng)度 M 為 2 的 13 次方。由于加法計(jì)數(shù)器是 13 位的,故賦的初值也應(yīng)是 13 位二進(jìn)制數(shù)。但應(yīng)注意,13 位初值的高 8 位賦值給 TH0 ,低 5 位數(shù)前面加 3 個(gè) 0 湊成 8 位之后賦給 TL0 。如要求計(jì)數(shù)值 N 為 1000 ,則初值 X 為
X=M-1000=8192-1000=7192=1110000011000B
其二進(jìn)制數(shù)前 8 位是 11100000 ,后 5 位是 11000 ,因此賦初值時(shí) TH=0E0H ,TL=18H 。
方式 1 :
方式 1 和方式 0 的工作相同,唯一的不同是加法計(jì)數(shù)器是由 16 位計(jì)數(shù)器組成的,高 8 位為 TH ,低 8 位為 TL 。其控制邏輯圖如圖 6.4 所示。給它賦初值時(shí),16 位二進(jìn)制數(shù)的高 8 位賦給 TH ,低 8 位賦給 TL,最大計(jì)數(shù)值 M 為 2 的 16 次方。
圖 6.4 方式 1(16 位計(jì)數(shù)器)
方式 2:
方式 2 使定時(shí)器/計(jì)數(shù)器作為能自動(dòng)重置初值連續(xù)工作 的 8 位計(jì)數(shù)器,TL 作 8 位加 法計(jì)數(shù)器,TH 用于重置初值的常數(shù)緩沖器,如圖 6.5 所示。TH 由軟件預(yù)置初值 ,當(dāng) TL 產(chǎn)生溢出時(shí),一方面使溢出標(biāo)志 TF 置 1 ,同時(shí)把 TH 中的 8 位數(shù)據(jù)重新裝入 TL 中。
方式 0 、1 在計(jì)數(shù)器計(jì)滿(mǎn)溢出后由軟件重新賦初值,方式 2 就省去了這種麻煩,所以它常用于定時(shí)控制或串行口的波特率發(fā)生器。如希望每隔 250 μs 產(chǎn)生一個(gè)定時(shí)控制脈沖,若晶振頻率為 12 MHz ,則此時(shí)計(jì)數(shù)初值 X= M-N= (256-250)/1=6 ,故 只要在 TH0,TL0 中預(yù)置初始值 6 ,將定時(shí)器/計(jì)時(shí)器 T0 設(shè)置成定時(shí)工作方式 2,則就能很方便地實(shí)現(xiàn)上述功能。
圖 6.5 方式 2(初始常數(shù)自動(dòng)重裝載)
方式 3:
方式 3 對(duì) T0 和 T1 是不相同的,若 T1 設(shè)置為方式 3 ,則停止工作(其效果與 TR1=0 相同), 所以方式 3 只適用于 T0。
在工作方式 3 ,定時(shí)器/計(jì)數(shù)器 T0 被分成兩個(gè)獨(dú)立的 8 位計(jì)數(shù)器 TL0 和 TH0 。如 圖 6.6 所 示 。 由 圖 可 見(jiàn) ,TL0 利用 T0 本身的一些控制(C/T ,GATE ,TR0 ,INT0 和 TF0), 它的操作與方式 0 和方式 1 類(lèi)似,只不過(guò)是一個(gè) 8 位計(jì)數(shù)器,而 TH0 借用 了 T1 的控制位 TR1 和 TF1 ,并規(guī)定只能用作定時(shí)器功能,對(duì)機(jī)器周期計(jì)數(shù)。在這種方式中,TH0 控制了 T1 的中斷,T1 可以設(shè)置為方式 0~2 ,主要用于任何不需要中斷控制的場(chǎng)合,或用作串行口的波特率發(fā)生器。
圖 6.6 方式 3(兩個(gè) 8 位獨(dú)立計(jì)數(shù)器)
通常 ,當(dāng) T1 用作串行口波特率發(fā)生器時(shí),T0 才定義為方式 3,以增加一個(gè) 8 位計(jì)數(shù)器。