初级会员

- 积分
- 58
- 金钱
- 58
- 注册时间
- 2018-1-29
- 在线时间
- 16 小时
|

楼主 |
发表于 2018-2-7 23:05:28
|
显示全部楼层
发现地址小于255的能正常读,大于255的不能正常读出来,但能写
//在AT24CXX指定地址读出一个数据
//ReadAddr:开始读数的地址
//返回值 :读到的数据
u8 AT24CXX_ReadOneByte(u16 ReadAddr)
{
u8 temp=0; //u16 x=0;
IIC_Start();
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0xA0); //发送写命令
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr/0x100);//发送高地址
}else IIC_Send_Byte(0XA0+((ReadAddr/256)<<1)); //发送器件地址0XA0,写数据
// x=ReadAddr;
// x=x>>8; //取出高字节
// x=x<<1;
// x=x|0xa0;
// IIC_Send_Byte(x);////发送设备地址+写信号
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr%256); //发送低地址
IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte(0xA1); //进入接收模式
IIC_Wait_Ack();
temp=IIC_Read_Byte(0);
IIC_NAck();
IIC_Stop();//产生一个停止条件
return temp;
}
//我用的是24C08,不知是什么原因? |
|