时钟电路用于产生AT89S51单片机工作时所必需的控制信号。AT89S51单片机的内部电路正是在时钟信号的控制下,严格地按时序执行指令进行工作。
在执行指令时,CPU首先到程序存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号完成指令所规定的操作。CPU发出的时序信号有两类,一类用于对片内各个功能部件的控制,用户无需了解;另一类用于对片外存储器或I/O口的控制,这部分时序对于分析、设计硬件接口电路至关重要,这也是单片机应用系统设计者普遍关心和重视的问题。
时钟电路设计
AT89S51单片机各功能部件的运行都以时钟控制信号为基准,有条不紊、一拍一拍地工作。
因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式,一种是内部时钟方式,另一种是外部时钟方式。
1.内部时钟方式
AT89S51内部有一个用于构成振荡器的高增益反相放大器,它的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体和微调电容,构成一个稳定的自激振荡器,图2-13是AT89S51内部时钟方式的电路
电路中的电容C1和C2的典型值通常选择为30 pF。该电容的大小会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。晶体振荡频率的范围通常是在1.2~12 MHz。晶体的频率越高,系统的时钟频率越高,单片机的运行速度也就越快。但反过来,运行速度快对存储器的速度要求就高,对印制电路板的工艺要求也高,即要求线间的寄生电容要小。晶体和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证振荡器稳定、可靠地工作。为了提高温度稳定性,应采用温度稳定性能好的电容。
AT89S51常选择振荡频率6 MHz或12 MHz的石英晶体。随着集成电路制造工艺技术的发展,单片机的时钟频率也在逐步提高,AT89S51和AT89S52芯片的时钟最高频率已达33MHz。
2.外部时钟方式
外部时钟方式使用现成的外部振荡器产生脉冲信号,常用于多片AT89S51单片机同时工作,以便于多片AT89S51单片机之间的同步,一般为低于12 MHz的方波。
外部时钟源直接接到XTAL1端,XTAL2端悬空,其电路如图2-14所示
3.时钟信号的输出
当使用片内振荡器时,XTAL1、XTAL2引脚还能为应用系统中的其他芯片提供时钟,但需增加驱动能力。其引出的方式有两种,如图2-15所示
机器周期、指令周期与指令时序
单片机执行的指令均是在CPU控制器的时序控制电路的控制下进行的,各种时序均与时钟周期有关。
1.时钟周期
时钟周期是单片机时钟控制信号的基本时间单位。若时钟晶体的振荡频率为fosc,则时钟周期Tosc= l/fosc如fosc=6 MHz,Tosc=166.7 ns。
2.机器周期
CPU完成一个基本操作所需要的时间称为机器周期。单片机中常把执行一条指令的过程分为几个机器周期。每个机器周期完成一个基本操作,如取指令、读或写数据等。AT89S51单片机的每12个时钟周期为一个机器周期,即Tcy=12/fosc。若fosc=6 MHz,Tcy=2 μs; fosc=12 MHz,Tcy=1μs。
AT89S51的一个机器周期包括12个时钟周期,分为6个状态:Sl~S6。每个状态又分为两拍:Pl和P2。因此,一个机器周期中的12个时钟周期表示为SIP1、SIP2、S2Pl、S2P2、…、S6P2,如图2-16所示
3.指令周期
指令周期是执行一条指令所需的时间。AT89S51单片机中指令按字节来分,可分为单字节、双字节、三字节指令,因此执行一条指令的时间也不同。对于简单的单字节指令,取出指令立即执行,只需一个机器周期的时间。而有些复杂的指令,如转移、乘、除指令则需两个或多个机器周期。
从指令的执行时间看,单字节和双字节指令一般为单机器周期和双机器周期,三字节指令都是双机器周期,只有乘、除指令占用4个机器周期。