不同MCU的堆栈在使用细节上有所区别,不过意思都差不多,暂时以X86为例。
X86堆栈就是一段程序初始化时指定的内存空间,用来暂存需要保存的数据。这个空间访问时要涉及两个指针寄存器。一个是基点(SS),其值不变,永远指向堆栈段的最小地址;另一个寄存器(SP)的值为堆栈空间的剩余大小,两者相加就是当前生效的堆栈地址。SP在遇到PUSH时减少,在遇到POP时增加,其指向的地址在堆栈区域内不断变化;当SP的值为0时就表示堆栈用光了。
入栈(PUSH)就是将一个数据存入SP指向的当前堆栈地址,然后SP指向堆栈内的下一个存储空间;出栈(POP)就是让SP返回前一个存储空间,然后读出这个地址内存储的数据。
堆栈的优势就是暂存数据时不用管到底存在哪了,只要按照后进先出的原则就可以保证恢复数据;缺点就是不能通过堆栈操作跳着访问栈内数据。
51单片机堆栈是在片内RAM区实现的能先进后出的一个存储区域,由SP寄存器实现数据的入栈和出栈,当有数据入栈时,比如PUSH
ACC,此时SP先加一,然后把ACC中的内容存到SP所指向的内存单元中。出栈时,比如POP
ACC,此时先把SP所指向的内存单元(栈顶单元)内容送到ACC中,然后SP减一
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单片机构成,前端数据采集由超声波测距,系统由发射和接
收装置来获取数据,根据所测得的距离来判断是否调用声音报警程序,距离小于
预置点时,调用报警模块。
在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。在计算机领域,堆栈是一个不容忽视的概念,堆栈是一种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。
堆栈是一个特定的存储区或寄存器,它的一端是固定的,另一端是浮动的。对这个存储区存入的数据,是一种特殊的数据结构。所有的数据存入或取出,只能在浮动的一端(称栈顶)进行,严格按照“先进后出”的原则存取,位于其中间的元素,必须在其栈上部(后进栈者)诸元素逐个移出后才能取出。在内存储器(随机存储器)中开辟一个区域作为堆栈,叫软件堆栈;用寄存器构成的堆栈,叫硬件堆栈。
扩展资料:
栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据在多个线程或者多个栈之间是不可以共享的,但是在栈内部多个值相等的变量是可以指向一个地址的,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。
参考资料来源:百度百科-栈
参考资料来源:百度百科-堆栈
入栈是指将前面的电路块的结果存入临时寄存器,需要与后面的电路共同作用时用读栈指令,最后输出用出栈指令,虽然都要是并联输出,但读栈与出栈指令都有相关的元件或电路块与前面的临时结果共同作用再产生输出
单片机入栈是什么意思的介绍到此就结束了,感谢您耐心阅读,谢谢。
本文标签:单片机入栈是什么意思