if(input 0x80)在I2C中是怎么样一步步写入数据的?

Riva ·
更新时间:2024-11-14
· 820 次阅读

input & 0x80判断真假过程

我们先放一段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

到这里就结束了,如果有错误或者有更好的补充可以在评论留言
在这里插入图片描述


作者:这一切足够了



i2c x8 IF 数据 input

需要 登录 后方可回复, 如果你还没有账号请 注册新账号