12Mhz晶振,設定時器T0,工作方式0 ,5ms定時。
1.確定定時常數(shù):
一個機器周期為1us,設初值為X。
則:(213 - X)*10⁻⁶ = 5*103 ,213 - X = 5*103 ,X=8192-5000=3192,即0C78H 。
2.查 MCUtool ,定時初值為 0C78H,和計算的結果一致。
二進制數(shù)為:0000 00110111 1000
51匯編:
InitTimer0:
MOV TMOD,#00H
MOV TH0,#0CH
MOV TL0,#78H
SETB EA
SETB ET0
SETB TR0
RET
51C:
void InitTimer0(void)
{
TMOD = 0x00;
TH0 = 0x0C;
TL0 = 0x78;
EA = 1;
ET0 = 1;
TR0 = 1;
}
其實,上面的初值只是按高5 位不計的13位計數(shù)器計算得出的。
而定時器/計數(shù)器工作在方式0 時 ,雖也是13位計數(shù)器,但它是由TLx的低5位和THx的高8位構成。這樣,0000 00110111 1000 黑色的3位
數(shù)無效。
當TLx的低5位溢出時,向THx進位。根據(jù)13位計數(shù)器的特性,上面的初值應該為 0000001111000 ,即 0078H
|