找回密码
 立即注册
查看: 1646|回复: 10

STC8H1K17 data容量问题

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:287
  • 最近打卡:2025-03-27 14:28:57

24

主题

79

回帖

273

积分

中级会员

积分
273
发表于 2023-5-29 18:42:15 | 显示全部楼层 |阅读模式
STC8H1K17 data容量问题-1.png


STC8H1K17 data容量问题-2.png 为什么data=110.1 就报错了?

回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:112
  • 最近打卡:2025-06-29 00:35:48

741

主题

1万

回帖

1万

积分

管理员

积分
17190
发表于 2023-5-29 18:48:50 | 显示全部楼层
STC8H1K08-36I-TSSOP20, 8k 程序空间,1024 * 8 = 8192字节
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:106
  • 最近打卡:2025-06-28 00:08:16

75

主题

6163

回帖

1万

积分

超级版主

积分
12942
发表于 2023-5-29 22:49:04 | 显示全部楼层
code超容量了,8K是8192,最后的一些字节还要保存一些参数。
编译器提示的data,是包括idata的(没有分开计数),一共256,但是直接访问的只能是低128字节。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:287
  • 最近打卡:2025-03-27 14:28:57

24

主题

79

回帖

273

积分

中级会员

积分
273
发表于 2023-5-30 14:10:47 | 显示全部楼层
神*** 发表于 2023-5-29 18:48
STC8H1K08-36I-TSSOP20, 8k 程序空间,1024 * 8 = 8192字节

不好意思,我写太急,用的是K17
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:287
  • 最近打卡:2025-03-27 14:28:57

24

主题

79

回帖

273

积分

中级会员

积分
273
发表于 2023-5-30 14:12:38 | 显示全部楼层
梁*** 发表于 2023-5-29 22:49
code超容量了,8K是8192,最后的一些字节还要保存一些参数。
编译器提示的data,是包括idata的(没有分开计 ...

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

点评

能否贴完整编译提示?我看到说目标没生成,但是下面的原因没看到了。 虽然,你用了101.1个data,但是编译器会分配局部变量,就可能超过了。 将一部分变量定义到idata或xdata看看,如果有数组,则优先将数组放在xdata  详情 回复 发表于 2023-5-30 16:02
多的变量放xdata里去  详情 回复 发表于 2023-5-30 15:53
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:136
  • 最近打卡:2025-06-19 15:40:05

47

主题

1350

回帖

8056

积分

荣誉版主

冲哥视频教程和各种开源资料QQ交流群884047237,可群

积分
8056
QQ
发表于 2023-5-30 15:53:30 | 显示全部楼层
STC_*** 发表于 2023-5-30 14:12
不好意思,我写太急,看我标题,是K17,只不过截图太急是K08.ROM是没有超的。  data总共使用了,110.1,按 ...

多的变量放xdata里去
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:106
  • 最近打卡:2025-06-28 00:08:16

75

主题

6163

回帖

1万

积分

超级版主

积分
12942
发表于 2023-5-30 16:02:25 | 显示全部楼层
STC_*** 发表于 2023-5-30 14:12
不好意思,我写太急,看我标题,是K17,只不过截图太急是K08.ROM是没有超的。  data总共使用了,110.1,按 ...

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:287
  • 最近打卡:2025-03-27 14:28:57

24

主题

79

回帖

273

积分

中级会员

积分
273
发表于 2023-5-31 08:25:15 | 显示全部楼层
梁*** 发表于 2023-5-30 16:02
能否贴完整编译提示?我看到说目标没生成,但是下面的原因没看到了。
虽然,你用了101.1个data,但是编译 ...

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

点评

看来确定了,你用了101.1个data,但是编译器会分配局部变量,这样直接寻址的data就超了。  详情 回复 发表于 2023-5-31 10:10
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:106
  • 最近打卡:2025-06-28 00:08:16

75

主题

6163

回帖

1万

积分

超级版主

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

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

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-06-22 11:54:45

9

主题

23

回帖

211

积分

中级会员

积分
211
发表于 2023-6-8 21:28:42 | 显示全部楼层
梁*** 发表于 2023-5-31 10:10
看来确定了,你用了101.1个data,但是编译器会分配局部变量,这样直接寻址的data就超了。 ...

单片机一些外设的寄存器放在了xdata里那可用部分是不是就不够了,比如8h1k08有1k的xdata,可用的部分是不是要减掉寄存器占用的那些

点评

寄存器放在差不多是最后的地址,前面还有至少60K的地址,8h1k08才1K的xdata,60K还是空地址。  详情 回复 发表于 2023-6-8 22:30
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-29 15:55 , Processed in 0.176068 second(s), 106 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表