测频率需要用跳帽把P34引脚与信号线连一起,P34引脚接得是定时器T0,所以我们需要把T0设为计数模式(把C/T位置一),T1设置为定时模式。我们需要配置TMOD寄存器。T0模式一和模式2都可以。我们定时一个1ms的定时器中断,进200次中断后也就是200ms,测频率就是测1秒P34引脚的买脉冲个数,所以我们可以200ms时候把计的数1取出来然后乘5,就是我们测的频率。
定时器初始化代码:
void timer_init()//初始化先测频率
{
TMOD=0x05;//T1定时器
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
TF1=0;
ET1=1;
EA=1;
TR1=1;
TH0=0;//T0计数,不开中断
TL0=0;
ET0=0;
TF0=0;
}
测量频率在定时中断里测,我们可以让他一直测量,用的时候取数,也可以让他在频率界面一直测,根据自己和题目需要改变。只需要加上一个 if() 判断条件即可。
//======测量频率===============================================
void timer()interrupt 3
{
//======测量频率===============================================
TMOD&=0xf0;
TMOD|=0x05;
TF0=0;
ET0=0;
TR0=1;
pinlv_count++;
if(pinlv_count==200)
{
pinlv_count=0;
TR0=0;
frequence=(TH0*256+TL0)*5;
TR0=1;
TH0=0;
TL0=0;
}
}