最近在做09年的电赛题目,声音导引系统,传感器是三个麦克风,配备了滤波电路。
我在程序里写的是当有一个麦克风接收到声音时就进入中断处理函数,在函数里开启定时器。每有一个麦克风接收到信号时就读取当前定时器的值。
直到最后一个麦克风接收到信号,读取定时器的值关闭定时器,然后清零定时器。
最后在显示屏上显示每两个麦克风的声音到达时间差。
有个一直没弄懂的问题,就是声音从一个定点发出,但到各麦克风的时间差一直都是变化的。
刚开始以为是没关定时器,可是看了很多遍程序都觉得不是没关的原因。
那位大侠能指导我下,问题出在哪里了?
这是程序,版主别删啊,
void oter_adjust(void) interrupt 0
{
TR0=1; //开启定时器0
time3_flag=1;
while(1) //轮询各麦克风
{
if(time3_flag==1&&timer3==1) //麦克风3接收到信号
{
timer_3=(TH0<<8)+TL0; //提取时间差
time3_flag=0;
}
if(timer2==1) //麦克风2最后接收到信号
{
timer_2=(TH0<<8)+TL0; //提取时间差
TR0=0; //关闭定时器0
TH0=0x00;
TL0=0x00;
break; //跳出循环
}
}
ti_x=timer_2-timer_3; //麦克风2与麦克风3为速度控制
}
timer2和timer3是连接麦克风的io口
程序给的是两个麦克风的,第三个暂时还没加
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>