打印

请教一个EEPROM保存数据的算法.

[复制链接]
4497|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
figoxwm|  楼主 | 2007-10-22 09:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
假设我所保存的200组数据已满,当第201组的数据来的时候,我如何把前面的200组数据移一位?然后把刚得到的第201组数据变成第一组数据,第202组娄据变成2,第203组数据变成3如此类推.........请教这种算法 

即:                    1   2   3 4 5 6....200  
当201 202 203 来的时:201 202 203 4 5 6....200 

相关帖子

沙发
gxs64| | 2007-10-22 09:27 | 只看该作者

re

这是一种环形指针算法,可参考zlg有关单片机的书。

使用特权

评论回复
板凳
ayb_ice| | 2007-10-22 09:48 | 只看该作者

一一对应不好吗。。。

使用特权

评论回复
地板
figoxwm|  楼主 | 2007-10-22 10:07 | 只看该作者

回两位

回2楼,请问网上有ZLG的例子吗?我这里没他的书

回3楼,如何一一对应?上面叫这样做的....

使用特权

评论回复
5
农民讲习所| | 2007-10-22 11:56 | 只看该作者

你只需要建立一个表示起始的索引

俺这个循环写EEPROM程序就包括你的要求了。
相关链接:https://bbs.21ic.com/club/bbs/showEssence.asp?id=8527

使用特权

评论回复
6
hab2000| | 2007-10-22 12:15 | 只看该作者

覆盖最早的数据,不要移动数据,太浪费时间!

做个指针变量,重新定位“1-200”即可!

使用特权

评论回复
7
gzhc| | 2007-10-22 13:06 | 只看该作者

这种方法好

看了你上面的描述,这不就是在数椐缓冲满200后,新数椐直接复盖原数椐吗?此时并对200后的数椐计数,满200后再复盖。这么简单,大家讨论的那么费劲,我晕。

使用特权

评论回复
8
gxs64| | 2007-10-22 13:29 | 只看该作者

RE

使用特权

评论回复
9
gxs64| | 2007-10-22 13:31 | 只看该作者

re

试一下www.zlgmcu.com

使用特权

评论回复
10
ayb_ice| | 2007-10-22 14:43 | 只看该作者

随便说说

用个变量做编号,从零开始,到200等于写满,清除后变量归零即可。。。
就这玩意还啥算法。。。

使用特权

评论回复
11
eleclike| | 2007-10-22 15:22 | 只看该作者

直接覆盖

看你列的那个表,201,202,203放在了原来1,2,3的位置,直接覆盖不就可以了么?

使用特权

评论回复
12
mohanwei| | 2007-10-22 21:35 | 只看该作者

环形队列。很经典的数据结构……

使用特权

评论回复
13
hotpower| | 2007-10-23 01:20 | 只看该作者

256最省劲~~~

unsigned char X;
A[X++]=D;

使用特权

评论回复
14
qiushui007| | 2007-10-23 16:27 | 只看该作者

要点: 是覆盖最早的数据,不是移动数据

1. EEPROM中找个字节纪录当前的数据长度.
2. 每次根据数据长度计算出EEPROM中待写的地址, 写完后数据长度+1
3. 超过200时, 数据长度为1.
4. 循环上面

使用特权

评论回复
15
qiushui007| | 2007-10-23 16:29 | 只看该作者

你是要保留最后的200组纪录吧.

使用特权

评论回复
16
jxyhome| | 2007-10-23 16:34 | 只看该作者

LS上的对

用Hashtable形成一个简单的线性表,一个做index,一个存储数据……

使用特权

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

本版积分规则

12

主题

51

帖子

0

粉丝