1.細(xì)節(jié)
上一講里,我們知道TH0和TL0合成的“16位的變量”的初值最小要為0,不能是負(fù)數(shù),
所以我們要滿足:65536-( x/(12/11059200) )>=0。
解得x<= 0.071111秒=71.111毫秒。
也就是用定時(shí)器的工作模式1最長(zhǎng)的定時(shí)時(shí)間為71毫秒左右而已。
2.定時(shí)器開關(guān)
首先定時(shí)器也是有開關(guān)的,這個(gè)相當(dāng)于我們的導(dǎo)管是否打開讓水流進(jìn)“試管”里。
因?yàn)槲覀冇玫氖嵌〞r(shí)器0,TCON^4這個(gè)位就是控制定時(shí)器0是否打開或關(guān)閉,所以“TR0=1;”就是打開了定時(shí)器開始計(jì)時(shí),“TR0=0;”是關(guān)閉了定時(shí)器計(jì)時(shí)功能。
只要打開了定時(shí)器,TH0和TL0合成的“16位的變量”就會(huì)每過(guò)(12/11059200)秒就自加1,直到定時(shí)器溢出。
3.溢出標(biāo)志
我們的定時(shí)器0一旦溢出,TCON^5就會(huì)被置1(TF0==1),如果我們不使用中斷函數(shù)也是可以在主函數(shù)里等待判斷“if(TF0==1)”。TF0跟外部中斷0的IE0一樣,被置1了需要軟件清零。
4.工作模式1的代碼
這里我們用定時(shí)器0來(lái)實(shí)現(xiàn)間隔50ms的流水燈實(shí)驗(yàn)
#include <reg52.h> #include <function.h>//詳見第六章第8講 void main() { u8 i=0; LED_Init(); //初始化LED硬件模塊 TMOD = 0x01; //設(shè)置定時(shí)器0為工作模式1 TH0 = 0x4C; //設(shè)置定時(shí)時(shí)間為50ms TL0 = 0x00; TR0 = 1; //啟動(dòng)定時(shí)器0 while(1) { if (TF0 == 1) //判斷定時(shí)器0是否溢出,每隔50ms就可以進(jìn)入一次這個(gè)if語(yǔ)句 { TF0 = 0; //定時(shí)器0溢出后,清0溢出標(biāo)志 TH0 = 0x4C; //重新賦初值,保證下次溢出間隔時(shí)間還是50ms TL0 = 0x00; P0=~(0x01<<i);//每盞燈的點(diǎn)亮?xí)r間都保持著50ms i++; } if(i>=8)i=0; } }
5.定時(shí)器1的使用
如果我們用定時(shí)器1實(shí)現(xiàn)上處代碼同樣的功能,那么TMOD只要初始化為“TMOD=0x10;”
還有把TH0,TL0,TR0,TF0這些全部改為TH1,TL1,TR1,TF1即可,所以說(shuō)這兩個(gè)定時(shí)器的工作原理都是一樣的。
#include <reg52.h> #include <function.h>//詳見第六章第8講 void main() { u8 i=0; LED_Init(); //初始化LED硬件模塊 TMOD = 0x10; //設(shè)置定時(shí)器1為工作模式1 TH1 = 0x4C; //設(shè)置定時(shí)時(shí)間為50ms TL1 = 0x00; TR1 = 1; //啟動(dòng)定時(shí)器1 while(1) { if (TF1 == 1) //判斷定時(shí)器1是否溢出,每隔50ms就可以進(jìn)入一次這個(gè)if語(yǔ)句 { TF1 = 0; //定時(shí)器1溢出后,清0溢出標(biāo)志 TH1 = 0x4C; //重新賦初值,保證下次溢出間隔時(shí)間還是50ms TL1 = 0x00; P0=~(0x01<<i);//每盞燈的點(diǎn)亮?xí)r間都保持著50ms i++; } if(i>=8)i=0; } }
C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語(yǔ)言學(xué)練課程
解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語(yǔ)法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程