有时候我必须选择一个人过冬 习惯在冰天雪地里追梦

51的冷复位与热复位

上一篇 / 下一篇  2007-04-25 19:24:04 / 个人分类:工作备忘

STC51单片机的看门狗导致的复位跟热复位在复位效果方面没什么两样,复位后用户RAM区(SFR会初始化)
内容仍然保持不变(冷启动后用户RAM区的内容为随机数),利用这个特性可以在用户RAM区保存被控设备
工作状态,然后在程序的开头增加一段代码,检查POF标记,如果是热启动则根据RAM区的数据恢复设备
的工作状态(冷启动则跳过恢复状态),这样万一硬件受到外来强干扰、程序跑飞而产生了看门狗复位,
瞬间就能恢复被控设备的工作状态。用keil C时,会自动加入startup.a51这段初始化代码,这段代码
执行在main()函数之前,如果不对这段代码加以处理,每次系统复位时都会先执行这段代码从而把用户
RAM区清零。

编辑startup.a51,发现有用户RAM清零代码如下:
IDATALEN EQU 80H   ;定义被清零的用户RAM区为80H个字节
……
IF IDATALEN <> 0
MOV R0,#IDATALEN - 1   ;循环,清零
CLR A
IDATALOOP: MOV @R0,A
DJNZ R0,IDATALOOP
ENDIF
……
把“IDATALEN EQU 80H”改成“IDATALEN EQU 0H”,重新编译后,startup.a51就不会清除用户
RAM区内容了。

TAG: 工作备忘

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-12-03  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 28546
  • 日志数: 189
  • 图片数: 24
  • 文件数: 6
  • 书签数: 4
  • 建立时间: 2006-04-20
  • 更新时间: 2008-11-30

RSS订阅

Open Toolbar