|
以下是秒表程序中的部分內(nèi)容:我的理解:其中,tmp與ms相乘,變成了int型數(shù)據(jù),2個(gè)字節(jié)16位;tmp>>8之后,T0RH其實(shí)取了tmp的低八位,TORL也是取了tmp的第八位,這不是有問(wèn)題嗎,兩個(gè)取得值是一樣的,無(wú)法達(dá)到定時(shí)器的重載值。
希望大神們幫忙指點(diǎn)下我的理解錯(cuò)在哪里,謝謝!
單片機(jī)源程序如下:
void ConfigTimer0(unsigned int ms)
{
unsigned long tmp; //臨時(shí)變量
tmp = 11059200 / 12; //定時(shí)器計(jì)數(shù)頻率
tmp = (tmp * ms) / 1000; //計(jì)算所需的計(jì)數(shù)值
tmp = 65536 - tmp; //計(jì)算定時(shí)器重載值
tmp = tmp + 18; //補(bǔ)償中斷響應(yīng)延時(shí)造成的誤差
T0RH = (unsigned char)(tmp>>8); //定時(shí)器重載值拆分為高低字節(jié)
T0RL = (unsigned char)tmp;
TMOD &= 0xF0; //清零 T0 的控制位
TMOD |= 0x01; //配置 T0 為模式 1
TH0 = T0RH; //加載 T0 重載值
TL0 = T0RL;
ET0 = 1; //使能 T0 中斷
TR0 = 1; //啟動(dòng) T0
}
|
|