|
抄了一個(gè)頻率計(jì)的單片機(jī)代碼,設(shè)想檢測(cè)到設(shè)定的頻率,點(diǎn)亮LED。但現(xiàn)在是頻率計(jì)有一定的誤差,比如設(shè)定的頻率是188Hz,但檢測(cè)到的有可以是187Hz 188Hz或189Hz,正負(fù)各差1Hz,無法正常點(diǎn)亮LED。特請(qǐng)教各位大佬指教,如何通過換算,消除這個(gè)誤差,正常點(diǎn)亮LED。
******************************************************************************/
void TM1_Isr() interrupt 3
{
static unsigned int ms_flag = 0; //1s計(jì)數(shù)標(biāo)志
if(ms_flag++ == 1000)
{
freq = (TH0<<8|TL0); //獲取當(dāng)前計(jì)數(shù)器計(jì)數(shù)值
if(freq ==188) //檢測(cè)到的頻率有可能是187 188也有可能是189
{
led=0;
ms_flag=1000;
}
else
{
led=1;
}
ms_flag = 0; //1s計(jì)數(shù)標(biāo)志復(fù)位
send_flag = 1; //串口發(fā)送標(biāo)志位置位
TH0 = 0x00; //復(fù)位計(jì)數(shù)器
TL0 = 0x00; //復(fù)位計(jì)數(shù)器
}
TF1 = 0; //清中斷標(biāo)志
}
/******************************************************************************
|
|