我们先放一段if(input & 0x80)在I2C写字节的代码
/************************************************
*函数名称 : void I2C_WriteByte
*功 能 : I2C写一个字节
*参 数 : dat:传输数据
*返 回 值 : 无
*************************************************/
void I2C_WriteByte(uint8_t input)
{
uint8_t i;
SDA_OUT();
for(i=0; i<8; i++)
{
IIC_SCL = 0;
delay_ms(5);
if(input & 0x80)
{
IIC_SDA = 1;
//delaymm(10);
}
else
{
IIC_SDA = 0;
//delaymm(10);
}
IIC_SCL = 1;
delay_ms(5);
input = (input<<1);
}
IIC_SCL = 0;
delay_us(4);
SDA_IN();
delay_us(4);
}
调用这个函数需要导入一个uint8_t input参数
我们假设我们导入的参数是0x71
下面记录一下I2C_WriteByte写入数据的过程
最主要的就是上面的过程
在代码中的if(input & 0x80)
也有些代码写的是if(input & 0x80 == 0x80)
我在上面的代码I2C_WriteByte测试过,实际上他们的效果都是一样的
都是判断最高位是不是为1
到这里就结束了,如果有错误或者有更好的补充可以在评论留言