在keil中怎样才能修改单片机堆栈的指针,十万火急!!!!!

我用的STC单片机只有256字节的SRAM。我想修改堆栈指针,多释放一些内存,在主程序系统初始化的时候,我的程序是:SP=0xA0;但是堆栈指针设置没有成功。后来又在ke... 我用的STC单片机只有256字节的SRAM。我想修改堆栈指针,多释放一些内存,在主程序系统初始化的时候,我的程序是:SP=0xA0;但是堆栈指针设置没有成功。后来又在keil的STARTUP.A51修改堆栈指针,还是没有成功。请问各位大侠,在keil中怎样才能修改单片机堆栈的指针,急啊,谢谢!! 展开
 我来答
ghost4063
2011-03-12 · TA获得超过6522个赞
知道大有可为答主
回答量:2940
采纳率:75%
帮助的人:2767万
展开全部
释放内存不应该用改SP的办法来实现,效果不好,而且很危险,KEIL已经为你考虑到了各种情况,你乱改,程序反而会出错。
节约内存办法有很多,1、尽量用格式小的数据,能用char不用int,能用bit不用char;
2、尽量少定义全局变量
3、将几个不会同时用到的变量定义到同一个地址上去,当然在定义的时候要想清楚
4、尽量避免大数组,如果必须用,也尽量用指针来替换
5、减少函数嵌套
所以说,内存就像水,挤挤总能有的,关键是你用不用心
追问
谢谢仁兄啦,你这个说法我很同意,但我必要定义100字节左右的常量数组。如果让keil自动为你分配SP的话,如果是256内存的话你只能用到137字节左右,其它的都被占用了。不过我的问题已解决了,就像仁兄你说的,挤了挤牙膏:)!!!!
追答
如果是常量数组,那就在定义的时候增加code关键字,这样就不占用内存了
匿名用户
2011-03-12
展开全部
用C语言你就不要自找麻烦了,keil会自动修改堆栈指针,你如果改了还会导致程序出错,

如果你用汇编语言那就要重设栈指针(MOV SP,#XXX )
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一剑出血
高粉答主

2011-03-11 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部
1. 你怎么判断出没有成功的?
2. 堆是堆,栈是栈,不要混为一谈。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-03-12
展开全部
不知道这个型号的,但8051可以用指令就行了,如:MOV SP,#30H
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式