将24C02改为24C08,结果只能读地址0-255的数据,而且读地址16 272 528 784的数据都相同,是不是地址增

2019-08-10 16:46发布

本帖最后由 xuande 于 2016-11-1 16:00 编辑


在AT24CXX指定地址读出一个数据
//ReadAddr:开始读数的地址  
//返回值 :读到的数据
u8 AT24CXX_ReadOneByte(u16 ReadAddr)
{                                 
        u8 temp=0;                                                                                                                                                               
    IIC_Start();  
        if(EE_TYPE>AT24C16)
        {
                IIC_Send_Byte(0XA0);           //发送写命令
                IIC_Wait_Ack();
                IIC_Send_Byte(ReadAddr>>8);//发送高地址            
        }else IIC_Send_Byte(0XA0+((ReadAddr/256)<<1));   //发送器件地址0XA0,写数据            
        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_Stop();//产生一个停止条件            
        return temp;
}
头文件也改为24C08了,




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
xuande
1楼-- · 2019-08-10 19:14

IIC_Send_Byte(0XA1);&#160; &#160;&#160; &#160;&#160; &#160;&#160;&#160;//进入接收模式
目测这句有错,这个地址应当是   0XA0+((ReadAddr/256)<<1) +1  。

冯文书
2楼-- · 2019-08-11 00:46
为什么啊
冯文书
3楼-- · 2019-08-11 05:23
那写函数的地址也要变动了吗?
冯文书
4楼-- · 2019-08-11 05:42
明白了,地址要增加
cang
5楼-- · 2019-08-11 11:23
 精彩回答 2  元偷偷看……

一周热门 更多>