如何将RAM的值保存到RESET后?

[复制链接]
3845|8
 楼主| tong2gang 发表于 2007-1-2 13:15 | 显示全部楼层 |阅读模式
刚刚那贴问全局变量的总算弄明白全局变量的问题了,可是我最终问题还是头痛!
我想在程序中设一标志位,用这个标志位来判断是否执得初始化程序,第一次上电初始化后就修改该标志的值,然后以后RESET后判断该标志位的值,就不执行初始化程序了,可是现在无论这个标志位是定义成全局变量还是局部变量,重启后它的值总会被修改成系统默认值,也就是说每次RESET后都会执行初始化程序!
到底如何才能将RAM里面的程序保存到RESET后而不被修改呢?
是不是跟STARTUP里面的内容有关,去掉STARTUP可不可以?
 楼主| tong2gang 发表于 2007-1-2 13:21 | 显示全部楼层

补充

忘了补充一点,我用的单片机是89S52!
computer00 发表于 2007-1-2 13:23 | 显示全部楼层

当然跟STARTUP里面的初始化代码有关

并且STARTUP不能去掉,你得自己去修改它,让它不初始化掉你的变量。


或者利用一个专门的寄存器位,好象在PCON里还是哪里的,上电复位后为1,而普通reset后值保持不变.
 楼主| tong2gang 发表于 2007-1-2 13:28 | 显示全部楼层

谢谢!

好的,谢谢!
STARTUP的东西我还是不敢乱改,改成来好像有点难,我是习惯用C的,汇编就只是刚开始学单片机的时候有看,现在只会看,不会写!
还是用用户寄存器那个好啦,谢谢啦!
 楼主| tong2gang 发表于 2007-1-2 20:01 | 显示全部楼层

再问

试了试,用PCON里面的用户寄存器,也就是GF1,GF0,可是奇怪的是,怎么这两个位的值也会因为RESET也置0的,奇怪!
明明在STARTUP里面只是将地址值在80H以下的才置0啊!
哪位大侠能帮帮忙,解释一下?
谢谢啊!
yccamel 发表于 2007-1-3 15:21 | 显示全部楼层

如果有xram就可以就解决

你把那个标志变量定义到xram中就可以了
computer00 发表于 2007-1-3 15:22 | 显示全部楼层

是我写错拉,不是那两个用户寄存器位拉,而是另一个位:POF

PCON.4 

POF

Power-Off Flag
Cleared to recognize next reset type.
Set by hardware when VCC rises from 0 to its nominal voltage. Can also be set by software.

Power-off flag reset value will be 1 only after a power on (cold reset). A warm reset doesn’t affect the value of this bit.
xwj 发表于 2007-1-3 15:24 | 显示全部楼层

STARTUP很简单的啊,自己仔细看看就明白了

LZ绝对没认真看过!
cetclyb 发表于 2007-1-4 09:33 | 显示全部楼层

从rst脚通过一个二极管连接到电池上

您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

26

帖子

0

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