标题:
51单片机+AT24C02连续读写程序问题
[打印本页]
作者:
小白n
时间:
2019-5-9 15:28
标题:
51单片机+AT24C02连续读写程序问题
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();
}
复制代码
作者:
yzwzfyz
时间:
2019-5-10 15:23
不是你错,就是库错!
你错好解决一点,库错难一点。
建议:再研读库函数的说明,并特别留意时序部分(某些地方要不要插入延时)。
作者:
18312284784
时间:
2019-5-12 19:01
你总线工作不加延时的么?时序图有延时的啊
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1