打印

STC eeprom的使用求助

[复制链接]
813|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jouney316|  楼主 | 2016-4-27 21:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在有如下问题:
1、单片机第一次烧写程序时,num=eepread(JISHU_ADDRESS);num值不能确定,我想法是单片机第一次使用时num的值为0,其余时候,不管再次关机开机,num的值都从eeprom中读取,这个num的第一次的初值该怎么赋?怎么判断它是第一次用?

2、num值要存入eeprom中,单片机是8位的,stc89c52中eeprom的空间为4K,分8个扇区,每个扇区512个字。起始地址为0x2000;问:num的值最大能计数到多少?如果num=12345678时,即转化二进制有24位,该怎么存储?

相关帖子

沙发
喵喵小星人| | 2016-4-29 16:30 | 只看该作者
只要使用它的前5个字节就够了
第一个字节保存验证信息,
如果是值x,就不用初始化,直接读后面的4字节数据
如果不是值x,说明是第一次用,先初始化
后面4个字节保存num,32位够用了吧

使用特权

评论回复
板凳
yysforever| | 2016-4-29 16:42 | 只看该作者
stc单片机内部eeporm本质上是flash,所以擦写寿命能有10万次算好运气了
不适合频繁擦写

使用特权

评论回复
地板
JY-DX-JY| | 2016-4-29 16:49 | 只看该作者
第一次用应该是0xff吧

使用特权

评论回复
5
叶覃| | 2016-4-30 22:15 | 只看该作者
请问一下,存储的时候是要先把num转化成16进制,然后8位8位的往进存吗?十进制转化十六进制有没有简单的方法呀?网上搜了一堆,都挺复杂。

使用特权

评论回复
6
tomyoct| | 2016-4-30 22:46 | 只看该作者
可以一次性写入,也可以按字节写入,
直接写入4个字节就可以了 干嘛要转换?
而且别指望能写10万次

使用特权

评论回复
7
magicoctoy| | 2016-4-30 22:47 | 只看该作者
我记得官方有库函数的版本的,直接用库就好了,搞这么复杂干嘛

使用特权

评论回复
8
jouney316|  楼主 | 2016-12-21 16:05 | 只看该作者
写eeprom之前必须要擦除,然后其他数据都得转移,这个比较麻烦。还好我只保存几个数据,每个数据放一个扇区中,最后奢侈的解决了。

使用特权

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

本版积分规则

16

主题

203

帖子

0

粉丝