乐此不疲 发表于 2022-12-13 12:24:46

请教!我的keil4-C251(5.60版)这个提示是啥意思[结贴]

本帖最后由 乐此不疲 于 2022-12-14 17:21 编辑

最近比较痴迷STC32G,keilc251软件安装、破解了挺长时间了,此前都是玩一些简单测试,代码少就没有发现问题,昨天玩TFT驱动,发现汉字字模数组稍大就无法编译,如下图。
我对电脑里按软件不熟悉,都是按照百度一步步弄的,不知道为什么这个新安装的keil4的CID号与我电脑里其他盘下原有的keil5-DMK的CID一样了,也不知道啥原因。
现在的问题如果出自注册问题,也请大神指点一下破解方法和技巧,也希望能分享一个好用的注册机。

软件注册如下图:

软件设置如下图:



这是错误提示:






zhp 发表于 2022-12-13 12:52:34

STC32G12K128的EDATA最大4K字节
你这个提示表示EDATA溢出了
将以将大的数组定义到XDATA区域

乐此不疲 发表于 2022-12-13 13:08:38

zhp 发表于 2022-12-13 12:52
STC32G12K128的EDATA最大4K字节
你这个提示表示EDATA溢出了
将以将大的数组定义到XDATA区域 ...

多谢,我以为EDATA可以存放64K呐,我的这个代码是在STC8A移植过来的,原本以为在32G128不会有问题的,看来还是要深入了解芯片的。再谢!

乐此不疲 发表于 2022-12-14 17:19:41

此贴可以结贴了,经过仔细阅读芯片手册了解到按照1楼图2的设置,变量存储区域为edata,按照手册所说edata可以有12k空间,但是这个12k其实是由edata(4k)+扩展空间的xdata(8k)组成的,原本自我的理解是这个12K空间是自动连续使用的,结果每次存储超过4K就报错,于是有了软件4k限制的疑惑,经 @zhp 的指点弄清了STC32G的情况,将数组冠名为xdata后就一切和谐了,只是这里需要注意的是C251中char(int、u8、u16)+xdata、或者(结构体变量名称)+xdata这个书写格式不能变,这一点不同于C51那么随意,另外最好在主函数声明中加入EXTRAM=1;(AUXR-B0=1;使能外部扩展寄存器的操作)这一句,这对STC32G不必要但对其他16位的STC或许就必要了。以上只是个人对芯片的一点儿了解,在此分享给大家也请高手指正并结束此贴。

8051启蒙者 发表于 2022-12-14 17:23:45

乐此不疲 发表于 2022-12-14 17:19
此贴可以结贴了,经过仔细阅读芯片手册了解到按照1楼图2的设置,变量存储区域为edata,按照手册所说edata可 ...

感谢分享技术经验~
页: [1]
查看完整版本: 请教!我的keil4-C251(5.60版)这个提示是啥意思[结贴]