zxcv1973 发表于 2024-10-21 18:20:13

const和code要结合使用,两者就不是一类的东西,严格的讲code就不能算常数,只是51指令集里code区域没有写指令,但251指令集里有

QQ624353765 发表于 2024-10-21 18:21:08

zxcv1973 发表于 2024-10-21 18:20
const和code要结合使用,两者就不是一类的东西,严格的讲code就不能算常数,只是51指令集里code区域没有写 ...

没明白

zxcv1973 发表于 2024-10-21 18:23:54

health 发表于 2024-10-21 12:45
c251有bug,用code修饰变量需放在函数外面,做全局变量。
如果局部变量用code修饰,则运行异常,看汇编代码 ...

这不算BUG,251架构里code区域里可不是不能修改的,有写code区域的指令,严谨的话定义常数就应该加const

zxcv1973 发表于 2024-10-21 18:27:38

QQ624353765 发表于 2024-10-21 18:21
没明白

const unsigned char code aa={......};

QQ624353765 发表于 2024-10-21 19:11:34

zxcv1973 发表于 2024-10-21 18:23
这不算BUG,251架构里code区域里可不是不能修改的,有写code区域的指令,严谨的话定义常数就应该加const ...

我试了下用code定义的数组是修改不了的

health 发表于 2024-10-21 19:20:23

QQ624353765 发表于 2024-10-21 19:11
我试了下用code定义的数组是修改不了的

c251可以编译出写code地址区域的指令,但是对于具体的芯片例如stc是不支持这种操作的。写code也就是flash需要IAP特殊步骤。
据悉STC计划推出带指令RAM的251型号,那种应该code可写了。

QQ624353765 发表于 2024-10-21 19:21:19

zxcv1973 发表于 2024-10-21 18:27
const unsigned char code aa={......};

那问题来了,在函数内没用const定义的code数组是什么意思,该怎么正确使用

柒柒学不会 发表于 2024-10-27 11:59:18

以前发现过C51编译器里const和code要分别放在变量类型的前面和后面,不然编译就报错
像const unsigned char code这样命名和声明
不知道C251是不是也是类似的原理
页: 1 [2]
查看完整版本: keilC251定义常量使用code还是const