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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keil C51中的data怎么设置成大一点的值?相关的知识,希望对你有一定的参考价值。

keil C51中的data超过了110多就报错,data就超了;

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

还请各位高手指点指点!
补充:不要说更换芯片、设置成xdata、缩减代码之类的,我需要的是怎么设置成更大的RAM,谢谢!!

在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 ()这个方法会降低重入函数的执行速度

参考技术A 楼主没有搞清楚 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的东西
会对你有帮助本回答被提问者采纳
参考技术B data不是数据类型,是keil编译器的一个关键字,用来声明变量存储的位置的。
若一个变量声明为data,那么它就是存放在单片机低128byte的ram区的。
数据类型是char int long这些,本质上就是用来声明一个变量是占用多少字节的存储空间的。
举个例子,int a;int bdata a;int data a;
a这个变量都是整形,占用两个字节的存储空间,但通过加关键字“bdata”和“data”声明了之后,存放的位置会比较确定。
不加该关类键字的话,编译器有可能把它分配在bdata区或者data区。
参考技术C 以我的知识,keil不允许自己设置ram大小。都由芯片决定。

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

楼主仔细看看芯片手册?如果确定有512字节data,务必告诉我使用何种汇编语句直接访问data。

keil 怎么不优化

参考技术A Target Options >> C/C++选项卡 ,efoCTX本回答被提问者采纳 参考技术B Target Options -》C51页中,Code optimization组里,选择需要的优化级别即可。 参考技术C 优化,谁说不优化。

以上是关于keil C51中的data怎么设置成大一点的值?的主要内容,如果未能解决你的问题,请参考以下文章

keil 4编译C51程序出现警告:UNRESOLVED EXTERNAL SYMBOL SYMBOL: DATA 求解释。

keil C51中函数调用无法正确返回怎么回事

在keil环境中遍了一段C51的程序后怎么编译?

keil c51安装完之后怎么用

Keil C51 编译错误 undefined identifier

如何在打开方式里添加keil c51和keil arm