51单片机I2C总线读一个字节k=(k<<1)|SDA;是什么意思?

 我来答
张哥小技术
2016-12-01 · TA获得超过324个赞
知道小有建树答主
回答量:178
采纳率:87%
帮助的人:91.7万
展开全部
正如题目所讲:意思就是读一个字节。
对于一个字节,以8位字节来说,0x00书写成二进制就是00000000。
首先k作为一个变量,初始值假如是0x00,也就是二进制的00000000B,要读取SDA的值,SDA是一个端口,所以一次只能读取一个bit位,也就是二进制的一个位,
k = k|SDA; //把SDA的值赋予k的最低位,
当读取第二位的时候,先得把k的值左移一位,不然就重叠了,所以(k<<1);
因此就有了这个语句:
k=(k<<1)|SDA;
一直循环8次,就实现了用一个端口输出一个8位字节的数据。
盖勋0G7
2016-12-01 · TA获得超过851个赞
知道小有建树答主
回答量:353
采纳率:0%
帮助的人:114万
展开全部
k 是八位的变量。

k=(k<<1),左移一位。
在右边,腾出一个空位,自动补上0。

|SDA,把 SDA (可能是1,也可能是0),加入到空位中。

循环八次,就把 SDA 读出了八遍,依次写到 K 的八个位中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式