软件复位不清零RAM
使用STC15W4K48S4单片机,用keil c51编程,在Startup.a51文件中添加什么汇编指令,可以在软件复位时,不清零data和pdata存储区的数据? 自己清就行了 希望冷启动时清零,软件复位时不清零。 liuyang21168 发表于 2023-12-29 23:03
希望冷启动时清零,软件复位时不清零。
这个好像有点难把,,,我记得是xdata好像是复位之后 不清零的,,但是你要冷启动清零软件复位不清零这个,,可以看看冷启动和软件复位在寄存器标志位上有什么区别,,然后根据这个区别做不同的处理? 单片机执行内部复位时,是否清零data存储区?
如果单片机不是强制清零data存储区,就有办法。 楼主这个操作比较麻烦, 因为 太老土的STC15F/STC15W 系列, 没有设置专用的 复位标志寄存器, 所以 不能像 STC8/STC32 系列 那样, 通过 专用的 复位标志寄存器, 来区分 冷启动和软件复位, 然后根据这个不同, 做出不同的处理. 目前想到的解决方案有两个:
1. 在软件复位前, 先在 内存 RAM 中 设置 某个数, 然后在 Startup.a51文件中, 根据内存 RAM 中 这个数值 不同, 做出不同的处理.
2. 纯软件模拟复位(老土的 8051 通用), 将复位 地址 定位在 main() 函数处, 直接跳过 Startup.a51 的执行. 不能帮用户清 xdata 的,很多客人会做标志,
几个字节到几百个字节的特殊标志,自己复位后判断:自己前面发生啥事了
===当年有所谓的高手骂我们,就是我们好心帮清了 RAM
我们有个客人,他系统 00:00 自动软复位一次,外界感觉不到
神农鼎 发表于 2023-12-30 10:18
不能帮用户清 xdata 的,很多客人会做标志,
几个字节到几百个字节的特殊标志,自己复位后判断:自己前面发 ...
确实听说有这么玩的,,,
不过我还是倾向于,软复位了之后,所有东西应该恢复到初始值balabala
不过确实自己没有这么玩过... 神农鼎 发表于 2023-12-30 10:18
不能帮用户清 xdata 的,很多客人会做标志,
几个字节到几百个字节的特殊标志,自己复位后判断:自己前面发 ...
像这种 标志 肯定是存在eeprom里面啊
页:
[1]
2