void ini_timer0() //定时器初始化
{
TMOD = 0Xf0; //定时器0在方式0工作,为13位定时器,最大可数8191个脉冲。
TL0 = 0XF4;
TH0 = 0XFF;
TF0 = 0;
TR0 = 0;
}
unsigned char Wave_Recv()
{
unsigned char ucnum = 10;
TX = 0;
TL0 = 0XF4;
TH0 = 0XFF;
TR0 = 1;
while(ucnum--) //10*10us,一共发送了大约100us的超声波
{
while(!TF0);
TX^=1;
TF0 = 0;
}
TR0 = 0;
TL0 = 0;
TH0 = 0;
TR0 = 1;
while(RX && !TF0);
TR0 = 0;
if(TF0)
{
TF0 = 0;
ucdist = 999;
}
else
ucdist = ((TH0<<8) +TL0)*0.017;
return ucdist;
}