打印

单片机复位后是不是RAM里的内容不变吗?

[复制链接]
8638|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jack.king|  楼主 | 2007-11-13 15:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
jack.king|  楼主 | 2007-11-13 16:00 | 只看该作者

并且没有用startup.a51

并且没有用startup.a51
 为什么RAM会不保存复位之前的信息吗?

使用特权

评论回复
板凳
寒雨飞扬| | 2007-11-13 16:30 | 只看该作者

当然要变了!!

使用特权

评论回复
地板
jack.king|  楼主 | 2007-11-13 16:35 | 只看该作者

那怎么才能保证复位后RAM的内容不变呢?

那怎么才能保证复位后RAM的内容不变呢?

使用特权

评论回复
5
孤星119| | 2007-11-13 17:09 | 只看该作者

好象不一定哦

如果不断电光复位的话,好象全局变量的值不会变吧,说不好没太多注意.

使用特权

评论回复
6
jack.king|  楼主 | 2007-11-13 17:17 | 只看该作者

我把程序中的变量全部是定义的全局变量


   近来我在实际应用需要在不断电复位后.仍然读RAM里面的标志来判断状态.
 我是用的KEILC软件写的程序.
   我在书上看到复位后不影响RAM里面的值才打算用这个功能.并且只能用这个功能比较好!
  但是今天实验了好久都不成功.特来请教各位.高手.
    

使用特权

评论回复
7
ayb_ice| | 2007-11-13 20:11 | 只看该作者

对了,是不变的

但要修改STARUP。A51文件,让它不要对RAM进行清零。
如果没有加STARUP。A51编译器会默认一,除非用汇编自己写启动代码

使用特权

评论回复
8
computer00| | 2007-11-13 20:22 | 只看该作者

需要添加startup文件,然后修改它,不要它对RAM清0

使用特权

评论回复
评论
yjhon 2013-9-25 08:54 回复TA
这个太对了,我就是改了没有添加,怎么弄都不行,原来要添加进去一起编译啊 
9
后学| | 2007-11-13 20:32 | 只看该作者

导致复位的原因有很多,

使用特权

评论回复
10
hotpower| | 2007-11-13 20:51 | 只看该作者

00只说对了一半~~~俺是要收"选美"票的~~~

俺拿复位键当功能键都不怕呀~~~
相关链接:http://www.**/blog/hotpower/58716/message.aspx

使用特权

评论回复
11
李冬发| | 2007-11-13 21:06 | 只看该作者

不同的CPU有不同的约定的。

使用特权

评论回复
12
hotpower| | 2007-11-13 21:07 | 只看该作者

哈哈~~~看来和俺抢生意的多起来了~~~

使用特权

评论回复
13
jack.king|  楼主 | 2007-11-13 22:07 | 只看该作者

各位大哥们谢谢你们告诉我.但是请问怎么修改STARTUP.A51呢?


  我用的是AT89S8253单片机.
   请问该怎么来修改STARTUP.A51啊?
   教我方法就可以了.谢谢了.
   我试了一天了.还没有没有搞好.
  

使用特权

评论回复
14
jack.king|  楼主 | 2007-11-13 22:36 | 只看该作者

说明一点.是自己手动复位

startup.a51
有这么多个CLR A我该改哪个呢?
IF IDATALEN <> 0
                MOV     R0,#IDATALEN - 1
                CLR     A
IDATALOOP:      MOV     @R0,A
                DJNZ    R0,IDATALOOP
ENDIF

IF XDATALEN <> 0
                MOV     DPTR,#XDATASTART
                MOV     R7,#LOW (XDATALEN)
  IF (LOW (XDATALEN)) <> 0
                MOV     R6,#(HIGH (XDATALEN)) +1
  ELSE
                MOV     R6,#HIGH (XDATALEN)
  ENDIF
                CLR     A
XDATALOOP:      MOVX    @DPTR,A
                INC     DPTR
                DJNZ    R7,XDATALOOP
                DJNZ    R6,XDATALOOP
ENDIF

IF PPAGEENABLE <> 0
                MOV     PPAGE_SFR,#PPAGE
ENDIF

IF PDATALEN <> 0
                MOV     R0,#LOW (PDATASTART)
                MOV     R7,#LOW (PDATALEN)
                CLR     A
PDATALOOP:      MOVX    @R0,A
                INC     R0
                DJNZ    R7,PDATALOOP
ENDIF

使用特权

评论回复
15
snakeemail| | 2007-11-13 23:15 | 只看该作者

??

你的系统复位了,你是怎么保证你现在的数就是原来的数呢?除非你有备份数据,一般还是重新初始话的好,复位读ram这都是针对特定的系统的,例如电表,plc这一类,都有备份数据,据说f22的系统死机,要重启动才行,这个时候我想它应该不会去读ram吧,要是读错了,那就完了

使用特权

评论回复
16
jack.king|  楼主 | 2007-11-14 07:36 | 只看该作者

RE

我在RAM里面定义了个单元作为标志.
    就是希望复位后能再次判断定义的哪个单元才好.
     

使用特权

评论回复
17
ayb_ice| | 2007-11-14 07:56 | 只看该作者

将启动文件RAM大小改为0即可

使用特权

评论回复
18
jack.king|  楼主 | 2007-11-14 08:05 | 只看该作者

RE

是不是80H改成0H啊?

IDATALEN       
 EQU     80H     ; the length of IDATA memory in bytes.

使用特权

评论回复
19
jack.king|  楼主 | 2007-11-14 10:10 | 只看该作者

谢谢各位.问题解决了.

谢谢各位.热心的大侠.
  问题解决了
   我就添加了STARTUP.A51
  然后修改了下
   IDATALEN       
EQU     80H     ; the length of IDATA memory in bytes.
我把80H改成了00H
   不知道有没有其他的问题.
   反正复位后.标志仍然再.
 谢谢了.

使用特权

评论回复
20
gyt| | 2007-11-14 11:09 | 只看该作者

解决啦?

祝贺一下

使用特权

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

本版积分规则

488

主题

2158

帖子

1

粉丝