2.1.6 AT89S51/AT89S52单片机的时钟电路与时序

2.1.6 AT89S51/AT89S52单片机的时钟电路与时序

单片机在时钟信号控制下严格按照时序执行命令进行工作。这个时钟信号是由单片机的时钟电路发出的。

单片机工作时,CPU首次从程序存储器中取出要执行的指令,然后通过译码电路对指令进行译码,再通过相应的控制信号完成指令所规定的操作。

1.时钟电路

时钟电路用于产生单片机工作所需的时钟信号。AT89S51/AT89S52单片机的时钟信号通常有两种产生方式,即内部时钟方式和外部时钟方式。

1)内部时钟方式

内部时钟方式利用单片机内部的振荡器,在单片机引脚XTAL1(19引脚)和XTAL2(18引脚)两端连接石英晶体(简称晶振),构成稳定的自激振荡器,如图2.8(a)所示。

自激振荡器发出的脉冲直接送入内部时钟电路,晶振两端的电容一般选择为30 pF左右,这两个电容对频率有微调的作用,同时还起到稳定频率和快速起振的作用。晶振的频率范围可在1.2~12 MHz之间选择,典型值为12 MHz和6 MHz。电容C1和C2的大小对振荡频率有微小影响,可起频率微调作用。为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应安装得尽可能与单片机芯片靠近。

2)外部时钟方式

外部时钟方式是把单片机外部已有的时钟信号接入XTAL1或XTAL2。由于单片机内部时钟发生器的信号取自反相器的输入端,故采用外部时钟源时,接线方式为外部时钟信号接到引脚XTAL1,而引脚XTAL2悬空,如图2.8(b)所示。此方式常用于多片单片机同时工作的情况,以保证各单片机的同步。由于XTA L2的电平不是TTL电平,故应连接一上拉电阻。一般要求外部信号高电平的持续时间大于30 ns,且频率低于12 MHz的方波信号。

图2.8 AT89S51/AT89S52单片机的时钟电路

单片机在实际使用中通常采用外接晶体的内部时钟方式,因为可以通过高的晶振频率提高指令执行的速度。

2.时序

CPU执行指令都是严格按照时间顺序(时序)进行的。时序用于表达指令执行中各控制信号在时间上的相互关系。单片机的时序定时单位有振荡周期(又称为时钟周期)、状态周期、机器周期和指令周期,各时序均与振荡周期有关,如图2.9所示。

1)振荡周期或节拍

将振荡脉冲的周期定义为振荡周期,用P表示。它就是晶体的振荡周期,是单片机中最小的时序单位,若时钟频率为fosc,则时钟周期Tosc=1/fosc。

图2.9 各周期之间的关系

2)状态周期

振荡脉冲经过二分频后,可得到单片机的状态周期(也称为时钟周期),用S表示,1个状态周期由2个节拍组成。

3)机器周期

若把CPU一条指令的过程划分成几个基本操作,如取指令、译码指令等,则完成一个基本操作所需的时间称为机器周期。AT89S51/AT89S52的1个机器周期包含12个时钟周期,例如,若晶振频率为12 MHz,则机器周期为1μs;若晶振频率为6 MHz,则机器周期为2μs。

1个机器周期由6个状态周期(12个节拍或振荡周期)组成。

4)指令周期

指令周期是执行一条指令所需的时间。由于单片机中有单字节指令、双字节指令和三字节指令,因此执行一条指令的时间也不尽相同,一般1个指令周期由1~4个机器周期组成,不同指令所需的机器周期也是不同的。从指令的执行时间来看,单字节指令和双字节指令一般为单机器周期和双机器周期,三字节指令都是双机器周期。

如果将一条指令的执行划分为几个基本操作,则完成一个基本操作所需的时间即机器周期。规定6个状态为1个机器周期,依次表示为S1~S6。由于一个状态包含2个节拍,因此1个机器周期包含12个节拍,表示为S1P1,S1P2,…,S6P1,S6P2