STC15单片机外接AT24C02,在连续写入字符串后,需要重复写5~8·次才能写进去,而且读取字符串的函数不能重复读,读第二次就进入死循环,就是读不到结束符,可是我每次读都初始化 地址 i=0; 很奇葩,求大神给一套完整的 AT24C02连续读写的函数,或者是能帮我解决问题,万分感谢!
下面是我写的读写函数:
- void ee_store(u8 *p,u8 add)
- {
- u8 i=0;
-
- IIC_Start();
- IIC_SendByte(0xa0);
- IIC_WaitAck();
- IIC_SendByte(add*8);
- IIC_WaitAck();
- do
- {
- if(i==0||i%8!=0)
- {
- IIC_SendByte(p[i]);
- IIC_WaitAck();
- }
- else
- {
- IIC_Stop();
-
- do
- {
- IIC_Start();
- IIC_SendByte(0xa0);
- IIC_WaitAck();
- }
- while(IIC_WaitAck());
-
- IIC_SendByte(add*8+i);
- IIC_WaitAck();
- IIC_SendByte(p[i]);
- IIC_WaitAck();
- }
- }
- while(p[++i]!=0);
- IIC_Stop();
- }
- void Ee_read(u8 add)
- {
- u8 i=0;
-
- i=0;
- IIC_Start();
- IIC_SendByte(0xa0);
- IIC_WaitAck();
- IIC_SendByte(add*8);
- IIC_WaitAck();
- IIC_Stop();
-
- IIC_Start();
- IIC_SendByte(0xa1);
- IIC_WaitAck(); //等待应答
- do
- {
- Ee_buf[i]=IIC_RecByte();
- IIC_SendAck(0); //发送应答
- }
- while(Ee_buf[i++]!='!'); //检测结束符
- Ee_buf[i-1]=0;
- IIC_SendAck(1);
- IIC_Stop();
- }
复制代码
|