51微控制器 定時器及其應用

2021-08-21 12:10:43 字數 1621 閱讀 5731

89c51微控制器內部有兩個16位的定時/計數器,即定時器t0和定時器t1,微控制器的定時功能其實就是通過計數來實現的,當微控制器每乙個機器週期產生乙個脈衝時,計數器就加一。定時器的應用涉及到中斷方面的知識,可以先了解中斷的概念再來看定時器

如,乙個16位的定時器,它所能計數的範圍是0~65535,如果微控制器採用的是12m的晶振,那麼定時器單次最長的時間為65535*((1/12)*12),因為乙個乙個機器週期等於12個振盪週期,那麼定時器加一所用的時間是1/12m*12是1us,也就是乙個12mhz晶振的51微控制器單次最長時間約為65ms.

定時器的控制

89c51的定時器由兩個暫存器控制,分別是工作模式暫存器tmod和控制暫存器tcon

工作模式暫存器tmod是用於控制定時器0/1的工作模式,通過對tmod進行賦值,則可以改變定時器的工作模式

具體各位的定義如下

當我們使用定時器功能時,就只用設定d0、d1、d4、d5的的值就可以了,其餘位置0即可

我們在使用定時器時基本使用的是模式1和模式2,模式0與模式3基本不用,我就不進行描述了。

模式1當tmod的d5位置0,d4位置1時,即為定時器t1的模式一,該模式對應的是乙個16位的定時器,暫存器th1和tl1即為t1初值的高8位和低8位,定時時間為:(65536-t1的初值)*振盪週期*12

模式二當tmod的d5位置1,d4位置0時,即為定時器t1的模式二,該模式對應的是乙個可以自動裝載的8位定時器,當定時器計數滿了(計數溢位時),會自動把th1中的內容重新裝載到tl1中,那麼模式二計數的最長時間即為(257-t1的初值)*振盪週期*12

定時器的控制暫存器tcon

tcon的各位定義如下

tf1:t1的溢位標誌位,當t1溢位時,由硬體自動使tf1位置1,並向cpu申請中斷。當cpu響應中斷進入中斷服務子程式後,tf1又被硬體自動清0,也可以用軟體清0.

tf0:t0溢位標誌位。其功能和操作情況同tf1

tr1:t1的執行控制位,當該位置1時,即啟動定時器1當該位置0時,即關閉

tr0:t0的執行控制位,其功能及操作情況同tr1。

接下來我將用定時器來結合數碼管製作乙個0-9計時器

具體操作如下(定時器的初始化在程式最下面)

include //引用了51微控制器的官方庫檔案 

void t0ini() ;                           //定時器0初始化函式宣告                       

unsigned int temp = 0,i = 0;    //中間變數

unsigned char leddata=;

void main()

if(temp == 20)               //計數到20次也就是一秒

i++;                      //數碼管顯示值加一

if(i == 10)

i = 0;           

}}  

void t0ini()    //定時器t0初始化

51微控制器 定時器

定時 計數器的結構和工作原理 定時 計數器的實質是加1計數器 16位 由高8位和低8位兩個暫存器組成。80c51 微控制器定時 計數器的工作是由兩個特殊功能暫存器控制的。tmod是定時 計數器的工 作方式暫存器,確定工作方式和功能,低四位用於t0,高四位用於t1。t con是控制寄 存器,控制t0和...

51微控制器 定時器

標準的51微控制器內部有t0和t1兩個定時器。定時器的計數值儲存在暫存器中。th0 tl0用於t0,th1 tl1用於t1.定時器儲存暫存器 名稱描述 sfr位址 復位值th0 t0高位元組 0x8c 0x00 tl0t0低位元組 0x8a 0x00 th1t1高位元組 0x8d 0x00 tl1t...

51微控制器定時器 彙編

定時器控制流水燈的速度,但流水燈到邊緣的時候,自動調整方向,先反方向繼續流動 使用的是 定時器0 org 0000h ljmp mian org 000bh ljmp t0 break org 0200h init mov tmod,01h 定時器0為方式1 定時器0計時100us mov tl0,...