liuyang21168 发表于 2023-12-29 22:59:49

软件复位不清零RAM

使用STC15W4K48S4单片机,用keil c51编程,在Startup.a51文件中添加什么汇编指令,可以在软件复位时,
不清零data和pdata存储区的数据?

神农鼎 发表于 2023-12-29 23:00:53

自己清就行了

liuyang21168 发表于 2023-12-29 23:03:59

希望冷启动时清零,软件复位时不清零。

_奶咖君_ 发表于 2023-12-30 08:51:03

liuyang21168 发表于 2023-12-29 23:03
希望冷启动时清零,软件复位时不清零。

这个好像有点难把,,,我记得是xdata好像是复位之后 不清零的,,但是你要冷启动清零软件复位不清零这个,,可以看看冷启动和软件复位在寄存器标志位上有什么区别,,然后根据这个区别做不同的处理?

liuyang21168 发表于 2023-12-30 10:00:19

单片机执行内部复位时,是否清零data存储区?
如果单片机不是强制清零data存储区,就有办法。

LAOXU 发表于 2023-12-30 10:12:08

楼主这个操作比较麻烦, 因为 太老土的STC15F/STC15W 系列, 没有设置专用的 复位标志寄存器, 所以 不能像 STC8/STC32 系列 那样, 通过 专用的 复位标志寄存器, 来区分 冷启动和软件复位, 然后根据这个不同, 做出不同的处理.

LAOXU 发表于 2023-12-30 10:17:57

目前想到的解决方案有两个:

1. 在软件复位前, 先在 内存 RAM 中 设置 某个数, 然后在 Startup.a51文件中, 根据内存 RAM 中 这个数值 不同, 做出不同的处理.

2. 纯软件模拟复位(老土的 8051 通用), 将复位 地址 定位在 main() 函数处, 直接跳过 Startup.a51 的执行.

神农鼎 发表于 2023-12-30 10:18:13

不能帮用户清 xdata 的,很多客人会做标志,
几个字节到几百个字节的特殊标志,自己复位后判断:自己前面发生啥事了
===当年有所谓的高手骂我们,就是我们好心帮清了 RAM


我们有个客人,他系统 00:00 自动软复位一次,外界感觉不到

_奶咖君_ 发表于 2023-12-30 14:57:01

神农鼎 发表于 2023-12-30 10:18
不能帮用户清 xdata 的,很多客人会做标志,
几个字节到几百个字节的特殊标志,自己复位后判断:自己前面发 ...

确实听说有这么玩的,,,

不过我还是倾向于,软复位了之后,所有东西应该恢复到初始值balabala

不过确实自己没有这么玩过...

泰勒soc 发表于 2023-12-30 15:47:00

神农鼎 发表于 2023-12-30 10:18
不能帮用户清 xdata 的,很多客人会做标志,
几个字节到几百个字节的特殊标志,自己复位后判断:自己前面发 ...

像这种 标志 肯定是存在eeprom里面啊
页: [1] 2
查看完整版本: 软件复位不清零RAM