amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 1179|回复: 13

发现一个“伪”EEPROM用法

[复制链接]
发表于 2015-8-28 15:04:46 来自手机 | 显示全部楼层 |阅读模式
今天调试单片机发现内存益处了,于是用扩展的RAM吧,xdata定义一个变量,习惯uchar i;所以在用xdata定义时也这样用。之后发现复位后变量没有被清空,接着上次的继续走。如果用uchar i=0;那么上电后就会被清空。这下用在不会掉电下保存数据就爽了,首先想到程序在计数,随便怎么跑飞,复位回来继续++。
 楼主| 发表于 2015-8-28 15:07:28 来自手机 | 显示全部楼层
那么上电后就会被清空。改为:那么复位后就会被清空。
发表于 2015-8-28 15:23:32 | 显示全部楼层
以前做过死机软件复位,重新在死机处运行。用的就是外部RAM.
保证产品不会因为死机,而中断操作。
在有些行业,有特殊要求。
发表于 2015-8-28 15:55:06 | 显示全部楼层
keil C51在执行main之前有一段初始化代码,其中就将00H-7FH的RAM清0,如果不是这段代码,这些RAM在复位之后都会保持不变。
发表于 2015-8-28 16:27:03 | 显示全部楼层
同编译器有很大的关系
发表于 2015-8-28 16:27:24 | 显示全部楼层
可以研究一下KEIL C51
发表于 2015-8-28 16:45:17 来自手机 | 显示全部楼层
不是你发现,是你没有搞懂
发表于 2015-8-28 16:48:53 来自手机 | 显示全部楼层
如果跑飞后出现不可预知的写外部ram情况,你还能确保你的数据是正常的吗,既然是非设计情况,那么就存在我说的这个问题
 楼主| 发表于 2015-8-29 00:00:54 | 显示全部楼层
1a2b3c 发表于 2015-8-28 16:48
如果跑飞后出现不可预知的写外部ram情况,你还能确保你的数据是正常的吗,既然是非设计情况,那么就存在我 ...

这个由数据来提供、我不是在定义这个现象、所以也没拿什么一堆测试条件来讲、只是单纯的讲有这么一回事。扩展内存没有在复位时清空。
 楼主| 发表于 2015-8-29 00:07:02 | 显示全部楼层
STCunio 发表于 2015-8-28 15:55
keil C51在执行main之前有一段初始化代码,其中就将00H-7FH的RAM清0,如果不是这段代码,这些RAM在复位之后 ...

这个真没去研究、不过我写完程序最后优化时、将所有变量都定义为i=0;防止出现异常。
发表于 2015-8-29 07:04:49 来自手机 | 显示全部楼层
变量不设初值等于耍流氓
发表于 2015-8-29 09:16:45 | 显示全部楼层
如果是低电复位呢?如何保证数据有效?
 楼主| 发表于 2015-8-29 10:53:27 来自手机 | 显示全部楼层
wmm20031015 发表于 2015-8-29 09:16
如果是低电复位呢?如何保证数据有效?

编程不是我强项,我编程水平还在按键控制led亮灭。大多数程序有个百行 自己写的都能把自己整蒙了
发表于 2015-9-7 09:40:50 | 显示全部楼层
你所谓的伪EEPROM那是短时间的,RAM有一个特性就是大概在0.4V以上可以保存,一当电源电压低于这个值RAM中的数据就乱了。所以用其来做短时间记忆要注意上电是校验数据是否已经丢失,不然会有很多不可预知的问题
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-9-20 14:32

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表