TMOD : 控制定時(shí)器的工作方式。8個(gè)bit,高四位 bit 控制 T1,、低四位 bit 控制 T0。因?yàn)槎〞r(shí)器有4種工作方式;TMOD = 0x00(工作方式0),TMOD = 0x01(工作方式0),TMOD = 0x02(工作方式2),TMOD = 0x03(工作方式3)。以上是控制低4位的,所以是對(duì)應(yīng)著T0。
TR0:T0定時(shí)器 使能開關(guān),TR0 = 1,開始工作; =0停止工作。
ET0:T0定時(shí)器中斷開關(guān),定時(shí)時(shí)間一到,就會(huì)跑去中斷程序。ET0=1,中斷使能,=0失能。
EA : 中斷總開關(guān),你可以想象成電路的總電閘,EA=1,中斷使能; =0,中斷失能。
TH0,TL0 : T0定時(shí)器計(jì)數(shù)寄存器,組成16位的計(jì)數(shù),0x0000--0xFFFF(0--65535),只要TH0TL0=0xFFFF(65535),程序就會(huì)跑去中斷程序,在中斷程序中,我們要重新給TH0,TL0重新賦值的。
假如說(shuō),我們定時(shí)50毫秒,TH0,TL0對(duì)應(yīng)著什么值呢? 上面我們說(shuō)了,TH0,TL0,組成的16位計(jì)數(shù)器計(jì)數(shù)范圍是 0---65535 。50ms = 50 000us,我們只要讓 TH0 TL0 從(65535 - 50000)開始計(jì)數(shù),TH0,TL0就會(huì)不停的+1,直到TH0,TL0=65535,就是計(jì)數(shù)了50000次,時(shí)間就是過(guò)了50ms。我們只要在中斷程序里面,重新賦值給TH0,TL0=(65535 - 50000),定時(shí)器就會(huì)不停得每50ms中斷一次了。
所以,TH0=(65535-50000)/256; TL0 = (65535-50000)%256 ;
好吧,T0程序例子,定時(shí)20ms的程序 :
TO 20ms 例子程序
說(shuō)完了TO,T1該怎么辦? 我開始的時(shí)候說(shuō)了,TO,T1是一對(duì)雙胞胎。大家把上面T0例子程序:
(TMOD = 0x01, ET0 ,TR0,TH0,TL0 ,interrput 1) 改為
(TMOD = 0x10, ET1 ,TR1,TH1,TL1 ,interrput 3) 這樣就變成了T1,定時(shí)器的程序。
-
51單片機(jī)
+關(guān)注
關(guān)注
274文章
5702瀏覽量
123617
原文標(biāo)題:51單片機(jī)定時(shí)器工作原理及用法
文章出處:【微信號(hào):changxuemcu,微信公眾號(hào):暢學(xué)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論