打印
[技术讨论]

求24C08 EEPROM保存和读取对应数据的程序思路

[复制链接]
594|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
showmyself|  楼主 | 2022-10-18 09:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在单片机需要外接一颗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次依然可以检测到。

使用特权

评论回复
沙发
wukye| | 2022-10-18 10:17 | 只看该作者
建议再增加1个地址用来存放次数值

使用特权

评论回复
板凳
一周一天班| | 2022-10-18 13:15 | 只看该作者
用滚动存储方式,以8字节为一次存储单位,依次顺序为校验+7字节数据,校验不能==0xff。必须保证有一个8字节为全FF,用它来识别存储开始。

使用特权

评论回复
地板
ccd007| | 2022-10-18 13:45 | 只看该作者
第一次随机数据减去100,然后与0x80相或,然后写入eeprom。以后每次检查最高位是否为1来判定是否为最后写入的数据。当写入次数大于1时,先把最高位为1的数据与0x7F相与,重新写入。然后把当前的随机数据再减去100后与0x80向或,写入eeprom相应位置。记住读出来的数据需要加上100才能恢复成原始值。

使用特权

评论回复
5
dog_xin| | 2022-10-18 17:41 | 只看该作者
增加一个字节用于存储最后一个字节的地址,如果存储是2,就是说2号地址是上次写的最后一个地址

使用特权

评论回复
6
伏尔加的鱼| | 2022-10-18 22:35 | 只看该作者
增加一个空间写最后一个数据或者写最后一下次写数据的地址;再或者修改程序时钟让程序写数据每个都往后移动一个地址,右侧可知固定的那个最开始的地址就是最后一次写的数据

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

52

主题

123

帖子

1

粉丝