单片机掉电数据没有消失??????

[复制链接]
 楼主| areshan 发表于 2010-11-24 14:27 | 显示全部楼层 |阅读模式
用阻容电路,把220V的交流电变压后给单片机供电。我在插拔插座时,发现非要等5秒左右再次上电,单片机才会重新从第一天语句开始执行。因为,我发现快速插拔后,数码管立马显示,有时候还显示程序根本没有提供的数据。把插头拔下来后,等5秒左右,插上,数码显示0,程序是开始执行的。。。。。
 楼主| areshan 发表于 2010-11-24 14:27 | 显示全部楼层
电容是1uf,单片机是AVR8!!!!!!
5880527 发表于 2010-11-24 14:31 | 显示全部楼层
记得试过89C52掉电一分钟后再上电都还有大量数据没消失
ayb_ice 发表于 2010-11-24 15:14 | 显示全部楼层
加RAM清零程序
再说了,复位后RAM是随机值
5880527 发表于 2010-11-24 15:16 | 显示全部楼层
书本上写的是随机值,但实际并不是
 楼主| areshan 发表于 2010-11-24 15:35 | 显示全部楼层
这么麻烦,还要清空整个的RAM空间????然后呢,在让程序跳到main()?????? 4# ayb_ice
 楼主| areshan 发表于 2010-11-24 15:37 | 显示全部楼层
不是随机值,RAM里的大部分的值还是被保存住了!!!!!!可能有的被清0了,有的还没有,所以说是随机的!!!!!!
5880527 发表于 2010-11-24 15:38 | 显示全部楼层
呵呵,有道理,看你怎么理解了哈;P
 楼主| areshan 发表于 2010-11-24 15:39 | 显示全部楼层
我说的有点矛盾!!!!!!,算了,也不管那么多!!!!!!
ayb_ice 发表于 2010-11-24 15:57 | 显示全部楼层
必须按随机值对待,尽管99%的情况它可能中某个固定值
可能不同的厂家是不同的值,不同的环境是不同的值,不同的内核是不同的值.....
liang7143 发表于 2010-11-24 16:22 | 显示全部楼层
这么麻烦,还要清空整个的RAM空间????然后呢,在让程序跳到main()?????? 4# ayb_ice
areshan 发表于 2010-11-24 15:35

可以这么做,keil有STARTUP.A51,可以去看看
tianm 发表于 2010-11-24 17:15 | 显示全部楼层
检查电源
ejack 发表于 2010-11-25 07:59 | 显示全部楼层
不进行初始化的程序是可悲的

不知道startup的作用、在程序里再次浪费人力物力初始化,是更可悲的
shell.albert 发表于 2010-11-25 08:17 | 显示全部楼层
是不是芯片电源留有余量没有被释放所以保存住了那一部分值吗?
匠人粉丝团 发表于 2010-11-25 08:41 | 显示全部楼层
程序上电一般都要初始化的。
救火车 发表于 2010-11-25 08:53 | 显示全部楼层
掉电时间短,数据有可能还有,也有可能变成不确定的值。
t.jm 发表于 2010-11-25 09:03 | 显示全部楼层
WINAVR是要对RAM清零的。
如果你是用汇编下也要养成对变量初始化的习惯,
你这里的情况更可有可能的事MCU没有复位,这5S之中MCU都在工作。
自然的天逸 发表于 2010-11-25 10:05 | 显示全部楼层
就是电,没有耗完
月下狂想曲 发表于 2010-11-25 10:06 | 显示全部楼层
单片机没有快速复位,改进复位电路就行了,电路中可能存在复位电容过大,在另一次的上电过程中,复位电容还有电存在,没有充电过程,所以单片机没有复位,

可以在复位的电容中的上接电阻中并接一个二极管,当掉电时,可以将复位电容中的电容电压尽快放掉
 楼主| areshan 发表于 2010-11-25 10:35 | 显示全部楼层
哦,谢谢大家这么多的建议,好像是电没有掉玩,程序就不是从0开始执行。。。。。我用的是C,应该编译器自动给添加RAM初始化的工作吧!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

127

主题

728

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部