打印

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

[复制链接]
2886|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的,汇编就只是刚开始学单片机的时候有看,现在只会看,不会写!
还是用用户寄存器那个好啦,谢谢啦!

使用特权

评论回复
5
tong2gang|  楼主 | 2007-1-2 20:01 | 只看该作者

再问

试了试,用PCON里面的用户寄存器,也就是GF1,GF0,可是奇怪的是,怎么这两个位的值也会因为RESET也置0的,奇怪!
明明在STARTUP里面只是将地址值在80H以下的才置0啊!
哪位大侠能帮帮忙,解释一下?
谢谢啊!

使用特权

评论回复
6
yccamel| | 2007-1-3 15:21 | 只看该作者

如果有xram就可以就解决

你把那个标志变量定义到xram中就可以了

使用特权

评论回复
7
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.

使用特权

评论回复
8
xwj| | 2007-1-3 15:24 | 只看该作者

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

LZ绝对没认真看过!

使用特权

评论回复
9
cetclyb| | 2007-1-4 09:33 | 只看该作者

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

使用特权

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

本版积分规则

14

主题

26

帖子

0

粉丝