AT24c512读写数据问题

[复制链接]
5093|6
 楼主| sanzanglong 发表于 2011-6-1 11:15 | 显示全部楼层 |阅读模式
高手们小弟对24C512写进10000个数据,地址是从0到10000这么写的数据都是8位的0x01-0xFF,这些,但是在我读出来的时候,读到第6144个址址时就返回到0了,读到的是0地址里的数据,6145读1,循环了不知道是为什么,谢大虾们帮帮小弟我很菜的呵呵。那位高手有读写24C512的程序能发给小弟吗谢谢了,我的邮箱是sanzang_xulong@126.com.

/*-----------------------------------------------
调用方式:void write24c512(uint address,uchar ddata)
函数说明:写数据到24c512的指定地址(字节写)
-----------------------------------------------*/
void WriteFm24c512(uint address,uchar ddata)
{
//EA=0;  //避免与串口通讯等中断冲突
start_bit();
write_8bit(0xA0);
ack();
write_8bit(address/256);
ack();
write_8bit(address%256);
ack();
write_8bit(ddata);
ack();   
stop_bit();
//EA=1;
}
void delay1(uint z)//延时为 1ms
{  
uchar x,x1;
for(;z>0;z--)
{
for(x=0;x<114;x++)
{
for(x1=0;x1<1;x1++);
}
}
}  


/*----------------------------------------------
调用方式:uchar read24c512(uint address)
函数说明:读24c512指定地址数据(字节读)
-----------------------------------------------*/
uchar ReadFm24c512(uint address)
{
uchar data rdata;
uchar i=8;
//EA=0;//避免与串口通讯等中断冲突
start_bit();
write_8bit(0xA0);
ack();
write_8bit(address/256);
ack();//伪写
write_8bit(address%256);
ack();
start_bit();
write_8bit(0xA1);
ack();
while(i--)
{
  rdata<<=1;
  SCL=0;
  _nop_();
  SCL=1;
  if(SDA) rdata|=0x01;
}
no_ack();
stop_bit();
//EA=1;
return rdata;
}
 楼主| sanzanglong 发表于 2011-6-1 21:30 | 显示全部楼层
高手们提点意见也好啊谢谢了。
yjhon 发表于 2011-6-1 22:03 | 显示全部楼层
只记得24CXX的页写很**
 楼主| sanzanglong 发表于 2011-6-2 09:26 | 显示全部楼层
谢了兄弟,这个我自己搞定了,原来是我自己类型搞的有些问题。
zjy.zz 发表于 2011-6-18 11:01 | 显示全部楼层
这种程序网上很多了,下载个直接写进去试试,好后再对比着调你的
古道初飘雪 发表于 2015-6-23 09:43 | 显示全部楼层
sanzanglong 发表于 2011-6-2 09:26
谢了兄弟,这个我自己搞定了,原来是我自己类型搞的有些问题。

楼主  能给发一份你的这个改后的程序吗 小弟现在也弄这个  编的老出错 谢谢咯 邮箱1033051871@qq.com
wly123 发表于 2015-7-29 10:14 | 显示全部楼层
同求1215221330@qq.com,谢谢了!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

4

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部