麻烦一下,我使用STC80C52控制AT24C16。我是随机地址写入时,如果只写一个地址。然后掉电,再读此地址的数据,一点错误也没有。当我连续写多个随机地址后。立即连续读的时候,也没错。但是掉电后,不写,再读。发现数据就直接不对啦。
程序的单次读写随机地址已经试过,一点错误也没有。见程序的比较:
for(i=0;i<8;i++) //读取编程密码
{
WriteFm24c256(PROPASSWORDADR+i,i);//写入到相关的地址
Program_Password[i]=ReadFm24c256(PROPASSWORDADR+i);//读取相关的值
Send_ASC(Program_Password[i]);//发送到串口
}
此时的试验结果完全正常,返回的数据均为0----7;
然后掉电,直接读AT24C16。
for(i=0;i<8;i++) //读取编程密码
{
Program_Password[i]=ReadFm24c256(PROPASSWORDADR+i);//读取相关的值
Send_ASC(Program_Password[i]);//发送到串口
}
发现送上来的数据都是一些怪怪的东西,按理说应该也是0----7。结果发现一个都不是。我的写和读操作的延时估计在10ms以上。
请各位有了解的能给予指点,谢谢!!! |