单片机AD(TLC549)转换for(i=0;i<8;i )if(AD_DAT)value |= (0x80)>>i 怎么理解?!

 我来答
11kxmx
2016-07-27 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1.2万
采纳率:70%
帮助的人:2523万
展开全部
value 丨=0x80》i
即 value=value丨(0x80》i)
"或"操作可以将相应位置1(其余位不变)
AD模块串行输出,每个脉冲输出一位二进制数,高位在前
Value的各位原来均为0
例如第一次输出时i=0
如果 ADDAT是1,0x80最高位是1(二进制为1000 0000),右移0位仍然是0x80,Value与它"或"运算后最高位变为1(其它位不变),如果ADDAT是0就不用管它,Value的最高位仍然保特为0
第二次输出时 i=1
如果ADDAT是1,0x80右移1位变成二进制0100 0000,Value与它"或"运算后,次高位被置1,同样如果ADDAT是0还不用管它,value的次高位也保持为0
依次第3个脉冲至第8个脉冲,ADDAT端口上输出的8位二进制数就保存在Value这个变量中了
如果AD输出低位在前的话,可以这样写
value丨=0x01巜i
普通IO引脚模拟串口进行数据的接收和发送都是这个原理
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式