IIC_SDA=(txd&0x80)>>7为什么要右移七位?

jiaobiedeng1738 2017-08-20 09:37:57
以前学51的时候,写的I2C是没有右移七位的,然后现在学STM32的时候看到I2C发送函数里面有右移七位,请问这是怎么回事?
...全文
2202 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ckc 2017-08-20
  • 打赏
  • 举报
回复
把最高位转移到最低位吧 51只能一位一位移动,所以这样做很不合适 也许stm32可以一次性移动7位
tianxj001 2017-08-20
  • 打赏
  • 举报
回复 6
IIC_SDA=(txd&0x80)>>7 没看见其他源代码,这里,txd应该是一个寄存器,&0X08 也就是和0B10000000 逻辑与,也就是结果取最高位,然后右移7位,最高位变成最低位,IIC_SDA是一根串口数据, 这个代码的意思就是把txd 最高位 发送到IIC_SDA。 再看看这个代码,如果是这个目的,貌似IIC_SDA=txd>>7; 就可以了,和0X80做逻辑与好像是多余的哈。

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧