[STC单片机] 各位大小xdata定义的数据到底存放到哪了?

[复制链接]
33311|13
 楼主| 6688hyc 发表于 2019-2-14 11:31 | 显示全部楼层 |阅读模式
STC89C52单片机:8k字节Flash,512字节RAM
      
   
  # define len 512
void main (void)
{
        unsigned char xdata block[len];


程序里定义了unsigned char xdata block[len];一下就占用了512字节啊,
如果在RAM里面,一下就用了全部RAM,显然不对啊
可程序还是正常运行了,什么情况???

ayb_ice 发表于 2019-2-14 13:28 | 显示全部楼层
本帖最后由 ayb_ice 于 2019-2-14 13:35 编辑

应该是没有选中使用片上XRAM选项
默认就是64K片外XRAM了

评论

@6688hyc :事实就是  发表于 2019-2-14 13:38
64K那是code rom。RAM不可能默认64k  发表于 2019-2-14 13:31
whtwhtw 发表于 2019-2-14 15:36 | 显示全部楼层
应该是使用了扩展的ram吧

评论

没有外扩ram 只有一个单片机。没有其他存储器件  发表于 2019-2-14 16:34
ningling_21 发表于 2019-2-14 16:40 | 显示全部楼层
数组元素全部都使用了?
或者即使能运行也不会太稳定
whtwhtw 发表于 2019-2-14 16:43 | 显示全部楼层
数据少,没有互相覆盖罢了;数据多了就出错了

评论

原来如此  发表于 2019-2-15 15:08
ayb_ice 发表于 2019-2-14 16:54 | 显示全部楼层
自己看

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
xbyu520 发表于 2019-2-14 20:05 | 显示全部楼层
帮忙顶贴,我觉得楼上那位师傅说的有道理,最终看output窗口比较靠谱
airwill 发表于 2019-2-14 20:52 | 显示全部楼层
片上内置 XRAM 是 256 字节, 不过编译不会出错
运行如果访问了超出的内存, 可能就是空写空读, 读不到写入的数据而数据错误.
 楼主| 6688hyc 发表于 2019-2-15 15:12 | 显示全部楼层

谢谢截图。额 我的KEIL老版本,看了看竟然没这个选项
伏尔加的鱼 发表于 2019-2-27 08:37 | 显示全部楼层
看一下数据手册 上面有说明STC89C52的512字节RAM有256是片内扩展的外部RAM,使用xdata会将数据存储在片内存储的外部ram中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

278

主题

1323

帖子

16

粉丝
快速回复 在线客服 返回列表 返回顶部