RAM真的被清零了
我的电路板使用STC15W4K48S4单片机,发现软件复位启动后,data和idata区间的256个字节被清零了。我的程序里没有清零指令,我把startup.a51的清零指令也删除了,但是软件复位的
时候还是被清零了。实在没办法,我把重要的参数放在pdata区间了,解决了软件复位导致
重要参数被清零的问题。
可能是STC15W4K48S4-PDIP40是早期型号,此单片机有硬件清零功能。
就算不添加startup文件,编译器也会自动生成一段启动时清除data区域的程序。
不希望被清除的参数建议放到xdata区域。pdata是xdata的低256字节,但是访问pdata的指令执行速度比访问xdata慢,所以推荐使用xdata来声明变量。 {:4_269:}明白,有没有办法找到编译器生成的清零代码,或者通过给编译器设置参数
让编译器不产生清零代码,或者其他什么办法?
试试看编译后的汇编,如果能找到位置,看能不能跳过这段. 涨知识了,还会清零啊 乘风飞扬 发表于 2024-1-4 09:36
就算不添加startup文件,编译器也会自动生成一段启动时清除data区域的程序。
不希望被清除的参数建议放到xd ...
你是如何得出pdata比xdata慢的,pdata地址只有1字节,xdata要两字节,就从取地址考虑速度都要快一倍,如果xdata比pdata快的话也就没必要从xdata中分离出256字节内存 QQ624353765 发表于 2024-1-5 09:15
你是如何得出pdata比xdata慢的,pdata地址只有1字节,xdata要两字节,就从取地址考虑速度都要快一倍,如 ...
访问pdata比访问xdata速度慢,是因为访问pdata使用 MOVXA,@Ri / MOVX@Ri,A 指令。
这个指令执行速度比访问xdata的 MOVXA,@DPTR / MOVX@DPTR,A 慢。
指令执行时钟数:
页:
[1]