和它或,按位或 |
读取当前I2C_SDA上的数据 (一个bit读取) |
dat = dat | I2C_SDA; |
你写的这个,是收集位数据,转换为8位字节的表达式。 第一:“或|”运算:就是有1得1,全为零才为零。 第二:dat是8位,I2C_SDA是一位。 当两数据进行或赋值运算时,就将SDA的一位数据,加入到8位的dat低位中,再通过移位,得到一个完整的8位数据。 |
I2C标准读取数据的流程,在时钟线拉高的情况下,数据线的高低电平由dat保存,每保存一位dat就左移一位,因为是二进制只能这样保存数据。 |
加上sda的数据啊 |
dat <<1; //左移一位, dat|=I2C_SDA; //dat 或 I2C_SDA,说明dat的最低位(0)和I2C_SDA或,相当于取了I2C—SDA. 循环8次,相当于取了8次I2C—SDA位,将I2C—SDA的串行发送的数字8位取成一个8位数。 即读取了一个字节的数(8位)。 |
就是dat=dat或上i2c的数据嗯 |