单片机程序的运行过程分为几个步骤:取指令、分析指令和执行指令。
取指令的任务是根据程序计数器PC中的值从程序存储器中读取当前指令,并发送到指令寄存器。
指令分析阶段的任务是从指令寄存器中取出指令操作码并解码,分析其指令属性。如果指令需要操作数,寻找操作数地址。其实计算机执行程序的过程就是一个个重复上述操作过程,遇到关机指令循环等待指令。一般的计算机工作时,首先要通过外部设备,通过输入接口电路和数据总线,将程序和数据发送到内存中,然后逐个取出执行。而单片机中的程序一般都是由编写器提前固化在片内或片外程序存储器中。因此,该指令可以在启动时执行。
下面我们将举例说明指令的执行过程:
启动时,程序计算器的PC变为0000H。然后在时序电路的作用下,单片机自动进入执行程序的过程。执行过程实际上是取指令(取预先存储在内存中的指令)和执行指令(分析和执行指令)的循环过程。
比如执行指令:MOV A,#0E0H,其机器码为“74H E0H”。该指令的作用是将操作数E0H送入累加器,其中74H已存入000H单元,E0H已存入0001H单元。单片机开始运行时,第一步是进入取指阶段,顺序如下:
1.程序计数器的内容(此时为0000H)被发送到地址寄存器;
2程序计数器的内容自动加1(改为0001H);
3.地址寄存器(0000H)的内容通过内部地址总线发送到存储器,利用存储器中的地址对信号进行解码,从而选择地址为0000H的单元;
4 CPU使读取控制线有效;
5在读命令的控制下,所选存储单元(此时应该是74H)的内容被发送到内部数据总线。因为它是提取级,所以内容通过数据总线发送到指令寄存器。
此时,提取阶段完成,进入解码分析和指令执行阶段。
由于这次进入指令寄存器的内容是74H(操作码),经过解码器解码后,单片机就知道指令是给A累加器发送一个数字,这个数字在这个代码的下一个存储单元。因此,要执行这个指令,还必须从内存中取出数据(E0H)并发送给CPU,即必须从内存中取出第二个字节。过程和取数阶段很像,只是PC已经是0001H了。指令译码器,结合定时单元,产生74H操作码的微操作序列,使数字E0H从0001H单元中取出。因为指令要求将获取的编号发送到A累加器,所以获取的编号通过内部数据总线而不是指令寄存器进入A累加器。此时,指令的执行完成。单片机中PC=0002H,每次CPU从内存中取数据或取数据,PC自动加1,单片机进入下一个取数据阶段。重复该过程,直到接收到暂停指令或循环等待暂停指令。CPU就是这样一条条执行指令,完成所有指定的功能。
ROM是存储程序代码的只读存储器;RAM是一个数据存储器,用来存储单片机运行时的数据。也就是说,RAM中的数据在断电(复位)后会消失,而ROM中的数据不会。
中断的主要作用是保护现场。计时器用于精确计时和长时间计时。听不懂就问我!
中断通过硬件改变CPU的运行方向。在计算机程序执行过程中,当发生CPU以外的事情时,服务对象向CPU发送中断请求信号,要求CPU暂时中断当前程序的执行,转而执行相应的处理程序,处理程序执行完毕后继续执行被中断的程序。这类程序在执行过程中由于外部原因中途中断,称为“中断”。
“中断”后执行的相应处理程序通常称为中断服务程序或中断处理子程序。
原来正常运行的程序叫做主程序。
主程序断开的位置(或地址)称为“断点”。
中断的原因,或者可以发出中断申请的来源,称为“中断源”。
来自中断源的服务请求称为“中断请求”(或中断应用)。
当硬件电路向中央处理器发送中断信号时,它为主程序设置一个断点,然后响应中断请求。中断内容完成后,继续在断点处执行主程序。
本文来源于网络。如果原作者不支持我们转发,请联系我们删除。谢谢!
技术来自积累,成功来自坚持
1.《运行指令 单片机中一个程序的运行过程详解》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《运行指令 单片机中一个程序的运行过程详解》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guoji/1176617.html