![]() |
/*********************超聲波測距程序*****************************/ 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就超出超聲波的量程 } } } 我的測距程序,求指導,哪錯了 |