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

 我来答
古荣花祝诗
2019-01-13 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.4万
采纳率:33%
帮助的人:693万
展开全部
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就必须要设低了。
羊合英红嫣
2019-03-25 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:24%
帮助的人:973万
展开全部
你好!
51单片机在用汇编语言写程序时常这样,堆栈是从上向下压,默认的堆栈指针往下就压到工作寄存器里了,而写程序时经常用到工作寄存器,怕有冲突,建议改到RAM的顶端。
其他单片机一般不用这样做。
我的回答你还满意吗~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式