一、单片机程序执行过程
单片机的工作过程实质就是执行程序的过程,也就是我们常说的逐条执行指令的过程。单片机每执行一条指令均可分为三个阶段: 取出指令、分析(译码)指令、执行指令。大多数8位单片机的取指、译码、执行这三步都是按照串行顺序依次进行的。32位单片机的这三步也是必不可少的,但是它是采用预取指令的流水线方式操作,并采用精简指令集,每条指令都是单周期指令,所以它允许指令并行操作。
例如再取出第一条指令后, 开始对这条指令译码的同时,取出第二条指令; 在第一条指令执行时, 第二条指令 开始译码,然后取出第三条指令,第二条指令同时执行如此循环。从而使CPU在同一时间对不同指令实现不同操作,这样就实现了指令的并行处理,大大加快指令的执行速度。
二、单片机执行指令的三个阶段
- 1、取指令阶段:根据程序计数器PC的值,从程序存储器读出当前要执行的指令,并将该指令送到指令寄存器。
- 2、指令译码阶段:取出指令寄存器中的指令操作码进行译码,解析出指令要实现那种操作。(例如是执行数据传送还是进行数据的加减运算)
- 3、执行指令阶段:执行指令规定的操作。(例如对于 带操作数的指令,先取出操作码,再取出操作数,然后按照,操作码的类型对操作数进行操作)
三、单片机工作过程
单片机采用“存储程序”的工作方式,即事先把程序加载到单片机的存储器中,当启动运行后,计算机便自动进行工作。
1、执行一条指令的顺序
单片机执行程序是一条指令执行的, 执行一条指令的过程可分为两个阶段。在单片机中,“存储程序” 第一条指令的第一 个字节一 定是操作码。这样,CPU首先进入取指阶段,从存储器中取出指令,并通过CPU译码后,转入执行指令阶段,在这期间,CPU执行指令指定的操作。取指阶段是由一系列相同的操作组成的,因此,取指阶段的时间总是相同的。而执行指令的阶段是由不同的事件顺序组成的,它取决于被执行指令的类型。执行完一条指令后接着执行下一条指令,如此循环往复。
2、执行一条指令的过程
LDA指令的指令周期由3个CPU周期(即机器周期)组成。其中,第一个CPU周期为取指令周期;执行指令阶段由2个CPU周期组成,第二个CPU周期中将操作数的地址送往地址寄存器并完成地址译码,在第三个CPU周期中,从内存取出操作数并执行装入的操作。
3、执行一个程序的过程
采用直接址方式,加入程序存放在起始地址为00010000B (16) 的存储单元中。地址16和17存放第一条指令”LDA23”,单片机启动后,PC中的地址即为16,将16送地址寄存器,接着16被放入地址总线上,找到操作码地址00010000B (16) ,PC自动加1为17,做好取下一字节的准备;取出”LDA 23”的操作码10010110B放入数据总线;操作码经数据总线装入数据寄存器,因为是操作码,所以还需要装入指令译码器进行指令译码,得到“装入”的操作。
此时PC中的内容已经是17,地址17送入地址寄存器并放到地址总线上,找到操作码地址23,PC又自动加1,做好取第二条指令”ADD 24”的准备,找到操作数地址23后,因为是直接寻址,取出23单元中的操作数7放到数据总线,再装入数据寄存器中,经数据寄存器将操作数7装入累加器,至此,第一条指令”LDA23″执行完毕。