我在做一个超声波测距的程序,有一行程序不明白,请高手解答

我在做一个超声波测距的程序,有一行程序不明白if(1==testOK)/若testOK等于1,表示接收超声波成功,记下计数器的数值,用于计算所用时间{time=TH0;t... 我在做一个超声波测距的程序,有一行程序不明白
if(1==test OK) /若test OK等于1,表示接收超声波成功,记下计数器的 数值,用于计算所用时间
{
time=TH0;
time=(time<<8)|TL0; /高低位赋值给time
time*=172;
time/=10000;
if (time<=20)
{LED1=0;} /显示如果小于20cm,第一个发光二极管亮报警
else if (time>250)
{LED2=0;} /显示如果大于250cm,第二个发光二极管亮报警
其中time=(time<<8)|TL0; /高低位赋值给time
这一条不明白为什么中间有一条竖杠
展开
 我来答
OyutianO
2011-05-18 · TA获得超过612个赞
知道小有建树答主
回答量:150
采纳率:0%
帮助的人:103万
展开全部
这个是这样的 定时器记得数有十六位 前面八位叫高八位 也就是TH0 后面八位是第八位 也就是TL0 你取数的时候肯定要把十六位的都取出来 time=TH0; 这一行是取高八位赋给time 接下来time=(time<<8)|TL0;这一行 是把先取出来得八位左移 然后或上低八位构成了十六位 这样的数据才是准确的 举个例子 如果计数器记得数是 01100010 11010101
time=01100010后 进行左移 此时time=01100010 00000000(左移后补零)然后进行或运算
01100010 11010101 或上
01100010 00000000就等到了你想要的结果了 对吧 如果满意请采纳 希望能帮到你 谢谢
瑞地测控
2024-08-12 广告
苏州瑞地测控技术有限公司成立于2015年17月,致力于提供基于同步网络的测试和控制系统;为工程师提供电气和物理量测量、控制、仿真和记录的工具;使其能够方便的定义测试设备,获取精准可信赖的数字化资源,应对更高协同性、更大空间、更大带宽和更多领... 点击进入详情页
本回答由瑞地测控提供
duyin2011
2011-05-17 · TA获得超过2398个赞
知道大有可为答主
回答量:1723
采纳率:100%
帮助的人:661万
展开全部
time 应该是int型的吧
|是按位或,time<<8 将TH0送到time 高八位,再与TL0就是16位了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式