打印
[STC单片机]

各位大小xdata定义的数据到底存放到哪了?

[复制链接]
32930|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了

使用特权

评论回复
评论
ayb_ice 2019-2-14 13:38 回复TA
@6688hyc :事实就是 
6688hyc 2019-2-14 13:31 回复TA
64K那是code rom。RAM不可能默认64k 
板凳
whtwhtw| | 2019-2-14 15:36 | 只看该作者
应该是使用了扩展的ram吧

使用特权

评论回复
评论
6688hyc 2019-2-14 16:34 回复TA
没有外扩ram 只有一个单片机。没有其他存储器件 
地板
ningling_21| | 2019-2-14 16:40 | 只看该作者
数组元素全部都使用了?
或者即使能运行也不会太稳定

使用特权

评论回复
5
whtwhtw| | 2019-2-14 16:43 | 只看该作者
数据少,没有互相覆盖罢了;数据多了就出错了

使用特权

评论回复
评论
6688hyc 2019-2-15 15:08 回复TA
原来如此 
6
ayb_ice| | 2019-2-14 16:54 | 只看该作者
自己看

无标题1.png (192.55 KB )

无标题1.png

无标题2.png (212.67 KB )

无标题2.png

使用特权

评论回复
7
xbyu520| | 2019-2-14 20:05 | 只看该作者
帮忙顶贴,我觉得楼上那位师傅说的有道理,最终看output窗口比较靠谱

使用特权

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

使用特权

评论回复
9
6688hyc|  楼主 | 2019-2-15 15:12 | 只看该作者

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

使用特权

评论回复
10
伏尔加的鱼| | 2019-2-27 08:37 | 只看该作者
看一下数据手册 上面有说明STC89C52的512字节RAM有256是片内扩展的外部RAM,使用xdata会将数据存储在片内存储的外部ram中

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

278

主题

1323

帖子

16

粉丝