關(guan) 鍵字:單片機定時器
8052單片機T2定時器用法詳解,定時器案例:
1、要精確定時,必須使用定時器的自動裝載方式。本實驗使用T2定時器,讓它工作在16bit自動
裝載方式,這時,有另一個(ge) 位置專(zhuan) 門裝著16位預裝載值,當T2溢出時,預裝載值立即被裝入,
這就保證了精確定時。
2、T2定時器是一個(ge) 16位定時器,最長的溢出時間也就幾十毫秒,要定時1秒,就需要用一個(ge) 變量
來保存溢出的次數,積累到了一定的次數後,才執行一次操作。這樣就可以累加到1秒或者更
長的時間才做一次操作。
3、當T2定時器發生溢出中斷時,需要用戶自己清除溢出標記,而51的其他定時器是自動清除的。
4、T2定時器預裝載值的計算:
設晶振為(wei) 12MHz,每秒鍾可以執行1000000(12000000/12)個(ge) 機器周期。而T2每次溢出時最多
經過了65536個(ge) 機器周期。我們(men) 應該盡量讓T2定時器的溢出中斷的次數最少,這樣對主程序的幹擾
也就最小。
選擇每秒中斷14次,每次溢出1000000/14=71428.57個(ge) 機器周期,不為(wei) 整數且超出65536個(ge) 機器周期,有效。
選擇每秒中斷16次,每次溢出1000000/16=62500個(ge) 機器周期,小於(yu) 65536個(ge) 機器周期,有效。
選擇每秒中斷20次,每次溢出1000000/20=50000個(ge) 機器周期,小於(yu) 65536個(ge) 機器周期,有效。
通過上麵的計算,我們(men) 可以發現,我們(men) 可以選擇的方式有很多,但是最佳的是每秒中斷16次,每次
溢出62500個(ge) 機器周期,那麽(me) 賦給T2定時器的初值應為(wei) 65536-62500=3036,轉換成十六進製值為(wei)
0x0BDC。
********************************************************************************************************/
/*********定時2中斷服務子函數**************/
void Timer2_Server(void) interrupt 5
{
TF2=0;
deda++; //計數
if(deda<8){flag1=1;}else{flag1=0;}
if(deda==16){sec++;deda=0;}
if(sec==60){min++;sec=0;}
if(min==60){hor++;min=0;}
if(hor==24){hor=0;}
}