单片机中写程序时为什么要抬高堆栈指针?

 我来答
天边之约
推荐于2016-11-30 · TA获得超过1487个赞
知道小有建树答主
回答量:420
采纳率:0%
帮助的人:245万
展开全部
51的硬件结构要求堆栈从下往上压入(方向是从低字节RAM到高字节RAM)。
如果堆栈指针设置的太低,那么你的低字节RAM就无法使用了。
比如,SP复位后的值是07H,
如果不调整指针,那么工作寄存器1~3区,以及30H附近的RAM就无法使用;
所以,一般单片机复位以后,运行一条MOV SP,#60H的语句,将堆栈指针设置为60H;
这样,全部工作寄存器区以及30H~5FH的RAM空间用户就可以使用;
60H~7FH的堆栈范围也足够3级子程序或中断嵌套;
当然,如果子程序或中断只有1级或最多2级嵌套,
那么也可将SP设为70H,这样就能留出更多的RAM空间;
但是要注意SP压栈操作时,值一定不能到达80H,那可是P0口。

根据实际情况再定吧,上面说的只是一般情况,
如果你的RAM使用不多,但是子程序或中断特别多,那么你的SP就必须要设低了。
joyoustech
2013-01-02 · TA获得超过1874个赞
知道小有建树答主
回答量:1465
采纳率:71%
帮助的人:1308万
展开全部
51单片机在用汇编语言写程序时常这样,堆栈是从上向下压,默认的堆栈指针往下就压到工作寄存器里了,而写程序时经常用到工作寄存器,怕有冲突,建议改到RAM的顶端。
其他单片机一般不用这样做。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
二弼萌8
2013-01-02 · TA获得超过666个赞
知道小有建树答主
回答量:1159
采纳率:0%
帮助的人:335万
展开全部
你这问题描述的不清楚啊?
堆还是栈?
那类单片机?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式