打印
[STC单片机]

keil 编译时 地址空间溢出

[复制链接]
3381|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
望断云山| | 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很有限的还有多种用途...

使用特权

评论回复
5
ayb_ice| | 2014-6-7 10:11 | 只看该作者
还没有入门呢

看三大编译模式吧

使用特权

评论回复
6
yao1318| | 2014-6-8 19:11 | 只看该作者
没遇见过,帮顶

使用特权

评论回复
7
chenhengjin| | 2014-6-8 21:33 | 只看该作者
51单片机的内部RAM是128字节,不是512字节,128~255字节是SFR(特殊功能寄存器),超出的都会存放到扩展RAM中,最大可以扩展64K外部RAM

使用特权

评论回复
8
coody| | 2014-6-9 11:17 | 只看该作者
对51和KEIL不熟悉造成的。

直接DATA访问0~127,128~255用idata访问,再多的用xdata。

使用特权

评论回复
9
peter_wjp| | 2014-7-8 22:42 | 只看该作者
不要选择那个large模式,选择了程序十有**不能正常运行,建议如果是非变量,直接就在程序之前声明然后数组的话,类型为code,这样直接编译时候是写到ROM里的
其他的话 就用xdata,STC会根据内存空间自动分配是否在RAM里

使用特权

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

本版积分规则

2

主题

2

帖子

0

粉丝