单片机的工作过程是一个“取指令——分析指令——执行指令”的连续过程。
单片机的程序以指令的形式一一存储在程序存储器中。 微控制器开始工作后,它开始从程序存储器中的特定位置获取指令。
然后单片机内部的控制器对指令进行分析,并根据指令要求执行“取数、发数、算术运算、逻辑运算、跳转”等一项或多项基本操作。 这些操作都是在一个指定的循环内完成的。
执行完这些操作后,再从下一个内存单元中取出指令,重复刚才的操作(当然,这些操作的具体内容可能与上次不同),以此类推,直至断电。
这里所说的“具体存储位置”、“指定周期”等与单片机的型号有关。 下面以51系列单片机为例。
在51系列单片机中,有一个寄存器叫PC(是用来存储数字的容器)。 微控制器复位后,该寄存器的内容被设置为0000H。 微控制器内部的控制器始终基于PC寄存器中的值。 该值进入相应的程序存储器位置以获取指令。
因此,上电后,将从0000H单元中取出第一条指令,进行分析和执行。 同时,PC值也会相应调整,指向下一条要执行的指令的位置。 下一条指令的位置在哪里? 对于51单片机来说,一条指令可能占用一个字节、两个字节或者三个字节。 如果第一条指令是单字节指令,则取第一条指令后,PC 的值将变为 0001H,因此 PC 的值将变为 0001H。 执行完一条指令后,将从0001H单元中取出第二条指令执行,以此类推。
如果程序是顺序执行的,PC的值就会一直增加。 如果程序中存在跳转指令,则该指令会影响PC中的值,使PC中的值指向下一条要执行的指令的地址单元。 这个跳转可以是正向的,比如从0000H跳转到0030H,也可以是反向的,即向后跳转,比如从200H跳转到100H。 正是因为指令可以影响PC中的值,程序才可以实现“分支”、“循环”等各种功能。
那么,执行一条指令需要多少时间呢? 对于51单片机来说,有三种可能的指令执行时间,单周期、双周期和四周期。 无论指令需要做多少工作,都必须在规定的时间内完成。 。