历史上的今天
今天是:2025年05月14日(星期三)
2019年05月14日 | 51单片机--堆栈
2019-05-14 来源:eefocus
子程序或中断程序时保护现场,因为51单片机的寄存器是十分有限的,而相对来说普通数据存储器更充足,通过入栈将寄存器中的内容临时保存到堆栈中(普通数据存储器),这是一个用时间换取空间的编程方式。
51单片机的堆栈是向上生长的,就是堆栈不为空时,栈底地址小于栈顶地址,当将数据入栈时,栈顶地址增加。还有一个技巧是,堆栈是数据存储器的一部分,也就是说堆栈除了利用push和pop访问,也可以通过普通的选址方法访问,例如mov。有时我们想访问堆栈数据,但不想改动变动栈顶,这时可以通过mov来访问数据。还有一个书上很少提到的知识点是出栈之后,原来那个栈顶的内容并不会清零,所以我们依然可以像对待普通数据存储器一样访问。
下面通过教科书上的一个变成例子讲解一下堆栈:
初始状态
(A)=02H,(SP)=52H,(51H)=FFH,(52H)=FFH
POP DPH
POP DPL
出栈两次,SP=SP-2=50H
MOV DPTR,#4000H
(DPTR)=4000H
RL A
(A)=04H
MOV B,A
(B)=04h
MOVC A,@A+DPTR
(A)=30H
PUSH Acc
SP=SP+1=51H,(51H)=30H
MOV A,B
(A)=04H
INC A
(A)=05H
MOVC A,@A+DPTR
(A)=50H
PUSH Acc
SP=SP+1=52H,(52H)=05H
RET
(PCH)=50H,(PCL)=30H,SP=SP-2=50H
ORG 4000H
DB 10H,80H,30H,50H,30H,50H
上一篇:51单片机最简LED驱动
下一篇:51单片机原理及应用--片内结构
史海拾趣
|
今天早上5点中突然醒了,好像有个概念不知道什么时候出现在我大脑------编译器代码优化。前两天一直解决不了的程序乱跳和代码优化有没有关系,立马翻看工具手册提到了4种代码优化级别,编译器默认最好的优化,最好的优化,是最差的调试视图。我改了 ...… 查看全部问答> |
|
拿到了心仪已久的X86系列的NTC929板子,打开包装,给人的感觉总是那么舒心和愉悦。拿到手了,进行简单测评一下。 本板式一款高性能、低功耗3.5’的嵌入式工业主板,该板采用了Intel Siliverthorn+Poulsbo芯片组,板载IntelSilverthorn(Intel Atom ...… 查看全部问答> |
|
我的WINCE系统 可以PING通局域网内其他PC的IP 但是 连接外网的时候就不行, 我主要是想在局网内打印(特性目录中PCL Print driver添加进去了) ,打印IE浏览器的时候 点 file/print 没反应! 我用的是HP的激光打印机支持PCL的!是不是 ...… 查看全部问答> |
|
程序在WM5.0的设备上运行时,如果菜单项超过两项时,菜单栏的颜色就会变成淡蓝色,而不是原来默认的颜色。 请问有没有办法是菜单栏的颜色不改变或是将菜单栏的颜色设置一下呢?? 用C++… 查看全部问答> |
|
activesync4.2无法通过usb连接pc与wince5.0 我使用致远(周立功) MagicARM2410教学实验开发平台及配套光盘中的wince镜像 按照试验指导书安装evc4.0 及activesync4.2及相关软件 但pc机始终无法使用activesync4.2通过usb与wince建立连接 pc端的activesync4.2会显示正在连接 但约一分钟后 会显 ...… 查看全部问答> |
|
请问:我在运行evc的工程时,提示我说sdk 不能运行在emulator device,这是什么原因呀? 错误为: an application targeting a Standard SDK for Windows CE.NET and built for the MIPSII_FP CPU cannot be run on the Emulator device.In order to run this application on any CPU other than the Emulator,you will have to install ...… 查看全部问答> |
|
用stm32l152芯片控制mma7455l遇到的一个问题! 我使用stm32l152模拟IIC接口控制mma7455l加速的传感器。 iic驱动程序,对加速的传感器的0x16控制寄存器的访问是完全正确,例如先向0x16寄存器写入0x45,然后可以正确的读取到0x45。 但是读取数据寄存器0x06、0x07、0x08和地址寄存器0x0d的时候却不 ...… 查看全部问答> |




