① 什么是堆栈堆栈指针的SP的作用是什么8051单片机堆栈容量不超过多少字节
堆栈:堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶对数据项进行插入和删除。在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。
SP的作用是在51单片机中,SP栈指针是一个专用的8位寄存器,系统复位后,SP初始化为07H,使得堆栈指针实际上是由08H单元开始。
51堆栈的容量最大也不会超过128字节。
② 单片机的堆栈是怎样工作的
单片机中的堆栈是1个连续的存储区,采取后入先出的方式存取数据。1般PUSH操作是向堆栈中存入数据,POP操作从堆栈取得数据。PUSH的操作顺序和POP的操作顺序正好相反,例如有A.B.C.D4个变量的值,依照PUSH
A,PUSH
B,PUSH
C和PUSH
D存入堆栈,则需要用POP
D,
POP
C,
POP
B,POP
A的顺序提取。如果ABCD的类型字长1致,则堆栈还可用来交换变量的值,例如PUSH
A,PUSH
B,然后用POP
A,
POP
B来实现A和B两个变量值的互换。但这样的操作不是所有单片机都支持。
③ 求解单片机原理题1、请说明80C51单片机的堆栈的作用和操作规律。补考试题,求解,急急急
1.堆栈用于响应中断或调用子程序时保护断点地址,也可通过栈操作指令(push
和pop保护和恢复现场)其中入栈时先SP+1再将内容压入当前SP所指示的堆栈单元
中,出栈则先将SP所指示的内部ram单元中内容送入直接地址寻址的单元中,再将
SP减1.
2.中断允许寄存器的功能是控制CPU对中断的开放和屏蔽以及每个中断源是否允许
中断结构包括EA(CPU中断总允许位),ES(串行口中断允许位)ET1(定时器1中
断允许位)EX1(外部中断1中断允许位)ET0(定时器0中断允许位)EX0(外部中
断0中断允许位)
3.T机=12/fosc=12/(6*E6)=2us
X=2*E13-T/T机=8192-200/2=8092=1F9CH=1111 1100 1110 0B
因为TL1的高3位未用, 修正后X=1111 1100 0001 1100B=FC1CH
4.LJMP为长转移指令,可转向64KB程序存储器的任一单元;SJMP为相对转移指令
,偏移范围-128~+127共259字节;AJMP为绝对转移指令,转移目的在指令后一个
存储单位所在2K区间内。
5.按键抖动:在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按
键一次按下或释放被错误认为是多次操作。
6.汽车的温控系统,测控系统,防盗报警等多项系统中应用单片机。汽车电子中
涉及A/D和D/A转换的模块基本都会有单片机的存在。以下以汽车倒车雷达为例,
雷达控制部分由89C51单片机构成,前端数据采集由超声波测距,系统由发射和接
收装置来获取数据,根据所测得的距离来判断是否调用声音报警程序,距离小于
预置点时,调用报警模块。
④ 51单片机堆栈是什么意思可以对哪些单元堆栈
堆栈的功能就是先进后出,这样可以非常简单的解决子程序调用和中断(其实是特殊的子程序调用)问题,主要是嵌套的返回,用堆栈能准确的找到返回点。51单片机的堆栈是向上生长的,其实可以利用片内RAM中没用到的一切空间(当然得是连续的),复位后堆栈指针指向07H,一般从30H开始使用,就是复位后将堆栈指针指向30H,一定要弄清楚中断还有子程序调用时单片机是怎么压栈,返回时是怎么出栈的,利用堆栈可以让中断返回时返回到指定的地方,这招很绝。
⑤ 单片机编程里面,堆栈怎么理解
堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且堆栈有特殊的数据传输指令,即‘PUSH’和‘POP’,有一个特殊的专为其服务的单元,即堆栈指针SP,每当执一次PUSH指令时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原来值的基础上)自动减1。由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP的值,就可以把堆栈设置在规定的内存单元中,如在程序开始时,用一条MOV SP,#5FH指令,就时把堆栈设置在从内存单元60H开始的单元中。一般程序的开头总有这么一条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后,而08H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成数据的混乱。不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。当设置好堆栈区后,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内存用了。
参考资料来源:吴鉴鹰吧
贡献文档:网络文库《吴鉴鹰单片机项目实战精讲》
单片机开发板学习参考:吴鉴鹰单片机开发板(视频教程详细,资源丰富,适合学习)
⑥ 单片机种堆栈的作用,为什么搞个堆栈SP放那呢
别老说“堆栈堆栈”的,堆是堆,栈是栈,二者完全不是一个概念。
SP是51单片机的栈指针,用于为程序的运行提供并维护栈(也就是通用的先进先出队列)。51单片机的栈是向上生长的,所以一般连接器会在分配完所有的RAM块后将SP放在地址最高处。由于SP是个“指针”,所以栈操作都是间接寻址的。
对于C语言编程的用户而言,几乎不涉及到对SP的操作。
⑦ 什么叫堆栈8051堆栈指示器SP有多少位,作用是什么单片机初始化话后SP中的内容是什么
堆栈是连续的内存单元,存取方式遵循“先进后出”的原则。
其作用一般是保存寄存器或标志寄存器的内容。
堆栈就是这样一种数据结构。它是在内存中开辟一个存储区域,数据一个一个顺序地存入(也就是“压入——push”)这个区域之中。有一个地址指针总指向最后一个压入堆栈的数据所在的数据单元,存放这个地址指针的寄存器就叫做堆栈指示器。开始放入数据的单元叫做“栈底”。数据一个一个地存入,这个过程叫做“压栈”。在压栈的过程中,每有一个数据压入堆栈,就放在和前一个单元相连的后面一个单元中,堆栈指示器中的地址自动加1。读取这些数据时,按照堆栈指示器中的地址读取数据,堆栈指示器中的地址数自动减
1。这个过程叫做“弹出pop”。如此就实现了后进先出的原则。
sp是一个8位专用寄存器,它批示出堆栈顶部在内部ram块中的位置。系统复位后,sp初始化为07h,实际上堆栈是由08h单元开始的。考虑08h~1fh单元分别属于工作寄存器区1~3,若在程序设计中用到这些区,则最好把sp值改值为1fh或更大的值。
sp是一个8位专用寄存器,它批示出堆栈顶部在内部ram块中的位置。系统复位后,sp初始化为07h,实际上堆栈是由08h单元开始的。考虑08h~1fh单元分别属于工作寄存器区1~3,若在程序设计中用到这些区,则最好把sp值改值为1fh或更大的值。
mcs-51的堆栈是向上生成的,若sp=60h,cpu执行一和调用指令或者响应中断后,pc进栈,pcl保护到61h,pch保护到62h,sp=62h。
⑧ 在单片机里什么叫做堆栈
堆栈其实是一种数据结构,存入数据不需要地址,只需要PUSH和POP操作就可以实现数据的存储和取出,以先进后出为规则,数据操作全部都是在栈顶,有堆栈指针SP指向栈顶, 比如响应中断时CPU将当前处理的数据全部压入堆栈,转而执行中断程序,等到中断程序执行结束,在用POP操作取出栈顶的数据,继续刚刚被中断的操作,这在微机中就是微机响应中断保护现场。
⑨ 单片机-堆栈有何作用复位时SP=07H吗为什么要设SP.....
我来详细讲一下吧。
复位的时候SP等于07,堆栈的用处是存储数据,举个例子:
如果你现在不修改SP,那SP就等于07H。
假如你的A是等于6的,你执行PUSH
ACC,之后,你的SP就变成08H了,如果你再执行一句
MOV
08H,#3,你的08H单元之前本来是6,现在变成3了,你再执行POP
ACC,此时A等于3了。
无法恢复了。
一般我们都要重新设置SP,一般SP=70H就够用了。堆栈区间就是70H到7FH,这样你就不会冲突了。
⑩ 单片机数据堆栈的特点是什么
单片机数据堆栈的特点是先入后出,后入先出。可以理解为一个饼干筒,先存入的数据在下层,后存入的数据在上层,要取数据,得从上层开始先取。
堆栈指针在寄存器SP中,默认情况下为SP=07H,可以通过MOV指令改变堆栈指针的地址。