2.2.3 80C51单片机的时钟与时序
单片机的工作过程是:取一条指令,译码,进行微操作,接着再取一条指令,译码,进行微操作,这样自动地、一步一步地由微操作依序完成相应指令的功能。各指令的微操作在时间上有严格的次序,这种微操作的时间次序称作时序。单片机的时钟信号用来为单片机芯片内部的各种微操作提供时间基准。
1.时钟产生方式
80C51单片机的时钟信号通常有两种产生方式:一是内部时钟方式;二是外部时钟方式。内部时钟方式如图2-4(a)所示。在80C51单片机内部有一振荡电路,只要在单片机的XTAL1和XTAL2引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机内部产生时钟脉冲信号。图2-4(a)中电容器C1和C2的作用是稳定频率和快速起振,电容值在5~30 pF,典型值为30 pF。晶振CYS的振荡频率范围为1.2~12 MHz,典型值为12 MHz、6 MHz或11.059 2 MHz。
图2-4 80C51单片机的时钟方式
外部时钟方式是把外部已有的时钟信号引入单片机内,如图2-4(b)所示。此方式常用于多个80C51单片机同时工作,以便于各单片机同步。对于采用CHMOS工艺的单片机,外部时钟要由XTAL1端引入,而XTAL2端引脚应悬空。
实际应用中常采用内部时钟方式。当系统要与PC机通信时,应选择晶振频率为11.059 2 MHz,这样便于将波特率设定为标称值。
2.80C51单片机的时钟信号
晶振周期(或称时钟周期)为最小的时序单位。80C51单片机的时钟信号如图2-5所示。
图2-5 80C51单片机的时钟信号
晶振信号经分频器后形成两相错开的信号P1和P2。P1和P2的周期也称为S状态,它是晶振周期的两倍,即一个S状态包含2个晶振周期。在每个S状态的前半周期,相位1(P1)信号有效,在每个S状态的后半周期,相位2(P2)信号有效。每个S状态有两个节拍(相)P1和P2,CPU以P1和P2为基本节拍指挥各部件协调工作。
晶振信号12分频后形成机器周期。一个机器周期包含12个晶振周期或6个S状态。因此,每个机器周期的12个振荡脉冲可以表示为S1P1,S1P2,S2P1,S2P2,…,S6P1,S6P2。
指令的执行时间称作指令周期。80C51单片机的指令按执行时间可以分为三类:单周期指令、双周期指令和四周期指令(四周期指令只有乘、除法两条指令)。
晶振周期、S状态、机器周期和指令周期都是单片机的时序单位。晶振周期和机器周期是单片机内计算其他时间值(如指令周期、定时器的定时时间等)的基本时序单位。例如,晶振频率为12 MHz,则机器周期为1μs,指令周期为1~4μs。
3.80C51单片机的典型时序
(1)单周期指令时序
单字节指令时,时序如图2-6(a)所示。在S1P2把指令操作码读入指令寄存器,并开始执行指令,但在S4P2读的下一指令的操作码要丢弃,且程序计数器PC不加1。
双字节指令时,时序如图2-6(b)所示。在S1P2把指令操作码读入指令寄存器,并开始执行指令,在S4P2再读入指令的第二字节。
图2-6 单周期指令时序
单字节指令、双字节指令均在S6P2结束操作。
(2)双周期指令时序
对于单字节指令,在两个机器周期之内要进行4次读操作。只是后3次读操作无效,如图2-7所示。
图2-7 单字节双周期指令时序
在图2-7中可以看到,每个机器周期中ALE信号两次有效,具有稳定的频率,可以将其作为外部设备的时钟信号。
应注意的是,在对片外RAM进行读/写时,ALE信号会出现非周期现象,如图2-8所示。在第二机器周期无读操作码的操作,而是进行外部数据存储器寻址和数据选通,所以在S1P2~S2P1间无ALE信号。
图2-8 访问外部RAM的双周期指令时序