C51变量定位

[复制链接]
4059|12
 楼主| xzy568 发表于 2011-2-21 22:24 | 显示全部楼层 |阅读模式
使用以下语名时,会提示内存用尽,堆栈没有空间,请问如何解决?
idata unsigned char aa _at_ 0xff
liguohuihui 发表于 2011-2-22 00:07 | 显示全部楼层
coody 发表于 2011-2-22 00:24 | 显示全部楼层
为何如此用?不用指针?
ayb_ice 发表于 2011-2-22 08:29 | 显示全部楼层
编译器会把堆栈定位在所有变量之后,你把aa放大0xff处,请问堆栈定位在何处呢...
chen3bing 发表于 2011-2-22 08:37 | 显示全部楼层
改变一个地址试试。
 楼主| xzy568 发表于 2011-2-22 13:34 | 显示全部楼层
主要是STC在这个地址有值可读,所以这样用,不想用指针来做
有没有什么好的方法,不用指针的话
xwj 发表于 2011-2-22 13:38 | 显示全部楼层
自己去打开Keil自带的“ABSACC.H”看看
ayb_ice 发表于 2011-2-22 14:53 | 显示全部楼层
换个地址就行了,建议至少放在0xff-64之前
makesoft 发表于 2011-2-22 16:12 | 显示全部楼层
呵呵,楼上留的栈可够大的,一般情况下留个30~40栈空间应该够用了.
 楼主| xzy568 发表于 2011-2-22 18:27 | 显示全部楼层
另外使用指针和使用ABSACC.H库的函数有什么区别啊?感觉差不多啊?
sunshitao 发表于 2011-2-24 22:45 | 显示全部楼层
unsigned char  const * p;
p=(unsigned  char * ) 0xff;
对指针p进行操作就可以了
不锈钢铁 发表于 2011-2-25 09:25 | 显示全部楼层
还得学学
刘前辈 发表于 2011-2-25 18:18 | 显示全部楼层

不用自己作指针,很简单:

本帖最后由 刘前辈 于 2011-2-25 18:36 编辑

#include<absacc.h>
#define  aa   DBYTE [ 0xff ]     // 给 idata  0xff 单元赋予一个名字aa 。而不是定义全局变量。
main( )
{
aa=0x12;

while(1);
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

284

帖子

2

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