当前位置:首页 > 技术心得 > 正文内容

Keil C51编译错误:address space overflow

xjtudll14年前 (2012-05-15)技术心得41300

近日在使用Keil的时候,遇到了一个问题:address space overflow。程序最初编译的时候没这问题,当我增加一段代码后,出现了这个问题。经网上搜索,发现根本原因是:data只能是RAM中的前128个,变量超过128个时会出现ADDRESS SPACE OVERFLOW

  解决办法:  

1、将一些变量定义成idataxdata

  2、将keil的编译模式设置成Large

附录1Keil C51 dataidataxdata等区别 

1data:固定指前面0x00-0x7f128RAM,可以用acc直接读写的,速度最快,生成的代码也最小。
2idata:固定指前面0x00-0xff256RAM,其中前128data128完全相同,只是因为访问的方式不同。idata是用类似C中的指针方式访问的。汇编中的语句为:mox ACC,@Rx.(不重要的补充:cidata做指针式的访问效果很好)
 
3xdata:外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。
4 pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx ACC,@Rx读写。这个比较特殊,而且C51好象有对此BUG,建议少用。

 

clip_image002

附录二、Keil C51编译模式SmallCompactLarge区别

 

1Small模式

  所有缺省变量参数均装入内部RAM,优点是访问速度快,缺点是空间有限,只适用于小程序。

2Compact模式

所有缺省变量均位于外部RAM区的一页(256Bytes),具体哪一页可由P2口指定,在STARTUP.A51文件中说明,也可用pdata指定,优点是空间较Small为宽裕,速度较Small慢,较large要快,是一种中间状态。

3large模式
所有缺省变量可放在多达64KB的外部RAM区,优点是空间大,可存变量多,缺点是速度较慢。

  提示:存储模式在C51编译器选项中选择。

 

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://www.xjtudll.cn/Exp/233/

标签: keil51C
分享给朋友:

“Keil C51编译错误:address space overflow” 的相关文章

Xcode ios模拟器下载及安装教程

Xcode ios模拟器下载及安装教程

1 通过Xcode下载 最新版的Xcode安装后,通常只带最新ios系统的模拟器。例如,Xcode 5.01就只带了ios7.03的模拟器。通过Xcode可以下载早期版本的模拟器。 Xcode->Preferences->Downloads Downloads下的Components就...

如何从远程桌面复制文件

如何从远程桌面复制文件

工作学习中,经常需要用到远程桌面,远程桌面确实很方便,但每次要将本地的东西拷贝到远程电脑或将远程电脑上的东西拷贝到本地时,都是用U盘来传递文件,这样就相当不方便了。近日,偶然看了远程桌面的帮助,发现其本身就是带文件复制、粘贴功能的,只是默认没有开启而已。 第一步:在远程桌面连接窗口,单击【选项】,...

远程桌面事件ID20499,没有明显的问题

问题:收到ID为20499的TerminalServices-RemoteConnectionManager警告事件,错误是:对于用户管理员来说,远程桌面服务花费的时间太长,无法从服务器\ server.domain.home加载用户配置。但是,找不到任何问题解决办法:在注册表编辑器中,找到并单击以...

itunes connect上传截图提示无法载入文件

itunes connect上传屏幕快照时,老提示“无法载入文件,请再试一次”。 可以肯定:图片格式和尺寸没问题。而且如果这俩有问题的话,会有相关提示的。 原因:文件名包含中文。 另外路径有中文没关系!...

Quartus II计数器仿真:31之后变成字符

Quartus II计数器仿真:31之后变成字符

计数器波形仿真,在执行到31时会突然变成[] ! 之类的符号。如图: 原因: 信号的显示格式选择成了ASCII码,当数值等于ASCII码符号区的时候就会显示为符号了。 解决办法: 1、选择要显示的信号,右键,属性(Properties) 2、将显示格式改成自己所需的,一般是Hexadecimal...

数模转换器主要技术指标

数模转换器主要技术指标

分辨率 指DAC能分辨的最小输出模拟增量,取决于输入数字量的二进制位数。 也可用DAC能分辨出来的最小输出电压1 LSB与最大输出电压FSR之比定义分辨率。 分辨率通常用数字量的位数表示,一般为8位、12位、16位等。一个n位的DAC所能分辨的最小电压增量定义为满量程值的2-n倍。例如,满...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。