导航:首页 > 操作系统 > 单片机pc入栈

单片机pc入栈

发布时间:2023-04-15 09:45:29

A. PC是一个特殊功能寄存器 ,那它是如何控制单片机执行程序的详细说明一下!~ 我是初学者~ 谢谢!

PC是指程序代码指针,是一个指向程序代码的地址。单片机内部的ALU工作,每次都按PC中的地址到代码段取出需要执行的指令,然后执行,PC的值会自动加1,即自动跳向下一条指令。
因此改变PC的值,就可以控制单片机执行程序的走向,但PC的值是不允许用户通过指令赋值的,但可以利用中断等时PC需要入栈、返回需要出栈的操作通过堆栈来改变,从而改变程序的走向,在uC/OS-II中就是这么实现任务切换的。

B. MCS-51单片机在响应中断过程中,PC如何变化

响应中断时,PC先将断点地址(就是执行完该语句的下一条语句的首字节地址)压入堆栈(先入低字节,再入高字节),然后将对应的中断入口地址装入PC,接下来就是执行中断服务子程序。中断结束后再从堆栈中弹出两字节的断口地址装入PC;返回到前面的断点处。

T0的中断入口地址是0x000B,这就是响应中断后的PC值。

(2)单片机pc入栈扩展阅读:

中断响应是硬件对中断请求作出响应的过程,包括识别中断源,保留现场,引出中断处理程序等过程。

① CPU在当前指令执行结束时,响应中断,进入中断的响应周期;

② 发出二个中断回答信号INTA完成一个中断响应周期;

③ 进行断点及标志保存

如:将段地址(CS),偏移地址(IP)标志FR以及压入堆栈。

④ 读取中断类型号,找到中断源;

⑤ 装入中断服务程序的入口地址(CS,IP)

C. 单片机堆栈指令

PUSH 30H ;61H中的值变为24H,SP:61H,其他不变
PUSH 31H ;62H中的值变为10H,SP:62H,其他不变
POP DPL ;DPL:10H,SP:61H,其他不变
POP DPH ;DPH:24H,SP:60H,其他不变
MOV 30H,#00H ;30H:00H,其他不变
MOV 31H,#0FFH ;31H:0ffH,DPL:10H,SP:61H,其他不变

D. 关于单片机在调用子程序时,进行了怎样的堆栈操作

“断点的PC值入栈,还有哪些东西呢?”
取决于子程序的类型和编程方式。有些特殊类型的子程序是需要入栈的,若采用高级语言编程则编译器会自动添加相应的入栈出栈语句。

“有人说临时变量不入栈,那CPU从子程序运行退回断点时,临时变量的值是如何恢复的呢?”
呵呵,为何要恢复?调用子程序的时候会从局部变量块中新分配空间的,如同你后半部分所说。

E. 简述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为绝对转移指令,转移目的在指令后一个

F. 51单片机中断后 PC指针进栈需要占用时间吗

要,但这个是“中断”本身完成的事情(不是中断后),更不是在中断程序的一部分

阅读全文

与单片机pc入栈相关的资料

热点内容
博科清空命令 浏览:384
简爱英文pdf 浏览:376
cnc编程有前途吗 浏览:586
联想app怎么联网 浏览:722
linuxftp命令登录 浏览:1000
android获取图片缩略图 浏览:646
神户制钢螺杆压缩机 浏览:29
差分演化算法 浏览:567
中山市加密软件 浏览:446
mc反编译源码 浏览:139
企业商城网站源码 浏览:411
shell脚本编程是什么 浏览:762
单片机led闪烁汇编 浏览:203
点淘app怎么没金蛋了 浏览:878
app拉新哪里找推广码 浏览:935
哪个app生活服务好 浏览:108
mht安卓用什么软件打开 浏览:320
html5即时通讯源码 浏览:144
python编程基础豆瓣 浏览:710
程序员乱码是什么意思 浏览:372