ead_byte()中第一个SCL=0:表示让对方输入数据;( I2C总线是SCL=0时从设备输出数据,SCL=1时竖袜主设备接收数据。)
第一个SDA=1:表示释放数据线,这样对方发数据到总线上,因为在SDA=0时,会线与,所以对方发不斗配了数据。
write_byte中的“SCL = 0; delay(1); SDA = 1; delay(1); ”和read_byte()中一个意思。只是这里write_byte之后要接收应答信号。
可参考下面的资料空纤指
I2C总线信号时序分析
铁电存储器 FM24C16G(I2C接口) 数据手册
时钟芯片 DS3231(I2C接口) 数据手册
我只能说神改你的时序肯定不对 你单步信察运行一下 与芯片手册进行核对 在滑瞎茄写入和读出指令之间加个0.2MS的延时
SDA=CY;
这里不对吧?
左移会唯族圆进位吗?
建议:改成 SDA=temp&0x80;
把temp=temp<<1; 放指塌在后面试试穗空。