導航:首頁 > 操作系統 > 51單片機定時器教程

51單片機定時器教程

發布時間:2023-01-03 10:54:16

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單獨一個定時器的話),初值的計算是這樣的:

  1. 假設時間是X毫秒,晶振為YMhz,那麼:
    THn=(65536-1000*X*Y/12)/256

    TLn=(65536-1000*X*Y/12)%256

  2. 之後就是TRn=1(開啟定時器)

    ETn=1(開啟定時器中斷)

    EA=1

9. 51系列單片機定時/計數器初始化的四個步驟

1、設置寄存器TMOD
2、計算初始值
3、開放中斷
4、啟動定時器

10. C51單片機定時器1以方式1定時1秒如何設置

1、先打開我們熟悉的單片機c51編程軟體——keil,先把主方法寫好。

閱讀全文

與51單片機定時器教程相關的資料

熱點內容
基於單片機的澆花系統設計ppt 瀏覽:683
卷積碼編解碼及糾錯性能驗證實驗 瀏覽:352
請在刪除驅動器之前暫停加密什麼意思 瀏覽:785
光催化pdf 瀏覽:98
java字元串包含某字元 瀏覽:526
ssm身份認證源碼 瀏覽:466
預排序遍歷樹演算法 瀏覽:671
加密裝置如何打開ping功能 瀏覽:478
python下載372 瀏覽:901
u盤子文件夾隱藏 瀏覽:296
本地誤刪svn文件夾 瀏覽:685
海康威視python通道名 瀏覽:241
如何用app覆蓋全部曲庫 瀏覽:602
變異布林源碼 瀏覽:686
表格加密設置列印區域 瀏覽:437
卡耐基pdf下載 瀏覽:924
現在最流行的單片機 瀏覽:89
機頂盒刷機源碼 瀏覽:986
編碼pdf下載 瀏覽:947
隔壁同學app怎麼 瀏覽:301