首页
/
每日頭條
/
生活
/
51單片機定時計數器使用方法
51單片機定時計數器使用方法
更新时间:2026-02-01 00:43:31

定時器/計數器是一種計數裝置,若對内部時鐘脈沖計數,可視為定時器;若對外部時鐘脈沖計數,可視為計數器。

定時器/計數器的應用可以采用中斷的方式當定時或計數達到時産生中斷,另外也可以采用詢問的方式,不斷詢問計數狀态,以控制程序流程。

8051計數寄存器是THx和TLx兩個8位的寄存器,x=1或x=0。

8051的定時器/計數器

51單片機定時計數器使用方法(8051定時器計數器)1

8051單片機有2個16位定時器/計數器:定時器0(Timer0)和定時器1(Timer1)簡稱T0和T1,8052在包含了T0、T1還有一個Timer 2(T2)。這三個定時器/計數器都可作為内部定時器或外部計數器。

若是作為内部定時器時,是計數内部的脈沖。以12MHz的計數時鐘脈沖系統為例,将12MHz/12送入定時器,此時定時器所計數的脈沖周期為1us。若采用16位的定時模式,則最多可計數65536個脈沖(即2^16),約0.0655s。

若作為外部計數器時,則是計數由T0或T1引腳送入的脈沖。同樣的,若采用16位的定時模式,最多可計數65536(即2^16)個計數量。

定時器/計數器模式寄存器TMOD

定時器/計數器模式寄存器TMOD主要設定定時器/計數器的工作模式、計數信号來源及啟動方式等。

51單片機定時計數器使用方法(8051定時器計數器)2

TMOD模式寄存器的低四位T0(0-3)配置定時器/計數器0(Timer0)的工作模式,高四位T1(4-7)配置定時器/計數器1(Timer1)的工作模式,這兩部分的結構類似,隻是控制的對象不同。

我們以高四位為例來了解TMOD模式寄存器的使用,即使用T 1,(T0一樣的用法):

GATE為Timer的門控開關,用來決定Timer 1(T 1)的啟動方式。

若GATE = 0,則隻要 TR1 = 1,即可啟動Timer 1,稱為内部啟動或軟件啟動;

若GATE = 1,則需要 TR1 = 1,還要等待外部中斷引腳INT1為高電平,Timer 1才能啟動工作,稱為外部啟動或硬件啟動。

C/T(Count/Timer)定時器/計數器切換開關:C/T=0為内部定時器,用來計數OSC/12的脈沖;C/T=1為外部計數模式,用來計數由T 1(P3.5)引腳輸入的脈沖;

M0,M1定時/計數模式選擇開關:

51單片機定時計數器使用方法(8051定時器計數器)3

Mode0(M1 = 0,M0 = 0):

提供兩個13位定時器/計數器(Timer 0/Timer 1),如前所述,計數量分别存放在TH1和TL1兩個8位計數寄存器裡。其中TH1放置8位,TL1放置5。

51單片機定時計數器使用方法(8051定時器計數器)4

如前所述,若要執行定時功能,則C/T設定為0,計數内部脈沖;若要執行計數功能,設置C/T為1,計數外部脈沖信号。

啟動方式為外部啟動時:設定GATE = 1,TR1=1,再等待外部中斷引腳INT1輸入高電平,即可啟動 Timer 1;

啟動方式為内部啟動時:設定GATE = 0,TR1=1,即可啟動 Timer 1;

Mode1(M1 = 0,M0 = 1):

提供兩個16位定時/計數器,計數量分别存放在THx和TLx兩個8位計數寄存器裡。

51單片機定時計數器使用方法(8051定時器計數器)5

Mode 1下的定時器/計數器的工作模式切換、啟動方式等與Mode 0 完全一樣,Mode 1計數量更大,所以完全可以替代Mode 0。

Mode 2(M1 = 1,M0 = 0):

提供兩個8位可自動加載的定時器/計數器(Timer 0和 Timer 1),其計數寄存器裡的計數量放置在TLx裡,當改定時器/計數器中斷時,會自動将THx計數寄存器裡的計數量載入到TLx裡。由于計數隻用了8位,所以其最大計數為256。

Mode 2下的定時器/計數器的工作模式切換、啟動方式等與Mode 0 完全一樣。

Mode 3(M1 = 1,M0 = 1):

此工作模式是一種特殊的模式,提供一個8位的定時器/計數器 Timer 0和一個8位的定時器Timer 1。

其中Timer 0除了不具有自動加載功能外,與Mode 2的Timer0幾乎完全一樣。

而Timer 1定時器也幾乎可以被Mode 2的Timer 1所取代。

定時器/計數器控制寄存器TCON

寄存器TCON的高四位一共定時器/計數器的啟動開關和中斷時的标志位,低四位為外部中斷觸發控制位和外部中斷請求标志位,如下圖:

51單片機定時計數器使用方法(8051定時器計數器)6

TF1:定時器Timer 1中斷(溢出)标志位。當Timer 1時,由硬件自動設定TF1= 1,并向CPU申請中斷。Timer 1中斷結束時,CPU自動對TF1清零。TF1也可以用軟件清零。

TR1:定時器Timer 1啟動開關。TR=1,Timer 1啟動,TR1=0關閉Timer 1。

TF0:定時器T0溢出标志位。其功能與TF1相同。

TR0:定時器T0運行控制位。其功能與TR1相同。

IE1:外部中斷1(INT1)标志位。

IT1:外部中斷1(INT1)觸發方式控制位。

IE0:外部中斷0(INT0)标志位。

IT0:外部中斷0(INT0)觸發方式控制位。

計數寄存器:

8051的計數寄存器是THx和TLx兩個8位寄存器,除了Mode 3之外,TH0和TL0是Timer 0所使用的計數寄存器,TH1和TL1是Timer 1所使用的的計數寄存器。若是8052還有Timer 2所使用的TH2和TL2。

8051定時器/計數器是一種正數計數器。當計數到滿(溢出)時,即産生中斷。我們計數時用該模式下的最大計數量減去所需計數,即從終點往前推,比如最大計數量為100,需要計數40,則從60處開始計數。

不同模式下的最大計數量不同,設定方式也有差異。

下面對各個模式下計數寄存器分别做說明:

Mode 0

由于Mode 0 TLx計數寄存器隻使用5位,2^5 = 32,我們要把計數起點的值除以32,其餘數放入TLx計數寄存器;其商放入THx計數寄存器。例如要使用Timer 0計數6000,則:

TL0 = (8192 - 6000)% 32;//取低5位

TH0 = (8192 - 6000)/ 32;//取高8位

Mode 1

在此模式下,TLx和THx計數寄存器都是8位,而2^8=256,同樣使用Timer 0計數6000則

TL0 = (65536 - 6000)% 256;

TH0 = (65536 - 6000)/ 256;

Mode 3

在此模式下,使用TL0計數寄存器作為第一個定時器/計數器的計數量,而TH0計數寄存器作為第二個定時器的計數量,用到哪個就填入哪個。兩個都用到就對TL0、TH0分别填入對應的值。填入方法與Mode 2一樣。

定時器/計數器的使用

定時器/計數器有兩種使用方式:中斷和查詢

中斷:包括定時器/計數器中斷的設定、計數量的設定、啟動設定及中斷子程序的編寫

查詢:隻要設定計數量及啟動,然後判斷定時器/計數器的标志位(TFx)是否動作,接着程序流程的跳轉。

中斷設定(關于8051的中斷就不展開了):

中斷的設定包括開啟開關(IE寄存器的設定)、中斷優先級的設定(即IP寄存器的設定)、中斷信号的設定(TCON寄存器的設定)等。例如要開啟中斷總開關及T0開關(IE為中斷啟用寄存器,IP為中斷優先級寄存器):

IE=0x82;//打開中斷總開關及啟用T0中斷

把T0中斷設定高優先級,并設定為内部定時器,軟件啟動方式,采用Mode 1:

IP=0x02;//T0中斷高優先級

TMOD = 0x01;//設定為内部定時器、軟件啟動和Mode 1

計數量設定(略,見上文)

定時器/計數器啟動

TRx=1;// 啟動Timer x

中斷子程序

中斷程序格式:void 函數名 interrupt 數字0—5

0 外部中斷INT0

1 定時器/計數器TF0

2外部中斷INT1

3定時器/計數器TF1

4串行口TI/RI

5定時器/計數器TF2/EXF2(8052才有)

注意區分定時器/計數器的中斷編号與外部中斷編号,定時器 0的中斷編号為 1,定時器 1的中斷編号為 3,定時器 2的中斷編号為 5。

如:

void my_INT (void) interrupt 3 //Timer 1溢出中斷子程序

{

…….//中斷子程序邏輯代碼

}

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
實用家居清潔技巧:蘸牛奶擦木制家具
實用家居清潔技巧:蘸牛奶擦木制家具
實用家居清潔技巧:蘸牛奶擦木制家具實用家居清潔技巧1、用鹽去地毯上的湯汁有小孩的家庭,地毯上常常滴有湯汁,千萬不能用濕布去擦。應先後用潔淨的幹布或手巾吸幹水分,然後在污漬處撒些食鹽,待鹽面滲入吸收後,用吸塵器将鹽吸走,再用刷子整平地毯即可。2、蘸牛奶擦木制家具取一塊幹淨的抹布在過期不能飲用的牛奶裡浸...
2026-02-01
巧開鏽鎖
巧開鏽鎖
巧開鏽鎖的材料:普通白紙、鉛筆、一把小刀。巧開鏽鎖步驟:1、把白紙墊在桌子上,把鉛筆芯削成粉末。2、把削下來的鉛筆芯,倒在鎖眼裡,同時也可以把鉛筆芯塗在鑰匙上,然後就可以鑰匙插進去,就像這樣,先反複多插幾次,讓鑰匙和鎖之間充分潤滑,同時破壞掉鐵鏽,最後就可以慢慢的試試左右擰開了。
2026-02-01
三伏天用什麼排濕氣寒氣最好?
三伏天用什麼排濕氣寒氣最好?
01伏天去濕氣寒氣的辦法:1、少吃甜、膩的食物。如果你身體有濕氣少吃甜膩食物,因為甜膩容易轉化為濕氣。2、别吃生冷食物。3、别喝酒。4、可以多吃姜去寒濕。5、可以多吃綠豆、西瓜、扁豆來去濕寒氣。三伏天是一年中最熱的時候,這段時間也是冬病夏治的好時候,非常适合排除體内的寒濕,伏天去濕氣寒氣的辦法:1、...
2026-02-01
二月二的風俗有哪些?
二月二的風俗有哪些?
南方部分地區有祭社習俗,即慶祝土地公生日;北方則有吃豬頭肉、理發(剪“龍頭”)的習俗。根據民間傳說,此為主管雲雨的龍王擡頭之日,意味着在此之後雨水會漸多;民間亦有“二月二,龍擡頭”的諺語,表示春季來臨,萬物複蘇,蟄龍開始活動,預示一年的農事活動即将開始。龍擡頭(農曆二月二),又稱“春耕節”“農事節”...
2026-02-01
什麼是政治條件兵?
什麼是政治條件兵?
政治條件兵就是政治條件較高,現實表現良好,本人及親屬無違法犯罪行為,個人形象較好的兵種。比如到北京衛戍區,在中央,軍隊高層領導身邊和重要部門當警衛人員等,對政治條件要求更高。政治條件兵就是政治條件較高,現實表現良好,本人及親屬無違法犯罪行為,個人形象較好的兵種。政治兵在新兵連的訓練和普通士兵一樣,但...
2026-02-01
Copyright 2023-2026 - www.tftnews.com All Rights Reserved