久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2322|回復: 11
收起左側

單片機+24C08 EEPROM保存和讀取對應數據的程序思路

[復制鏈接]
ID:997026 發表于 2022-10-17 01:04 來自觸屏版 | 顯示全部樓層 |閱讀模式
現在單片機需要外接一顆24C08的eeprom,需要保存100-200之間的隨機數字,在eeprom開辟一個5地址空間來保存,從0地址開始寫,寫到4滿后,再回頭從0開始寫,如此循環。

要保存的數100-200是隨機的,只需在上電開機讀最后一次保存的數字,其他不關注,比如,數字變化了6次,依次是,101,112,122,133,145,166,那么101寫到0地址,依次寫,145寫到4地址,寫滿后,166寫到0地址覆蓋了101,現在需要在開機時檢測最后一個數字166,有什么好的思路,怎么知道166是最后一個數字呢,怎么知道166在0地址呢?有什么方法檢測到這個166?這個舉例是是數字變化了6次,要求在數字變化10次,100次依然可以檢測到。
回復

使用道具 舉報

ID:883242 發表于 2022-10-17 05:50 | 顯示全部樓層
按頁擦除,從后往前讀,第一個不是0xff的166就是你要的166。
回復

使用道具 舉報

ID:997026 發表于 2022-10-17 09:27 來自觸屏版 | 顯示全部樓層
Hephaestus 發表于 2022-10-17 05:50
按頁擦除,從后往前讀,第一個不是0xff的166就是你要的166。

感謝回復!你的回復猶如醍醐灌頂!我知道怎么寫了,感謝
回復

使用道具 舉報

ID:624769 發表于 2022-10-17 09:59 來自觸屏版 | 顯示全部樓層
24c系列,只有讀寫的eeprom,比較適合插標法,即6個字節存5個字節數據,寫完數據,后面寫個0,下次寫,新數據覆蓋0,再后面寫個0,讀的時候,讀0前面的數據,如果第一個是0,讀最后一個,
回復

使用道具 舉報

ID:123289 發表于 2022-10-17 14:39 | 顯示全部樓層
地址【0,1,2,3,4】寫隨機數據,地址【5】寫指針0-4,記錄當前位置
例:開機讀到【5】=3,即上次寫的是地址【3】,則本次寫地址【4】,并改【5】=4。
回復

使用道具 舉報

ID:997026 發表于 2022-10-18 10:05 | 顯示全部樓層
yzwzfyz 發表于 2022-10-17 14:39
地址【0,1,2,3,4】寫隨機數據,地址【5】寫指針0-4,記錄當前位置
例:開機讀到【5】=3,即上次寫的是 ...

謝謝!你這種方法是不是每寫一次隨機數據,就會在地址【5】記錄一次?比如我在地址0寫110,就會在地址5記錄0,在地址1寫150,就會在地址5記錄1,是這個意思嗎?這個方法很好,但是頻繁在地址5寫數據,時間長了會不會不太好?我實際上想用一種所謂均攤法,讓每個地址寫數據的機會幾乎均等
回復

使用道具 舉報

ID:997026 發表于 2022-10-18 10:11 | 顯示全部樓層
188610329 發表于 2022-10-17 09:59
24c系列,只有讀寫的eeprom,比較適合插標法,即6個字節存5個字節數據,寫完數據,后面寫個0,下次寫,新數 ...

謝謝!我的理解是,比如地址0,1,2,3,4,5,地址0寫一個數據后,再在地址1寫0,然后在地址1寫數據后,覆蓋原先的0,然后再在地址2寫0,以此類推,然后讀的時候,從后往前讀,讀到第一個0的時候,0前面的就是我要找的數,不知道我的理解對不對
回復

使用道具 舉報

ID:624769 發表于 2022-10-18 11:26 | 顯示全部樓層
hxdby 發表于 2022-10-18 10:11
謝謝!我的理解是,比如地址0,1,2,3,4,5,地址0寫一個數據后,再在地址1寫0,然后在地址1寫數據后,覆蓋 ...

對,就是這個意思,當然,因為你數據 范圍是100~200  不會出現 0,所以,用插標法比較經濟。因為所有字節均攤這個標志的寫入次數。同理,只要數據中有 絕對不會出現的某個值,你都可以把它定為你的“標記” 都可以用插標法。
回復

使用道具 舉報

ID:883242 發表于 2022-10-18 11:34 | 顯示全部樓層
hxdby 發表于 2022-10-18 10:11
謝謝!我的理解是,比如地址0,1,2,3,4,5,地址0寫一個數據后,再在地址1寫0,然后在地址1寫數據后,覆蓋 ...

你的理解完全錯誤,eeprom和flash不可能“覆蓋原先的0”。

必須先把原先的數據全部擦除成1,字節表達就是全擦除成0xff,才可把需要的0寫成0,1不變。

既然你的數據不可能出現0xff,那么優化均攤寫法就很容易實現,不要像某些二傻子那樣找個“記錄當前位置”把這個位置寫壞掉。
回復

使用道具 舉報

ID:997026 發表于 2022-10-18 16:08 | 顯示全部樓層
Hephaestus 發表于 2022-10-18 11:34
你的理解完全錯誤,eeprom和flash不可能“覆蓋原先的0”。

必須先把原先的數據全部擦除成1,字節表達 ...

對于flash而言,確實需要在重新寫數據之前先擦除,也就是需要寫一個函數,專門來干擦除的活,但是eeprom,你的意思是也需要先擦除嗎?我之前用過的eeprom都是直接覆蓋寫入了,并沒有先做擦除的動作,還是你表達的意思是芯片內部幫我們做了擦除動作,我們不需要自己在家擦除了?
回復

使用道具 舉報

ID:624769 發表于 2022-10-18 17:20 | 顯示全部樓層
hxdby 發表于 2022-10-18 16:08
對于flash而言,確實需要在重新寫數據之前先擦除,也就是需要寫一個函數,專門來干擦除的活,但是eeprom ...

你看一下 24C08 的手冊 就知道了, 壓根沒有擦除指令, 只有讀寫指令, 難道你去寫0xff ?  這不是多此一舉么?   網上找答案,也需要學會自己思考
回復

使用道具 舉報

ID:997026 發表于 2022-10-18 21:24 | 顯示全部樓層
188610329 發表于 2022-10-18 17:20
你看一下 24C08 的手冊 就知道了, 壓根沒有擦除指令, 只有讀寫指令, 難道你去寫0xff ?  這不是多此一 ...

FLASH我用過很多,eeprom也用過,所以我覺得他說的我非常驚訝,第一次聽說eeprom要先擦除再寫,我之前都是覆蓋寫入。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 毛片视频网站 | 久久久久久国 | 精品欧美乱码久久久久久1区2区 | 国产 日韩 欧美 在线 | 91精品国产91久久久久游泳池 | 中文字幕免费观看 | 午夜播放器在线观看 | 亚洲一区二区在线 | 久久亚洲视频 | 国产成人精品亚洲日本在线观看 | 国产成人精品网站 | 国产精品一级 | av色站| 国产欧美精品一区二区色综合朱莉 | 久久久久国产精品一区二区 | 国产精品久久国产精品99 | 日本一道本视频 | 国产91久久精品一区二区 | 成年人免费网站 | 在线欧美视频 | 成人国产精品久久 | av大片| 女生羞羞视频 | 免费精品久久久久久中文字幕 | 成人精品鲁一区一区二区 | 在线播放国产一区二区三区 | 亚洲成人免费av | h视频在线观看免费 | 精品一二三区 | 欧美激情一区二区三区 | 久久久久99 | 国产一区黄色 | 日韩免费在线观看视频 | 你懂的免费在线 | 天天干精品 | 精品欧美一区二区在线观看视频 | 亚洲一区精品视频 | 日韩在线精品视频 | 国产精品视频999 | 天色综合网 | 亚洲精品久久久一区二区三区 |