首页
/
每日頭條
/
生活
/
51單片機定時計數器使用方法
51單片機定時計數器使用方法
更新时间:2024-11-30 07:22:20

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

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

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分。罰球是對場上運動員以及教練組成員的一種制約,也是對進攻方受到侵犯後的一種補償。一次罰球也就是給予一個隊員在罰球線後的半圓内,無争搶的情況下得1分的機會。籃球運動員可以用任何方式罰球,并且以這樣的...
2024-11-30
香鍋退役後發飙
香鍋退役後發飙
前導:香鍋退役後在RNG的公會做了遊戲主播,發展不算順利。一開始有不少人關注香鍋,直到跟他對戰的玩家賬号沒了,大家質疑香鍋故意封掉他們,甚至找上了聯盟要說法。解釋過後,香鍋依然被按上很多外号,比如“辣香”等等。彈幕很多人噴主播,香鍋不甘示弱...
2024-11-30
大連5遊客被困雪山
大連5遊客被困雪山
四川泸定6.8級地震發生後四川省地震局迅速派出現場工作隊緊急趕赴震區開展現場災害調查和烈度評定等工作由于震後道路損毀嚴重通往震中磨西鎮的道路幾乎中斷應急車隊不得不停在磨西河大橋附近等待通行時間一分一秒地過去現場交通狀況一直未能得到改善隊員們...
2024-11-30
複合地闆和實木地闆哪個比較實用
複合地闆和實木地闆哪個比較實用
感覺昨天的文章裡說的表面,今天跟大家說說實話吧。事實上,抛開價格談這兩者的實用性是有點耍流氓的,因為本來實木地闆就比複合地闆更好、更貴的。通俗點打個比喻,如果要買車,同樣是本田的車,問飛度好還是雅閣,毫無疑問是雅閣好,如果有錢的話。當然如果...
2024-11-30
宮爆老奶奶2适合女生玩嗎
宮爆老奶奶2适合女生玩嗎
《宮爆老奶奶II》是一款超火爆彈幕冒險手遊。玩家通過手指劃屏或重力感應的方式操控老奶奶撿取技能球,釋放技能與死神軍團戰鬥。獨特的俯視視角、Q萌角色造型以及七大奇迹副本等内容将帶你領略别樣的爽快遊戲體驗。毋庸置疑,戰鬥是《宮爆老奶奶II》的核...
2024-11-30
Copyright 2023-2024 - www.tftnews.com All Rights Reserved