⑴ 单片机的堆栈是真么回事
在调用程序或发生中断时,必须把中断之前的一些状态信息,和程序指针等数据暂时存放在一个地方,等中断程序执行完后,再恢复之前的状态.而存放这些状态的寄存器空间,就叫堆栈
这有点像你的书桌一样,当你要上WC的时候,你会把你手上的书和笔放在书桌上,回来后,再从书桌上拿起这些.....
比如很不恰当,^_^
⑵ 单片机堆栈出栈问题
你的理解是正确的,以51为例:需要保存的参数累加器A和状态字PSW,在程序产生中断的时候,堆栈的做法是:
MOV SP,#60H
PUSH ACC
PUSH PSW
.......
...
POP PSW
POP ACC
这种做法很方便
最好还是不要用工作寄存器做,原因:R0~R7在程序中有他自己的用处,重复使用会丢失数据,如果说51有4组工作寄存器可用,那么就要面临选体的问题,这样就会很麻烦。
事实上,堆栈的设计是单片机硬件设计的一个理念,那就是尽可能的把数据按类别分开处理,就是让堆栈里的数据区别于RAM里的数据,说到底,工作寄存器也是存储数据的,本质上是一样的,但在设计单片机的时候尽可能地分开,这样可以使得单片机的功能更加强大,执行效率更高
51单片机的工作寄存器是在人啊摹RAM中统一编址的,那么还有的单片机的工作寄存器是独立出来的,也就是为了达到这个目的!
总之,既然有了 堆栈操作这匹“好马”,就没必要用别的 “破鞍”了!!
⑶ 在单片机中进出栈SP中的内容发生变化,PC中内容变化吗
单片机是不停地在执行指令,而执行指令就需要从ROM中取出指令,PC就是用来控制取指令的地址的,因此,PC中的地址即内容是不停地变化的。再说进出栈操作,SP中的内容变化,可不管是怎么进出栈操作,如ACALL,LCALL,RET,RETI,POP,PUSH等操作,都是在执行指令,而且执行指令后还要转移到指定的地址处,因此,PC中的内容肯定是变化的。
⑷ 单片机进出栈问题
这个题重点不在60H是什么数,因为60H是随机数。而且它也不是我们关心的数,
这个题主要考入栈出栈的顺序,出栈后A=02H,B=01H,实现了一个数据交换。
⑸ 简述51单片机堆栈进栈和出栈操作规则
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单片机构成,前端数据采集由超声波测距,系统由发射和接
收装置来获取数据,根据所测得的距离来判断是否调用声音报警程序,距离小于
预置点时,调用报警模块。
⑹ 80C51 单片机堆栈区的进栈和出栈遵循的原则是
80C51 单片机堆栈区的进栈和出栈遵循的原则是后进先出。
⑺ 单片机出栈 入栈的对象只能是什么
单片机出栈 入栈的对象只能可直接寻址的内部存储器和除了R寄存器以外的寄存器。
POP 30H
POP B
POP 80H;实际是弹出到P0
以上都是正确的。
POP R1
这就是错误的。
⑻ 51单片机两次进栈再两次出栈会实现什么功能
摘要 2.堆栈的方式
⑼ 单片机程序中什么情况需要关中断压栈和出栈就不要说了!
在处理重要的数据和程序时,不能被打断的时候 会把中断关了,比如系统初始化的时候会把所以可屏蔽中断都关掉,但是一般都把很重要的程序放在优先级高的中断中处理。
⑽ 51单片机进栈和出栈地址修改的方向
修改SP寄存器的值,就可以修改进栈出栈的地址。