24c20的地址是0xA0,24C512的地址是0xA4,有没有人这样用过,单片单独读写都是可以的,虽然地址不同两片连起来存储的数据会乱,不知道是我程序问题还是不可以这样串起来?
用的模拟iic,原子的例程修改的
[mw_shl_code=c,true]#define Package_Base_Addr 512
void Write_24C512_Byte(unsigned int WriteAddr,unsigned char DataToWrite)
{
WriteAddr= WriteAddr+ Package_Base_Addr;
I2C_Start();
I2C_SendByte(0xA4); //发送写命令
I2C_WaitAck();
I2C_SendByte(WriteAddr>>8);//发送高地址
I2C_WaitAck();
I2C_SendByte(WriteAddr%256); //发送低地址
I2C_WaitAck();
I2C_SendByte(DataToWrite); //发送字节
I2C_WaitAck();
I2C_Stop();//产生一个停止条件
delay_ms(5);
}
unsigned char Read_24C512_Byte (unsigned int ReadAddr)
{
u8 temp=0;
ReadAddr = ReadAddr+ Package_Base_Addr;
I2C_Start();
I2C_SendByte(0xA4); //发送写命令
I2C_WaitAck();
I2C_SendByte(ReadAddr>>8);//发送高地址
//I2C_WaitAck();
I2C_SendByte(ReadAddr%256); //发送低地址
I2C_WaitAck();
I2C_Start();
I2C_SendByte(0xA5); //进入接收模式
I2C_WaitAck();
temp=I2C_ReceiveByte();
I2C_NoAck();
I2C_Stop();//产生一个停止条件
return temp;
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>