欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3590|回復: 2
收起左側

51單片機+AT24C02連續讀寫程序問題

[復制鏈接]
ID:375590 發表于 2019-5-9 15:28 | 顯示全部樓層 |閱讀模式
20黑幣
STC15單片機外接AT24C02,在連續寫入字符串后,需要重復寫5~8·次才能寫進去,而且讀取字符串的函數不能重復讀,讀第二次就進入死循環,就是讀不到結束符,可是我每次讀都初始化 地址 i=0;  很奇葩,求大神給一套完整的  AT24C02連續讀寫的函數,或者是能幫我解決問題,萬分感謝!

下面是我寫的讀寫函數:

  1. void ee_store(u8 *p,u8 add)
  2. {
  3.         u8 i=0;
  4.         
  5.         IIC_Start();
  6.         IIC_SendByte(0xa0);
  7.         IIC_WaitAck();
  8.         IIC_SendByte(add*8);
  9.         IIC_WaitAck();        
  10.         do
  11.         {
  12.                 if(i==0||i%8!=0)
  13.                 {
  14.                         IIC_SendByte(p[i]);
  15.                         IIC_WaitAck();
  16.                 }
  17.                 else
  18.                 {
  19.                         IIC_Stop();        
  20.                         
  21.                         do
  22.                         {
  23.                                 IIC_Start();
  24.                                 IIC_SendByte(0xa0);
  25.                                 IIC_WaitAck();
  26.                         }
  27.                         while(IIC_WaitAck());
  28.                         
  29.                         IIC_SendByte(add*8+i);
  30.                         IIC_WaitAck();        
  31.                         IIC_SendByte(p[i]);
  32.                         IIC_WaitAck();
  33.                 }
  34.         }
  35.         while(p[++i]!=0);
  36.         IIC_Stop();        
  37. }

  38. void Ee_read(u8 add)
  39. {
  40.         u8 i=0;
  41.         
  42.         i=0;
  43.         IIC_Start();
  44.         IIC_SendByte(0xa0);
  45.         IIC_WaitAck();
  46.         IIC_SendByte(add*8);
  47.         IIC_WaitAck();        
  48.         IIC_Stop();               
  49.         
  50.         IIC_Start();
  51.         IIC_SendByte(0xa1);
  52.         IIC_WaitAck();                //等待應答
  53.         do
  54.         {
  55.                 Ee_buf[i]=IIC_RecByte();
  56.                 IIC_SendAck(0);                //發送應答
  57.         }
  58.         while(Ee_buf[i++]!='!');        //檢測結束符
  59.         Ee_buf[i-1]=0;
  60.         IIC_SendAck(1);
  61.         IIC_Stop();               
  62. }
復制代碼

回復

使用道具 舉報

ID:123289 發表于 2019-5-10 15:23 | 顯示全部樓層
不是你錯,就是庫錯!
你錯好解決一點,庫錯難一點。
建議:再研讀庫函數的說明,并特別留意時序部分(某些地方要不要插入延時)。
回復

使用道具 舉報

ID:525872 發表于 2019-5-12 19:01 來自觸屏版 | 顯示全部樓層
你總線工作不加延時的么?時序圖有延時的啊
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表