接收字节
接收字节时,需要逐位读取 SDA 的值,并在每个时钟周期后读取数据。
c
复制代码
unsigned char I2C_ReceiveByte() {
unsigned char i, byte = 0;
SDA = 1; // 设置 SDA 为输入
for (i = 0; i < 8; i++) {
SCL = 1; // 产生时钟脉冲
I2C_Delay();
byte <<= 1;
if (SDA) {
byte |= 0x01; // 读取 SDA 的值
}
SCL = 0; // 时钟脉冲结束
}
return byte;
}
|