找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2645|回復(fù): 6
收起左側(cè)

STC89C52RC單片機(jī)片內(nèi)EEPROM存儲(chǔ)數(shù)據(jù)問題

[復(fù)制鏈接]
ID:913310 發(fā)表于 2022-5-18 22:55 | 顯示全部樓層 |閱讀模式
設(shè)計(jì)是將溫度和二氧化碳的設(shè)定值存到地址(0x2001和0x2002),然后掉電或者GSM初始化就會(huì)出現(xiàn)溫度丟失原始設(shè)定值,二氧化碳數(shù)據(jù)保持不變;然后溫度丟失后會(huì)隨機(jī)變化,變化到幾度。我懷疑是代碼這里有問題void Read_e2(){
        uchar Check = 0;
        Check = EEPROM_Read(0x2000);                     // 從EEPROM中讀取報(bào)警值
        if(Check == 18)//檢測(cè)上次是否有寫入數(shù)據(jù),如果沒有則使用默認(rèn)數(shù)據(jù)
        {
                Temp_H         = EEPROM_Read(0x2001);
                CO2_H         = EEPROM_Read(0x2002);
        }
}
//將數(shù)據(jù)保存在芯片中
void Write_e2()
{
        Sector_Erase(0x2000);                                       // 擦除單片機(jī)內(nèi)部EEPROM的數(shù)據(jù)
        EEPROM_Write(0x2000, 18);
        EEPROM_Write(0x2001, Temp_H);
        EEPROM_Write(0x2002, CO2_H);
}





回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2022-5-19 06:51 | 顯示全部樓層
可以將Temp_H、CO2_H的數(shù)據(jù)和舍棄溢出部分作為驗(yàn)證碼。

  1. void Read_e2()
  2. {
  3.         uchar Check = 0;
  4.         uchar i,a[3];
  5.         for(i=0;i<3,i++)
  6.                 a[i]=EEPROM_Read(0x2001+i);
  7.         if(a[0]!=(a[1]+a[2]))
  8.         {
  9.                 Temp_H= 默認(rèn)值;
  10.                 CO2_H = 默認(rèn)值;               
  11.         }
  12.         else
  13.         {
  14.                 Temp_H= a[1];
  15.                 CO2_H = a[2];       
  16.         }
  17. }
  18. //將數(shù)據(jù)保存在芯片中
  19. void Write_e2()
  20. {
  21.         Sector_Erase(0x2000);   // 擦除單片機(jī)內(nèi)部EEPROM的數(shù)據(jù)
  22.         EEPROM_Write(0x2000, Temp_H+CO2_H);
  23.         EEPROM_Write(0x2001, Temp_H);
  24.         EEPROM_Write(0x2002, CO2_H);
  25. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2022-5-19 11:02 | 顯示全部樓層
如果你懷疑它,就查一下用到的函數(shù)。
提示點(diǎn):
擦除需要時(shí)間,如果剛下了擦除命令,緊接著就發(fā)出寫命令,則倒發(fā)生,還未探險(xiǎn)干凈,就寫了。
寫也需要時(shí)間。
建議:將標(biāo)記寫入,放在最后執(zhí)行。不要先寫標(biāo)記,再寫數(shù)據(jù)。
回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2022-5-19 11:03 來自觸屏版 | 顯示全部樓層
isp_conta需要設(shè)置速度,速度不對(duì)的話,連續(xù)寫三個(gè)數(shù)據(jù),會(huì)導(dǎo)致第二個(gè)數(shù)據(jù)寫入失敗,建議寫好后讀一下確認(rèn)數(shù)據(jù),或者嚴(yán)格按照手冊(cè)設(shè)置isp_conta。
回復(fù)

使用道具 舉報(bào)

ID:913310 發(fā)表于 2022-5-19 12:37 | 顯示全部樓層
wulin 發(fā)表于 2022-5-19 06:51
可以將Temp_H、CO2_H的數(shù)據(jù)和舍棄溢出部分作為驗(yàn)證碼。

頂一下一樓,他的方法解決了問題了,贊!
回復(fù)

使用道具 舉報(bào)

ID:230742 發(fā)表于 2022-5-19 12:39 | 顯示全部樓層
在本論壇搜索一下例程參考一下。很多的。
時(shí)間又不急,擦除和寫入多延時(shí)一下。等它搞完了,在往下執(zhí)行。穩(wěn)住。
回復(fù)

使用道具 舉報(bào)

ID:1040470 發(fā)表于 2022-8-13 15:49 | 顯示全部樓層
增加一步驗(yàn)證就可以吧,驗(yàn)證一下讀入的數(shù)據(jù)是否正確
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表