/*********************超声波测距程序*****************************/ void send_wave() { c_send = 1; //10us的高电平触发 delay(); c_send = 0; TH0 = 0; //给定时器0清零 TL0 = 0; TR0 = 0; //关定时器0定时 while(!c_recive); //当c_recive为零时等待 TR0=1; while(c_recive) //当c_recive为1计数并等待 { flag_time0 = TH0 * 256 + TL0; if((flag_time0 > 40000)) //当超声波超过测量范围时,显示3个888 { TR0 = 0; flag_csb_juli = 2; distance = 888; break ; } else { flag_csb_juli = 1; } } if(flag_csb_juli == 1) { TR0=0; //关定时器0定时 distance = flag_time0; distance *= 0.017; // 0.017 = 340M / 2 = 170M = 0.017M 算出来是米 if(distance > 600) //距离 = 速度 * 时间 { distance = 888; //如果大于3.8m就超出超声波的量程 } } } 我的测距程序,求指导,哪错了 |