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

2022-04-16 科技 115阅读
51的硬件结构要求堆栈从下往上压入(方向是从低字节RAM到高字节RAM)。
如果堆栈指针设置的太低,那么你的低字节RAM就无法使用了。
比如,SP复位后的值是07H,
如果不调整指针,那么工作寄存器1~3区,以及30H附近的RAM就无法使用;
所以,一般单片机复位以后,运行一条MOVSP,#60H的语句,将堆栈指针设置为60H;
这样,全部工作寄存器区以及30H~5FH的RAM空间用户就可以使用;
60H~7FH的堆栈范围也足够3级子程序或中断嵌套;
当然,如果子程序或中断只有1级或最多2级嵌套,
那么也可将SP设为70H,这样就能留出更多的RAM空间;
但是要注意SP压栈操作时,值一定不能到达80H,那可是P0口。

根据实际情况再定吧,上面说的只是一般情况,
如果你的RAM使用不多,但是子程序或中断特别多,那么你的SP就必须要设低了。
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com