本帖最后由 victor3l 于 2012-8-17 14:41 编辑
我用测频率法测量信号的频率。定时器0用于定时,定时器1用于计数。为什么在定时器1中的数据有时候读到有时候读不到?我定时1s中,将计数器中计的数就当成信号的频率。程序如下:
void main()
{
TMOD = 0x51;//把t0设置成定时器16位的,把t1设置成计数器16位的
TH0 = (65535 - 50000) / 256;
TL0 = (65535 - 50000) % 256;
ET0 = 1;
TR0 = 1;
TH1 = 0;
TL1 = 0;
ET1 = 0;//t1用于计数,不开中断
TR1 = 1; //t1 已经打开了,已经开始计数了
EA = 1;
while(1)
{
if(timerCount > 20)
{
EA = 0;//
timerCount = 0;
temp = (TH1<<8) +TL1; //读到数据
TH1 = 0;
TL1 = 0;//把计数值清零
EA = 1;//
}
if(temp > 10) //这里判断有没有读到数据。
{
temp = 0;
speak = ~speak;
}
}
}
void ser()interrupt 1 //说明中断进来了 2012年8月17日12:06:55
{
TH0 = (65535 - 50000) / 256;
TL0 = (65535 - 50000) % 256;
timerCount++;
} |