STC15單片機外接AT24C02,在連續(xù)寫入字符串后,需要重復寫5~8·次才能寫進去,而且讀取字符串的函數(shù)不能重復讀,讀第二次就進入死循環(huán),就是讀不到結束符,可是我每次讀都初始化 地址 i=0; 很奇葩,求大神給一套完整的 AT24C02連續(xù)讀寫的函數(shù),或者是能幫我解決問題,萬分感謝!
下面是我寫的讀寫函數(shù):
- 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); //發(fā)送應答
- }
- while(Ee_buf[i++]!='!'); //檢測結束符
- Ee_buf[i-1]=0;
- IIC_SendAck(1);
- IIC_Stop();
- }
復制代碼
|