我的输入信号的频率上限10Khz,单片机的晶振22M的,这个输入信号就相当是低频信号了,我要测其频率,也只能用测其周期转换成频率的方法。我把信号接到外部中断口,打开定时器0,配置定时功能,并且有外部中断和TR0共同决定其开始计数。外部中断服务子程序如下
void ser()interrupt 0
{
TR0 = 1;//打开定时器
temp1 = TH0;
temp2 = TL0;//读出定时器中的数据,就知道时间也就是周期了
TH0 = 0;
TL0 = 0;//把重装定时器中的初值
}
我之所以要在外部中断中才开定时器,是因为我怕在频率脉冲没来的时候,定时器已经工作了。这样就导致了每次读到的定时器中的数据是0。
如何做到,在外部中断开定时器,而且还能在中断中读到数据了? |