|
用外部中斷取樣計(jì)算頻率要好些。
//T0中斷服務(wù)函數(shù)
void Timer0_Isr() interrupt 1
{
count++;
}
//INT0中斷服務(wù)函數(shù)
void INT0_Isr() interrupt 0
{
TR0=0; //關(guān)定時(shí)器0
Cnt_us=(count*65536)+(TH0<<8|TL0);//讀取定時(shí)器0中計(jì)數(shù)值
TL0 = 0x00; //定時(shí)器0計(jì)數(shù)值清0
TH0 = 0x00; //定時(shí)器0計(jì)數(shù)值清0
TR0=1; //開(kāi)定時(shí)器0
count=0; //中斷計(jì)數(shù)值清0
}
//初始化定時(shí)器T0
void Timer0_Init(void) //@12.000MHz
{
AUXR &= 0x7F; //定時(shí)器時(shí)鐘12T模式
TMOD &= 0xF0; //設(shè)置定時(shí)器模式1
TMOD |= 0x01; //設(shè)置定時(shí)器模式1
TL0 = 0x00; //設(shè)置定時(shí)初始值
TH0 = 0x00; //設(shè)置定時(shí)初始值
TF0 = 0; //清除TF0標(biāo)志
TR0 = 0; //關(guān)定時(shí)器0
}
|
|