1. 怎樣使用51單片機的定時器
51單片機定時器的使用
51單片機定時器/計時器的使用
步驟:
1、 打開中斷允許位:
對IE寄存器進行控制,IE寄存器各位的信息如下圖所示:
EA: 為0時關所有中斷;為1時開所有中斷
ET2:為0時關T2中斷;為1時開T2中斷,只有8032、8052、8752才有此中斷 ES: 為0時關串口中斷;為1時開串口中斷 ET1:為0時關T1中斷;為1時開T1中斷 EX1:為0時關1時開 ET0:為0時關T0中斷;為1時開T0中斷 EX0:為0時關1時開
2、 選擇定時器/計時器的工作方式:
定時器TMOD格式
CPU在每個機器周期內對T0/T1檢測一次,但只有在前一次檢測為
1和後一次檢測為0時才會使計數器加1。因此,計數器不是由外部時鍾負邊沿觸發,而是在兩次檢測到負跳變存在時才進行計數的。由於兩次檢測需要24個時鍾脈沖,故T0/T1線上輸入的0或1的持續時間不能少於一個機器周期。通常,T0或T1輸入線上的計數脈沖頻率總小於100kHz。
方式0:定時器/計時器按13位加1計數,這13位由TH中的高8位和TL中的低5位組成,其中TL中的高3位棄之不用(與MCS-48兼容)。
13位計數器按加1計數器計數,計滿為0時能自動向CPU發出溢出中斷請求,但要它再次計數,CPU必須在其中斷服務程序中為它重裝初值。
方式1:16位加1計數器,由TH和TL組成,在方式1的工作情況和方式0的相同,只是計數器值是方式0的8倍。
1
1/3
方式2:計數器被拆成一個8位寄存器TH和一個8位計數器TL,CPU對它們初始化時必須送相同的定時初值。當計數器啟動後,TL按8位加1計數,當它計滿回零時,一方面向CPU發送溢出中斷請求,另一方面從TH中重新獲得初值並啟動計數。
方式3:T0和T1工作方式不同,TH0和TL0按兩個獨立的8位計數器工作,T1隻能按不需要中斷的方式2工作。 在方式3下的TH0和TL0是有區別的:TL0可以設定為定時器/計時器或計數器模式工作,仍由TR0控制,並採用TF0作為溢出中斷標志;TH0隻能按定時器/計時器模式工作,它借用TR1和TF1來控制並存放溢出中斷標志。因此,T1就沒有控制位可以用了,故TL1在計滿回零時不會產生溢出中斷請求的。 顯然,T0和T1設定為方式3實際上就相當於設定了3個8位計數器同時工作,其中TH0和TL0為兩個由軟體重裝的8位計數器,TH1和TL1為自動重裝的8位計數器,但無溢出中斷請求產生。由於TL1工作於無中斷請求狀態,故用它來作為串口可變波特
3、 為計數器賦值
計數器初值計算
TC=M−C
TC:計數器初值,M:計數器模值(2k),C:把計數器計滿的計數值 定時器初值計算
T=(M−TC)T計數
或
TC=M−T/𝑇計數
M:模值,T計數:單片機時鍾周期TCLK(ΦCLK的倒數)的12倍;TC為定時器的定時初值,T為欲定時的時間。
TC=M−T×𝛷𝐶𝐿𝐾/12
M:模值,ΦCLK:單片機時鍾周期ΦCLK;TC為定時器的定時初值,T為欲定時的時間。 例如:單片機主脈沖頻率ΦCLK為12MHz,最大定時時間為: 方式0時 TMAX = 213×1us = 8.192ms 方式1時 TMAX = 216×1us = 65.536ms 方式2和方式3 TMAX = 28×1us = 0.256ms
4TR0:為0時,停T0計數;為1時,啟T0計數
2
2/3
TF0:為0時,無T0中斷(硬體復位);為1時,有T0溢出中斷 TR1:為0時,停T1計數;為1時,啟T1計數 TF1:為0時,無T1中斷(硬體復位);為1時,有T1溢出中斷 IE1:為0時,硬體復位;為1時 IT1:為0時,INT1電平觸發(軟體復位);為1時,INT1負邊沿觸發 IE0:為0時,硬體復位;為1時 IT0:為0時,INT0電平觸發(軟體復位);INT0負邊沿觸發
5
在C51的C語言中使用interrupt x來指定中斷入口地址,x為中斷號,例T0中斷: void Time0_Int() interrupt 1 //定時器T0的中斷入口程序
2. 51單片機定時器精確定時方法
精確定時一般用匯編來寫,如果你選用晶體
F=12MHZ,則定時器每加一就是
1uS,這樣就可以設定定時器的初始值了,
如果你需要50mS的定時,定時器初始值為:65536-50000=15536
即
3CH,B0H
TH0=3CH
TL0=B0H
(設定時器0用來定時,工作在16位
MOV
TMOD,#11H)如果你需要更長時間定時則需要軟體計時了,比如一秒,需要
(50ms
*20=1000ms)
20次了,這需要在定時器0的中斷程序中計算了!
3. 51單片機中的定時器中斷是怎麼用的
代碼如下:
//實現led燈一秒亮滅閃爍
void main()
{
TMOD=0x01;//設置定時器0為工作方式1(M1 M0為01)
TH0=(65536-45872)/256;//裝初值11.0582晶振定時50ms數為45872
TL0=(65536-45872)%256;
EA=1;//開總中斷
ET0=1;//開定時器0中斷
TR0=1;//啟動定時器0
while(1);//程序停止在這里等待中斷發生
}
void T0_time() interrupt 1
{
TMOD=0x01;//重裝初值
TH0=(65536-45872)/256;
num++;//num每加一次判斷一次是否到20次
if(num==20)//如果到了20次,說明1秒時間到
{
num=0;//num清0重新計數
led=~led1;
}
}
(3)51單片機定時器教程擴展閱讀
定時器有兩種工作模式,分別為計數模式和定時模式。對Px,y的輸入脈沖進行計數為計數模式。定時模式,則是對MCU的主時鍾經過12分頻後計數。因為主時鍾是相對穩定的,所以可以通過計數值推算出計數所經過的時間。
51單片機計數器的脈沖輸入腳。主要的脈沖輸入腳有Px,y, 也指對應T0的P3.4和對應T1的P3.5,主要用來檢測片外來的脈沖。而引腳18和19則對應著晶振的輸入脈沖,脈沖的頻率和周期為
F = f/12 = 11.0592M/12 = 0.9216MHZ T = 1/F = 1.085us
51計數器的計數值存放於特殊功能寄存器中。T0(TL0-0x8A, TH0-0x8C),T1(TL1-0x8B, TH1-0x8D)
定時器常用作定時時鍾,以實現定時檢測,定時響應、定時控制,並且可以產生ms寬的脈沖信號,驅動步進電機。定時和計數的最終功能都是通過計數實現,若計數的事件源是周期固定的脈沖則可實現定時功能,否則只能實現計數功能。因此可以將定時和計數功能全由一個部件實現。
4. mcs-51單片機定時器應用的初始化步驟有哪些
TMOD、TH0或TH1、TL0或TL1、EA=1;TR0或TR1=1;
TMOD選擇方式。TH0=(65536-x)%256;x為定時時間,x<65536
EA=1;開中斷;TR1=1;啟動定時器。
例如:
TMOD=0X10;
TH1=0X4b;
TL1=0Xfe
TR=1;
「TMOD=0X10;」設置定時器1模式為模式一(16位定時器/計數器)
「TH1=0X4b;TL1=0Xfe;」設置定時器初值
"TR1=1"啟動定時器1
t=(2^16-初值)*機器周期=(2^16-初值)*時鍾周期*12
此例中:初值=0x4bfe=19454
t=(65536-19454)*1/11095200*12=0.04983993078087821760....約為0.05s即50ms
公式解釋:
每個機器周期產生一個計數脈沖,計時器寄存器最大允許2^16,大於2^16就溢出觸發中斷。初值為T,則還有65536-T次計數,每次計數用時一個機器周期,所以總用時:t=(2^16-初值)*機器周期=(2^16-初值)*時鍾周期*12
初值設置:把所需時間T代入上式解出初值0xAABB,把0xAA作為TH,0xBB作為TL
也可以用上式推導出初值計算公式
5. 51單片機定時器的使用
51單片機定時器的GATE=1時,用外部INT0啟動定時器,當INT0=0時,
定時器T1會停止計數,這個時候讀取T1的值是可以計算出高電平的寬度的。
6. 51單片機定時器初始化程序的基本步驟
1.設置工作方式即TMOD的值
2.計算初值寫TH TL的值
3.開啟定時器中斷和總中斷
4.啟動定時器。
7. 51系列單片機定時/計數器初始化的步驟
TMOD:模式控制寄存器,定時器的運行模式,定時計數模式等;
TCON:運行控制寄存器,定時器的中斷允許和外部觸發中斷允許,運行停止控制,溢出標志等
THx/TLx:計數值
IE:中斷控制,如果要開啟中斷允許,則需要配置這個寄存器;
IP:中斷優先順序控制,如果開了幾個中斷源,則需要配置中斷控制的先後;
總體就是:
先關運行和中斷,然後配置模式,配置計數值,定時器運行打開,定時器是否中斷允許,是否開啟總中斷;
如果不開中斷,就直接配置模式和計數值,然後運行即可,主程序里查詢溢出位,判斷是否到計數值(不準確)。
其他定時器T2等,有其他的寄存器,但配置方法同。
8. 51單片機的3個定時器怎樣使用
51單片機只有T0,T1。52才有T2的。
定時器設置方法:
做定時用一般採用16位模式,也就是TMOD=0x11(10或01單獨一個定時器的話),初值的計算是這樣的:
假設時間是X毫秒,晶振為YMhz,那麼:
THn=(65536-1000*X*Y/12)/256
TLn=(65536-1000*X*Y/12)%256
之後就是TRn=1(開啟定時器)
ETn=1(開啟定時器中斷)
EA=1
9. 51系列單片機定時/計數器初始化的四個步驟
1、設置寄存器TMOD
2、計算初始值
3、開放中斷
4、啟動定時器
10. C51單片機定時器1以方式1定時1秒如何設置
1、先打開我們熟悉的單片機c51編程軟體——keil,先把主方法寫好。