51单片机I2C总线读一个字节k=(k<<1)|SDA;是什么意思?
展开全部
正如题目所讲:意思就是读一个字节。
对于一个字节,以8位字节来说,0x00书写成二进制就是00000000。
首先k作为一个变量,初始值假如是0x00,也就是二进制的00000000B,要读取SDA的值,SDA是一个端口,所以一次只能读取一个bit位,也就是二进制的一个位,
k = k|SDA; //把SDA的值赋予k的最低位,
当读取第二位的时候,先得把k的值左移一位,不然就重叠了,所以(k<<1);
因此就有了这个语句:
k=(k<<1)|SDA;
一直循环8次,就实现了用一个端口输出一个8位字节的数据。
对于一个字节,以8位字节来说,0x00书写成二进制就是00000000。
首先k作为一个变量,初始值假如是0x00,也就是二进制的00000000B,要读取SDA的值,SDA是一个端口,所以一次只能读取一个bit位,也就是二进制的一个位,
k = k|SDA; //把SDA的值赋予k的最低位,
当读取第二位的时候,先得把k的值左移一位,不然就重叠了,所以(k<<1);
因此就有了这个语句:
k=(k<<1)|SDA;
一直循环8次,就实现了用一个端口输出一个8位字节的数据。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询