STC89C52RC单片机程序里定义了一288Byte的数组,报错了

[复制链接]
2334|7
 楼主| 凤鸣 发表于 2016-5-4 20:10 | 显示全部楼层 |阅读模式
STC89C52RC单片机RAM为512B,但是我在程序里定义了一个数组,占288Byte,可是编译却提示“ 'DATA': SEGMENT TOO LARGE”,(实际使用需求,此数组不能定义为code),是KEIL里要修改什么?还是头文件reg52.h要换一下?为什么会提示内存超了呢
 楼主| 凤鸣 发表于 2016-5-4 20:29 | 显示全部楼层
我知道,虽然为512B的RAM,但内部只有256B的,还有256B为外扩的RAM(虽然也在芯片内部),是不是一个数组长不能超过256B,因为一个变量只能存在内部RAM或外部RAM任意单个中。
ayb_ice 发表于 2016-5-4 21:00 来自手机 | 显示全部楼层
分在不同空间,用不同的指令访问,所以不能定义那么大的连续空间
wztoad 发表于 2016-5-4 21:26 | 显示全部楼层
我用hotelk  时数组长度是有限制的,c51应该都差不多,分成两个数组就行了
linqing171 发表于 2016-5-4 21:55 | 显示全部楼层
data肯定放不开了,别说R0-R7用了一些,还有bit和堆栈呢。
最好都放xdata 里面,如果xdata 够大的话。如果资源很紧张就拆开。
unsigned char xdata BigArray[258];
这样可能可以。
 楼主| 凤鸣 发表于 2016-5-4 22:23 | 显示全部楼层
确实有道理啊
江枫渔火 发表于 2016-5-5 12:26 | 显示全部楼层
请关注 XDATA
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

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