[STC单片机] keil 编译时 地址空间溢出

[复制链接]
3914|8
 楼主| 笑看风云-TT 发表于 2014-6-6 22:35 | 显示全部楼层 |阅读模式
data只用了165就溢出,stc-89c51 RAM 不是有512吗?怎么还是溢出的呢? keil 我已经增加了STC的数据库。 请高手指点。

本帖子中包含更多资源

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

×
望断云山 发表于 2014-6-6 22:57 | 显示全部楼层
从256开始就是xdata了吧
kamen588 发表于 2014-6-7 08:46 | 显示全部楼层
在small模式下 未指定存储类型的变量默认为data ,data有128字节 可以直接寻址,但是并不是全部分配给变量,其中通用寄存器组0 要占8个字节 ,用于主程序,因此超过120字节的变量就要溢出 。
可以用 idata修饰 idata为间接寻址 速度稍慢,可以把速度要求不严格的变量放在idada 或者放在xdata片外RAM, xdata的访问速度是最慢的。

用idata 或者xdata修饰一些变量 就可解决
ningling_21 发表于 2014-6-7 08:50 | 显示全部楼层
程序中的全局变量尽量使用外部RAM,内部的RAM很有限的还有多种用途...
ayb_ice 发表于 2014-6-7 10:11 | 显示全部楼层
还没有入门呢

看三大编译模式吧

yao1318 发表于 2014-6-8 19:11 | 显示全部楼层
没遇见过,帮顶
chenhengjin 发表于 2014-6-8 21:33 | 显示全部楼层
51单片机的内部RAM是128字节,不是512字节,128~255字节是SFR(特殊功能寄存器),超出的都会存放到扩展RAM中,最大可以扩展64K外部RAM
coody 发表于 2014-6-9 11:17 | 显示全部楼层
对51和KEIL不熟悉造成的。

直接DATA访问0~127,128~255用idata访问,再多的用xdata。
peter_wjp 发表于 2014-7-8 22:42 | 显示全部楼层
不要选择那个large模式,选择了程序十有**不能正常运行,建议如果是非变量,直接就在程序之前声明然后数组的话,类型为code,这样直接编译时候是写到ROM里的
其他的话 就用xdata,STC会根据内存空间自动分配是否在RAM里
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

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