A. 51单片机的堆栈区只可设置在什么地方
51的栈只可设置在片内RAM的间接寻址区,即 idata 区域中。
另外,栈是栈,堆是堆,不要混为一谈。
B. 单片机编程里面,堆栈怎么理解
堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且堆栈有特殊的数据传输指令,即‘PUSH’和‘POP’,有一个特殊的专为其服务的单元,即堆栈指针SP,每当执一次PUSH指令时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原来值的基础上)自动减1。由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP的值,就可以把堆栈设置在规定的内存单元中,如在程序开始时,用一条MOV SP,#5FH指令,就时把堆栈设置在从内存单元60H开始的单元中。一般程序的开头总有这么一条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后,而08H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成数据的混乱。不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。当设置好堆栈区后,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内存用了。
参考资料来源:吴鉴鹰吧
贡献文档:网络文库《吴鉴鹰单片机项目实战精讲》
单片机开发板学习参考:吴鉴鹰单片机开发板(视频教程详细,资源丰富,适合学习)
C. 51单片机的堆栈区在那里低128还是高128字节单元
寻址区
30H~7FH:一般数据区,堆栈区
寄存器组就是R0-R7,一共是8*4是32字节
位寻址就是对每一位寻址,一个字节可以有8位,位地址可以从0-7F,一共是16个字节
30-7FH有80个字节单元,可以采用字节字节寻址的方法访问
堆栈区及堆栈指示区 堆栈是在片内RAM中数据先进后出的一个存储区域。堆栈指针SP是存放当前堆栈栈顶所对应的存储单元地址的一个8位寄存器。系统复位后SP为07H,而07H一般是寄存器区,所以,一般可以通过对SP赋值,可以使堆栈区设定在RAM中的某一区域,但堆栈的深度以不超过片内RAM区空间为限
D. MCS-51单片机的堆栈区一般应建立在什么区
MCS-51单片机的堆栈区一般应建立在什么区?
51单片机上电后堆栈指针为07H,堆栈区建在07H以上的内部RAM区,这是1区的工作寄存器所在的存储区,不合适。所以应该将堆栈区建立在内部RAM的低128字节区的70H~7FH范围内比较好。这样留出16个字节,还是够用的。
对于52单片机,内部RAM有256个字节,把堆栈区放在高128字节就更好了,可以放在E0H~FFH区,这样,就留出32个字节了。
E. 80C51 单片机堆栈区的进栈和出栈遵循的原则是
80C51 单片机堆栈区的进栈和出栈遵循的原则是后进先出。
F. 单片机复位 堆栈区
单片机复位后进入初始化状态。初始化后,程序计数器PC=0000H,。单片机启动后,片内RAM为随机值,运行中的复位操作不改变RAM的内容。但特殊功能寄存器复位后的状态时确定的,也就是说与运行中的可能不同,但由于程序的运行,其内容最终还是要恢复到程序运行时的状态。
G. MCS―51单片机的堆栈区只可设置在__,堆栈寄存器5P是__位寄存器
正确答案是:MCS-51单片机的堆区只能在RAM__中设置。堆栈寄存器SP是8__位寄存器。
在汇编语言中,SP寄存器是指堆栈指针寄存器,用于堆栈操作。PUSH和POP指令用于从SP寄存器获得当前堆栈段中的偏移量。因此,SP寄存器被称为堆栈指针,SP总是指向堆栈的顶部。
堆栈是计算机中广泛使用的一种技术。基于栈的zd数据进出后进先出特性,常用于保存中断断点、保存子程序调用的返回点、保存CPU字段数据等,也可用于在程序之间传递参数。
(7)单片机堆栈区扩展阅读:
为了更准确地描述了堆栈,据的增减方向堆栈指针操作期间压栈,栈分为“增加堆栈”(SP的方向变化较大的值)和“减少栈”(SP的变化方向的小值)。
根据SP指向的存储单元是否包含堆栈数据,将堆栈分为“满栈”(SP点单元包含堆栈有效数据)和“空栈”(SP点单元不包含堆栈有效数据)。
堆栈模式有四种:全递增、空递增、全递减和空递减。
ARM处理器的堆栈操作非常灵活,并且支持所有四种类型的堆栈。
H. 51单片机堆栈区设在RAM中的具体范围
又翻了翻课本找到的:
00-1F
R0-R3
20-2F
位寻址区
30-7F
用户RAM区(此为数据缓冲和堆栈区)
I. STC15单片机的堆栈应该定义在哪里
MCS-51单片机的堆栈原则上设在内部RAM的任意区域内,可以用寄存器SP来设置栈顶地址。
但是,一般设在31H~7FH的范围之间,栈顶的位置由栈指针SP指出。堆栈区及堆栈指示区堆栈是在片内RAM中数据先进后出的一个存储区域。堆栈指针SP是存放当前堆栈栈顶所对应的存储单元地址的一个8位寄存器。
程序设计时,往往需要一个后进先了的RAM区,以保存CPU的现场。这种后进先出的缓冲区,就称为堆栈。堆栈其实就是一块存储器区域,51单片机中可以用寄存器SP来设置栈顶地址,压栈操作,地址是往上加的,出栈则地址往下减。遵循后进先出原则。
J. AT89S51单片机的堆栈区应建立在哪
AT89S51单片机的堆栈区应建立在内部RAM的较高的地址区域内。
而AT89S51内部RAM区,用户可用的最大地址是7FH。在一般情况下,堆栈区留出16个单元就足够用了。
所以,设置SP的初始值为6FH即可,就从70H开始使用了。
不过,通常是用汇编写程序可以设置SP初始值,而用C语言写程序一般是不用考虑的。
对于AT89S51,内部RAM的80H以上的地址是SFR的地址,是不能作堆栈区的。
要是AT89S52,内部RAM最大地址是FFH,那80H的地址区是可以用间址寻址的,才可以作椎栈区的。