关于24C02读写问题

黎仔656 2012-05-26 04:47:20
因为要将数据按照指定的地址写进24c02,而且地址不连续,所以想用两个数组来分别存储地址和数据,其主要代码如下:
uchar Addr[]={0x45,0x32,0x52,0x87,0x76};
uchar DATA[]={0x03,0x45,0x12,0x14,0x35};

void main()
{
uint i;
for(i=0;i<5;i++)
E24C02_write_add(Addr[i],DATA[i]);
}

E24C02_write_add(Addr[i],DATA[i]);的函数体是:
void E24C02_write_add(uchar address,uchar Data)
{
E24C02_start();
E24C02_write_byte(0xa0);
E24C02_respons();
E24C02_write_byte(address);
E24C02_respons();
E24C02_write_byte(Data);
E24C02_respons();
E24C02_stop();
}
但这样并不能讲数写进指定的地址中,请问各位高人,哪里出错了,还是?
...全文
347 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
流水源 2012-05-27
  • 打赏
  • 举报
回复
你要观察一下写的时序SCL,SDA是否正确。其次每写一个字节要延时一段时间再写第2个字节。还有你都没有读数据怎么知道没写进去。。。
最后你那main函数最后最好有个【while(1);】死循环,要不程序跑飞了。
woshi_ziyu 2012-05-26
  • 打赏
  • 举报
回复
但这样并不能讲数写进指定的地址中

----
能写进去?
bjtea 2012-05-26
  • 打赏
  • 举报
回复
1)如果你只写1字节能够写成功的话,那么,可以在每次循环时,延时10毫秒,再写下1字节;
2)正确的做法,应该将5个变量的地址安排在连续的一页(高4为地址相同)地址中,然后一次性写入5字节,中间可以不要延时。只有1次开始,1次结束。

27,377

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧