AT89S51單片機的定時器/計數(shù)器結構如下圖所示,定時器/計數(shù)器T0由特殊功能寄存器TH0、TL0構成,定時器/計數(shù)器Tl由特殊功能寄存器TH1、TL1構成。
兩個定時器/計數(shù)器都具有定時器和計數(shù)器兩種工作模式,4種工作方式(方式0、方式1、方式2和方式3)。定時器/計數(shù)器屬于增1計數(shù)器。
特殊功能寄存器TMOD用于選擇定時器/計數(shù)器T0、T1的工作模式和工作方式。特殊功能寄存器TCON用于控制T0、T1的啟動和停止計數(shù),同時包含了T0、T1的狀態(tài)。T0、T1不論是工作在定時器模式還是計數(shù)器模式,實質都是對脈沖信號進行計數(shù),只不過是計數(shù)信號的來源不同。計數(shù)器模式是對加在T0(P3.4)和Tl( P3.5)兩個引腳上的外部脈沖進行計數(shù)(如上圖所示),而定時器工作模式是對單片機的時鐘振蕩器信號經片內12分頻后的內部脈沖信號計數(shù)。由于時鐘頻率是定值,所以可根據對內部脈沖信號的計數(shù)值計算出定時時間。
計數(shù)器的起始計數(shù)都是從計數(shù)器的初值開始。單片機復位時計數(shù)器的初值為O,也可用指令給計數(shù)器裝入一個新的初值。
工作方式控制寄存器TMOD
AT89S51單片機的定時器/計數(shù)器工作方式寄存器TMOD用于選擇定時器/計數(shù)器的工作模式和工作方式,字節(jié)地址為89H,不能位尋址,其格式如下圖所示。
8位分為兩組,高4位控制Tl,低4位控制T0。
下面對TMOD的各位給出說明。
(1) GATE:門控位。
GATE=0時,僅由運行控制位TRx(x=0,1)來控制定時器/計數(shù)器運行。
GATE=1時,用外中斷引腳(INT0(的反)INTI(的反))上的電平與運行控制位TRx共同來控制定時器/計數(shù)器運行。
(2) M1、M0:工作方式選擇位。
Ml、MO共有4種編碼,對應于4種工作方式的選擇,見下表。
表 M1、M0工作方式選擇
(3) C/T(的反):計數(shù)器模式和定時器模式選擇位。
C/T(的反)=0,為定時器工作模式,對單片機的晶體振蕩器12分頻后的脈沖進行計數(shù)。
C/T(的反)=1,為計數(shù)器工作模式,計數(shù)器對外部輸入引腳TO(P3.4)或T1(P3.5)的外部脈沖(負跳變)計數(shù)。
定時器/計數(shù)器控制寄存器TCON
TCON的字節(jié)地址為88H,可位尋址,位地址為88H~8FH。TCON的格式如下圖所示。
這里介紹與定時器/計數(shù)器相關的高4位功能。
(1) TF1、TF0:計數(shù)溢出標志位。
當計數(shù)器計數(shù)溢出時,該位置1。使用查詢方式時,此位作為狀態(tài)位供CPU查詢,但應注意查詢有效后,應使用軟件及時將該位清0。使用中斷方式時,此位作為中斷請求標志位,進入中斷服務程序后由硬件自動清0。
(2) TR1、TR0:計數(shù)運行控制位。
TR1位(或TR0位)=1,啟動定時器/計數(shù)器工作的必要條件。
TR1位(或TR0位)=0,停止定時器/計數(shù)器工作。
該位可由軟件置1或清0。