首页 > 其他 > 详细

蓝桥省赛后继续水——超声波驱动程序

时间:2020-10-31 16:39:01      阅读:22      评论:0      收藏:0      [点我收藏+]

用定时器定时10us左右的时间,发送一次超声波10us左右,共发送10次。100us长度。

在同一个定时器中完成发送与接收,先发送后接收。  检测的距离送到数码管显示,这里省略。

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;
}

蓝桥省赛后继续水——超声波驱动程序

原文:https://www.cnblogs.com/page71/p/13905731.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!