STC_STC 发表于 2023-5-29 18:42:15

STC8H1K17 data容量问题




为什么data=110.1 就报错了?

神农鼎 发表于 2023-5-29 18:48:50

STC8H1K08-36I-TSSOP20, 8k 程序空间,1024 * 8 = 8192字节

梁工 发表于 2023-5-29 22:49:04

code超容量了,8K是8192,最后的一些字节还要保存一些参数。
编译器提示的data,是包括idata的(没有分开计数),一共256,但是直接访问的只能是低128字节。

STC_STC 发表于 2023-5-30 14:10:47

神农鼎 发表于 2023-5-29 18:48
STC8H1K08-36I-TSSOP20, 8k 程序空间,1024 * 8 = 8192字节

不好意思,我写太急,用的是K17

STC_STC 发表于 2023-5-30 14:12:38

梁工 发表于 2023-5-29 22:49
code超容量了,8K是8192,最后的一些字节还要保存一些参数。
编译器提示的data,是包括idata的(没有分开计 ...

不好意思,我写太急,看我标题,是K17,只不过截图太急是K08.ROM是没有超的。data总共使用了,110.1,按理说也没有超过128,但是编译不成功。

电子DIY小家 发表于 2023-5-30 15:53:30

STC_STC 发表于 2023-5-30 14:12
不好意思,我写太急,看我标题,是K17,只不过截图太急是K08.ROM是没有超的。data总共使用了,110.1,按 ...

多的变量放xdata里去

梁工 发表于 2023-5-30 16:02:25

STC_STC 发表于 2023-5-30 14:12
不好意思,我写太急,看我标题,是K17,只不过截图太急是K08.ROM是没有超的。data总共使用了,110.1,按 ...

能否贴完整编译提示?我看到说目标没生成,但是下面的原因没看到了。
虽然,你用了101.1个data,但是编译器会分配局部变量,就可能超过了。
将一部分变量定义到idata或xdata看看,如果有数组,则优先将数组放在xdata。

STC_STC 发表于 2023-5-31 08:25:15

梁工 发表于 2023-5-30 16:02
能否贴完整编译提示?我看到说目标没生成,但是下面的原因没看到了。
虽然,你用了101.1个data,但是编译 ...

谢谢,目标没有生成的原因是因为RAM超过了。我定义部分变量到idata,编译就可以了。
我奇怪编译显示110个数据,按道理没有超过128,不过看了你的回复,应该是局部变量分配超过了,编译器分配局部变量是默认data类型吗?我把部分变量用idata定义后,编译是可以了。
如果像这样的局部分配变量有没有办法查看用了多少?谢谢。

梁工 发表于 2023-5-31 10:10:54

STC_STC 发表于 2023-5-31 08:25
谢谢,目标没有生成的原因是因为RAM超过了。我定义部分变量到idata,编译就可以了。
我奇怪编译显示110个 ...

看来确定了,你用了101.1个data,但是编译器会分配局部变量,这样直接寻址的data就超了。

liuyuhe 发表于 2023-6-8 21:28:42

梁工 发表于 2023-5-31 10:10
看来确定了,你用了101.1个data,但是编译器会分配局部变量,这样直接寻址的data就超了。 ...

单片机一些外设的寄存器放在了xdata里那可用部分是不是就不够了,比如8h1k08有1k的xdata,可用的部分是不是要减掉寄存器占用的那些
页: [1] 2
查看完整版本: STC8H1K17 data容量问题