打印
[MM32软件]

单片机堆栈

[复制链接]
168|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
szt1993|  楼主 | 2025-3-29 21:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且 堆栈有特定的数据传输指令,即PUSH和POP,有一个特殊的专为其服务的单元,即堆栈指针SP。 每当执一次 PUSH指令时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原来值基础上)自动减1。

由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP值,就可以把堆栈设置在规定的内存单元中,如在程序开始时用一条MOV SP,#5FH指令,就时把堆栈设置在从内存单元60H开始的单元中。一般程序的开头总有这么条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元 始往后。08H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成混乱。不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。当设置好堆栈区,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情下编程者不会把它当成普通内存用了。

使用特权

评论回复
沙发
幸福小强| | 2025-3-31 10:16 | 只看该作者
堆栈在使用C语言编程 时候体现在哪些地方

使用特权

评论回复
板凳
hehhehee| | 2025-3-31 13:11 | 只看该作者
你可以把堆栈想象成一个装东西的箱子,每次你往里面放东西时,放的东西会叠在已经存在的东西上,而当你取东西时,总是拿最后放进去的那一个。

使用特权

评论回复
地板
jf101| | 2025-3-31 23:04 | 只看该作者
单片机堆栈学习一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

317

主题

2510

帖子

6

粉丝