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

[复制链接]
30949|13
 楼主 | 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,显然不对啊
可程序还是正常运行了,什么情况???

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

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

使用特权

评论回复
| 2019-2-14 15:36 | 显示全部楼层
应该是使用了扩展的ram吧

使用特权

评论回复
| 2019-2-14 16:40 | 显示全部楼层
数组元素全部都使用了?
或者即使能运行也不会太稳定

使用特权

评论回复
| 2019-2-14 16:43 | 显示全部楼层
数据少,没有互相覆盖罢了;数据多了就出错了

使用特权

评论回复

评论

6688hyc 2019-2-15 15:08 回复TA
原来如此 
| 2019-2-14 16:54 | 显示全部楼层
自己看
无标题1.png
无标题2.png

使用特权

评论回复
| 2019-2-14 20:05 | 显示全部楼层
帮忙顶贴,我觉得楼上那位师傅说的有道理,最终看output窗口比较靠谱

使用特权

评论回复
| 2019-2-14 20:52 | 显示全部楼层
片上内置 XRAM 是 256 字节, 不过编译不会出错
运行如果访问了超出的内存, 可能就是空写空读, 读不到写入的数据而数据错误.

使用特权

评论回复
 楼主 | 2019-2-15 15:12 | 显示全部楼层

谢谢截图。额 我的KEIL老版本,看了看竟然没这个选项

使用特权

评论回复
| 2019-2-27 08:37 | 显示全部楼层
看一下数据手册 上面有说明STC89C52的512字节RAM有256是片内扩展的外部RAM,使用xdata会将数据存储在片内存储的外部ram中

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /7 下一条

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