关于iic总线字节传输的问题
发布网友
发布时间:2022-05-15 21:10
我来回答
共2个回答
热心网友
时间:2024-02-27 22:39
i2c有定义 字节格式
发送到SDA 线上的每个字节必须为8 位,每次传输可以发送的字节数量不受*。每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL 后数据传输继续。
意思是如果你发送 0x01 那么前面很多个0一定是第一个发送出去的(msb),1是最后发送出去的(lsb)
一般的话,如果你的 ad 转换器是有 I2c接口,那么就直接连接到单片机的i2c好了,具体通讯细节无需考虑
热心网友
时间:2024-02-27 22:40
用AT89S51写AT24C01,AT24CO1的地址是怎样确定的,下面程序为什么它发送完了读取写控制字之后不用发写在AT24CO1的首地址吗?
LCALLSTA;发送起始条件
MOVA,,#0A0H读取写控制字
LCALLWRB;发送一个字节
LCALLCACK;检查应答位
JBF0,WRBYTE1;无应答,重发
MOVR0,#DTSV;欲发送数据首址
MOVR5,KEYNUM;R5保存欲发送数据的字节数
WRDA:MOVA,@R0;读一个字节数据
LCALLWRB;发送写控制字节
LCALLCACK;检查应答位
JBF0,WRBYTE1;无应答,重发
DECR0
DJNZR5,WRDA;未发送完N个字节继续
LCALLSTOP;数据发送完毕,停止
POPPSW;恢复现场
RET