keil C51中的data怎么设置成大一点的值?

keilC51中的data超过了110多就报错,data就超了;现在我的芯片有512字节的RAM,要怎么设置keil,才能使软件的data不报错?还请各位高手指点指点!补... keil C51中的data超过了110多就报错,data就超了;

现在我的芯片有512字节的RAM,要怎么设置keil,才能使软件的data不报错?

还请各位高手指点指点!
补充:不要说更换芯片、设置成xdata、缩减代码之类的,我需要的是怎么设置成更大的RAM,谢谢!!
展开
 我来答
lclbdbk
2010-02-10 · TA获得超过224个赞
知道答主
回答量:69
采纳率:0%
帮助的人:84.4万
展开全部

在keil里面选择正确的单片机型号,各种型号对应了特定的ram

比如:89c51的128 Bytes On-chip RAM。比如将那些不改变的变量定义为code,比如unsigned char code a;可以用外扩的数据存储器,定义XDATA来改变变量的存储地方,比如XDATA signed char a;设置options for the target里面的target,如图。

资源不够你可以减少没有用到的定义变量,或者是精简变量,能用char的就用char,

WARNING L15,大多是函数可重入性函数的问题,比如说主函数条调用某个函数abc();中断里面也调用了这个函数,而你定义的这个函数是不可重入得函数,就会L15警告。解决由两个方法,重新顶一个一样的函数,就是函数名字不一样,分别在主函数和中断里面各自调用函数,另一种就是在函数abc()加入reentrant 可重入性。reentrant abc ()这个方法会降低重入函数的执行速度

百度网友0ad5d59
2010-02-11 · TA获得超过1192个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:571万
展开全部
楼主没有搞清楚 51的 结构.
楼上说的虽然大多是废话,,对你的项目可以没多少帮助
但是至少有一点是对的..设置成xdata可以解决你的问题.
虽然不是什么好办法.

51的 ram 分外三种.
内部直接寻址你的128byte 内部间接的128byte
还有就是外部 ram

你的51单片机有512byte
那么肯定是 内部 直接 间接各128
外加外部256字节

你把那些大一点的数据全部改成 xdata 声明就可以了.
当然如果你会控制ram大小的话..用idata 声明效率更好一点
例如 unsigned char yy;
写个成 unsigned char xdata yy;

(你看你自己的编译结果显示 data=137, xdata=0, code=4856
就应该猜测一下 xdata 干吗用的了

最后 建议楼主. 最好不用在keil c51里面使用printf函数(浪费啊)
回去.仔细看一遍51的结构..然后看看keil c51的区别于ansi c的东西
会对你有帮助
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9f9f6e43d
2010-02-15 · 超过24用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:62.6万
展开全部
以我的知识,keil不允许自己设置ram大小。都由芯片决定。

512字节的internal ram?我没见过。。。
因为512字节的ram寻址需要2个字节,而data一般只用一个字节寻址。
所以很难想象存在512的data空间。
甚至data区只有128字节,包括寄存器占用的。
因为另128字节地址作为sfr被访问。
所以超过128的internal ram都用idata方式来访问。

楼主仔细看看芯片手册?如果确定有512字节data,务必告诉我使用何种汇编语句直接访问data。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
du瓶邪
推荐于2018-05-17 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2907万
展开全部
data不是数据类型,是keil编译器的一个关键字,用来声明变量存储的位置的。
若一个变量声明为data,那么它就是存放在单片机低128byte的ram区的。
数据类型是char int long这些,本质上就是用来声明一个变量是占用多少字节的存储空间的。
举个例子,int a;int bdata a;int data a;
a这个变量都是整形,占用两个字节的存储空间,但通过加关键字“bdata”和“data”声明了之后,存放的位置会比较确定。
不加该关类键字的话,编译器有可能把它分配在bdata区或者data区。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式