时钟电路用于产生单片机工作所需要的时钟信号,而时序研究的是指令执行中各信号之间的相互关系。单片机本身就如一个复杂的同步时序电路,为了保证工作方式的同步,所有的工作都必须在唯一的时钟信号控制下严格地按时序进行。时序就是单片机内部及内部与外部相互遵守的规律。
在MCS-51芯片内部有一个高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。而在芯片的外部,XTAL1和XTAL2之间跨接石英晶体和微调电容,从而构成一个稳定的自激振荡器,振荡频率由外接石英晶体确定。这就是单片机的时钟振荡电路,如图2-9所示。
一般地,电容C1和C2取30 pF左右,晶体的振荡频率范围是1.2~12MHz。如果晶体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。但通常情况下,使用的振荡频率为6MHz或12MHz。
在由多片单片机组成的系统中,为了各单片机之间时钟信号的同步,应当引入唯一的公用外部脉冲信号作为各单片机的振荡脉冲。这时,外部的脉冲信号经XTAL2引脚输入,其连接如图2-10所示。
图2-9 时钟振荡电路
图2-10 外部时钟源接法
时序是用定时单位来说明的。MCS-51的时序定时单位有振荡周期、时钟周期、机器周期和指令周期。各种周期之间的关系如图2-11所示。
图2-11 各种周期之间的关系图
(1)振荡周期
振荡周期指为单片机提供定时信号的振荡源的周期(用P表示)。
(2)时钟周期
时钟周期又称为状态周期或状态时间(用S表示),是振荡周期的两倍,它分成P1节拍和P2节拍,P1节拍通常完成算术逻辑操作,而内部寄存器间传送通常在P2节拍完成。
(3)机器周期
若将一条指令的执行过程划分为几个基本操作,则完成一个基本操作所需的时间称为机器周期。一个机器周期由6个状态周期(12个振荡脉冲)组成,分为6个状态:S1~S6。每个状态又分为2拍:P1和P2。因此,一个机器周期中的12个振荡周期表示为SIP1、S1P2、……、S6P1、S6P2。也是振荡脉冲的十二分频。
(4)指令周期
指令周期是最大的时序定时单位,执行一条指令所需要的时间称为指令周期。它一般由若干个机器周期组成。不同的指令,所需要的机器周期数也不相同。通常,包含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令,依此类推。
若外接晶振为6MHz若外接晶振为12MHz
振荡周期:1/6 µs振荡周期:1/12 µs
时钟周期:1/3 µs时钟周期:1/6 µs
机器周期:2 µs机器周期:1 µs
指令周期:2~8 µs指令周期:1~4 µs
指令的运算速度与指令所包含的机器周期有关,机器周期数越少的指令,执行速度越快。如图2-12所示的是取MCS-51单片机指令/执行指令的周期时序。
MCS-51单片机共有111条指令,全部指令按其占用的字节数可分为单字节指令、双字节指令和三字节指令。这些指令在执行时所需要的机器周期数是不同的,概括起来有以下几种情况:单字节单周期指令、单字节双周期指令、单字节四周期指令、双字节单周期指令、双字节双周期指令、三字节双周期指令。
图2-12 MCS-51单片机取指令/执行指令的周期时序
①单字节单周期指令:例INC A。
对于单字节单周期指令,只需要进行1次读指令操作。在第2个ALE有效时,由于PC没有加1,读出来的还是原指令,是一次无效操作。
②双字节单周期指令:例ADD A,#data。
对于双字节单周期指令,ALE的两次操作都是有效的,第1次读出来的是指令的第1字节(操作码),第2次读出来的是第2字节。
③单字节双周期指令:例INC DPTR。
对于单字节双周期指令,在2个机器周期中进行4次读指令操作,只有第1次是有效的,后面的3次读操作均无效。
④单字节双周期指令:例MOVX类指令。
在执行这类指令时,CPU先从ROM中读取指令,然后执行对外部RAM的读写操作。在第1机器周期时,第1次读指令操作有效,第2次读指令操作无效。在第2机器周期时,执行对外部RAM的读写操作,与ALE信号无关,因此,不产生ALE信号,也就不产生读指令操作。
复位是使单片机系统进入初始化操作状态,其主要功能是将程序计数器PC内容初始化为0000H,也就是说,让单片机从0000H单元开始执行程序,与此同时,CPU及其他功能寄存器都从一个确定的初始状态下开始工作。单片机系统除了上电需要正常初始化外,在程序运行当中出现断电、受到强制干扰或操作错误等使系统处于“死机”状态时都需要进行复位操作。单片机系统复位后,片内各寄存器的状态见表2-6。
表2-6 复位后片内各寄存器的状态(×表示无关位)
单片机复位的条件是:必须使RST引脚(9)加上持续两个机器周期(即24个振荡周期)的高电平。例如,若时钟频率为 12MHz,每个机器周期为 1 µs,则只需 2 us 以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机常见的复位电路如图2-13(a)、(b)所示。
图2-13 单片机常见的复位电路
图2-13(a)为上电复位电路,它是利用电容充电自动实现的。在接电瞬间,RST端的电位V CC 相同,随着充电电流的减少,RST的电位逐渐下降。只要保证RST为高电平的时间大于两个机器周期,便能正常复位。
图2-13(b)为按键复位电路。该电路除具有上电复位功能外,若要复位,只需按RESET键,此时电源V CC 经电阻R1、R2分压,在RST端产生一个复位高电平。
单片机复位期间不产生ALE和PSEN信号,即ALE=1和PSEN=1。这表明单片机复位期间不会有任何取址操作。