MCS-51单片机的时钟电路与时序

三、MCS-51单片机的时钟电路与时序

时钟电路用于产生单片机工作所需要的时钟信号,而时序研究的是指令执行中各信号之间的相互关系。单片机本身就如同一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。

(一)振荡器和时钟电路

1.时钟电路的产生

在MCS-51单片机芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL 1,其输出端为引脚XTAL2。而在芯片的外部,XTAL1和XTAL 2之间跨接晶体振荡器和微调电容,再利用芯片内部的振荡电路形成反馈电路,从而构成一个稳定的自激振荡器,即单片机的时钟电路,如图2-4所示。

图2-4 时钟振荡电路

时钟电路产生的振荡脉冲经过单片机内部的触发器进行二分频之后,才成为单片机的时钟脉冲信号。

一般地,微调电容C1和C2取30p F左右,晶体的振荡频率范围是0~24MHz。晶体振荡频率高,则系统的时钟频率也高,单片机运行的速度也就快。MCS-51在通常应用情况下,使用的振荡频率为6MHz或12MHz。

2.引入外部脉冲信号

在由多个单片机组成的系统中,为了使各单片机之间的时钟信号同步,应当引入唯一的公用外部脉冲信号作为单片机的振荡脉冲。这时,外部的脉冲信号接至XTAL1引脚,XTAL2悬空,如图2-5所示。

图2-5 外部时钟源接法

(二)时序及有关概念

CPU执行一系列动作都是在统一的时钟脉冲控制下进行的。这个脉冲是由单片机控制器中的时序电路发出的。由于指令的字节数不同,取这些指令所需要的时间也不同,即使字节数相同的指令,由于执行操作有较大差别,所以不同的指令执行时间也不相同,即所需要的节拍数不同。为了便于对CPU的时序进行分析,人们按指令的执行过程规定了几种周期,即时钟周期、机器周期和指令周期,这也被称为时序定时单位。

1.时序

时序是用定时单位来说明的。MCS-51的时序单位共有四个,从小到大依次是:节拍、状态、机器周期和指令周期,其时序如图2-6所示。下面分别加以说明。

图2-6 CPU时序单位

(1)节拍与状态。单片机中把振荡脉冲的周期定义为节拍(Phase,用P表示)。振荡脉冲经过二分频后,就是单片机的时钟信号,把时钟信号的周期定义为状态(State,用S表示)。这样,一个状态就包含两个节拍,其前半周期对应的节拍叫节拍1(P1),后半周期对应的节拍叫节拍2(P2)。

(2)机器周期。MCS-51采用定时控制方式,因此它有固定的机器周期。规定一个机器周期的宽度为六个状态,并依次表示为S1~S6。由于一个状态包括两个节拍,因此,一个机器周期总共有十二个节拍,分别记作S1P1、S1P2、…、S6P2。由于一个机器周期共有十二个振荡脉冲周期,因此机器周期就是振荡脉冲周期的十二倍。

当振荡脉冲频率为12MHz时,一个机器周期为1μs;当振荡脉冲频率为6MHz时,一个机器周期为2μs。

(3)指令周期。执行一条命令所需要的时间称为指令周期,它是最大的时序定时单位。指令周期一般由若干个机器周期组成,不同的指令所需要的机器周期数也不相同。通常情况,包含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令等。

指令的执行速度与指令所包含的机器周期有关,机器周期数越少的指令,执行的速度越快。MCS-51单片机通常可以分为单周期指令、双周期指令和四周期指令三种。只有乘法和除法两条指令是四周期指令,其余都为单周期和双周期指令。

2.CPU取指、执指时序

单片机执行任何一条指令时都可以分为取指令阶段和执行指令阶段(简称为取指阶段和执指阶段)。89C51单片机的取指/执行时序如图2-7所示。

由图2-7可见,ALE引脚上出现的信号是周期性的,在每个机器周期内出现两次高电平。第一次出现在S1P2和S2P1期间,第二次出现在S4P2和S5P1期间。ALE信号每出现一次,CPU就进行一次取指操作,但由于不同指令的字节数和机器周期数不同,因此取指令操作也随指令不同而小有差异。

按照指令字节数和机器周期数,MCS-51单片机指令可分为六类,分别是:单字节单周期指令、单字节双周期指令、单字节四周期指令、双字节单周期指令、双字节双周期指令、三字节双周期指令,见附录A MCS-51指令表。

图2-7(a)、(b)分别给出了单字节单周期和双字节单周期指令的时序。指令的执行始于S1P2,这时操作码被锁存到指令寄存器内。若是双字节,则在同一机器周期的S4读第二字节。若是单字节指令,则在S4仍有读操作,但被读入的字节无效,且程序计数器PC并不增量。图2-7(c)给出了单字节双周期指令的时序,两个机器周期内进行了四次读操作码操作。因为是单字节指令,所以后三次的读操作码操作都是无效的。

图2-7 89C51单片机的取指/执行时序

图2-7(d)给出了访问片外RAM指令“MOVX A,@DPTR”的时序,它是一条单字节双周期指令。在第一个机器周期S5开始送出片外RAM地址后,进行读/写数据。读写期间在ALE端不输出有效信号,所以第二机器周期,即外部RAM已被寻址和选通后,也不产生取指令操作。

从时序上讲,算术逻辑运算的执指操作一般发生在P1期间,内部寄存器对寄存器的传送操作发生在P2期间。