求助!关于门禁卡号在EEPROM中如何快速查找

2020-01-30 13:52发布

小弟最近在搞一个门禁系统,用了STC12C5A32的单片机,内部的“EEPROM”是比较大,如果一张卡号存4个字节,那么可以存7000张卡这样子,如果用历遍法查找7000张卡中的一张卡号,用的时间太长了,有什么算法能快速的查找吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
cc224
1楼-- · 2020-01-31 20:24
baynkrnr 发表于 2013-3-9 15:43
扇区里不好用排序

如果排序的话确实在增加和删除卡的时候比较麻烦
极端情况下比如你在第一个区加、减卡,那么需要重写所有的数据
不过一旦数据全部排好序,那么查找就比较容易了
60多个区最不巧的情况下也只是读7个区就可以找到数据了,查找时间大约缩小到你目前的十分之一
门禁系统如果需要4秒钟才知道是不是合法卡那肯定是太慢了
zuu0
2楼-- · 2020-01-31 21:37
2楼方法不错,记下
baynkrnr
3楼-- · 2020-01-31 22:21
 精彩回答 2  元偷偷看……
Hz01800475
4楼-- · 2020-02-01 04:06
Etual 发表于 2013-3-8 08:36
链式哈希表,设计得好的话7000条数据读取几次就找到数据了。还可以考虑将常用数据上浮,以实用次数排序
那 ...

此楼正解。
chaily
5楼-- · 2020-02-01 09:52
把数据当作地址,存入对应的地址中,查找的时候读到的数据直接当作地址来寻址,看看寻址后存储单元的数据内容是不是和地址数据一样的,一样的表明是存在的白名单,如果寻址后发现是0则表明未录入。
mhw
6楼-- · 2020-02-01 14:15
内部EEPROM的话,直接用for循环从头比较到尾就行了……不信你可以测试一下速度

一周热门 更多>