关于24C02读写问题
因为要将数据按照指定的地址写进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();
}
但这样并不能讲数写进指定的地址中,请问各位高人,哪里出错了,还是?
[解决办法]
1)如果你只写1字节能够写成功的话,那么,可以在每次循环时,延时10毫秒,再写下1字节;
2)正确的做法,应该将5个变量的地址安排在连续的一页(高4为地址相同)地址中,然后一次性写入5字节,中间可以不要延时。只有1次开始,1次结束。
[解决办法]
但这样并不能讲数写进指定的地址中
----
能写进去?
[解决办法]
你要观察一下写的时序SCL,SDA是否正确。其次每写一个字节要延时一段时间再写第2个字节。还有你都没有读数据怎么知道没写进去。。。
最后你那main函数最后最好有个【while(1);】死循环,要不程序跑飞了。