单片机是一个复杂的数字系统,内部CPU以及时序逻辑电路都需要时钟脉冲,所以单片机需要有精确的时钟信号。时钟电路用于产生单片机工作时所必需的控制信号,单片机的内部电路正是在时钟信号的控制下,严格地按时序执行指令进行工作。
CPU执行指令时,首先到程序存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号完成指令所规定的操作。CPU发出的时序信号有两类:一类用于对片内各个功能部件的控制,用户无须了解;另一类用于对片外存储器或I/O接口的控制,这部分时序对于分析、设计硬件接口电路至关重要,这也是单片机应用系统设计者普遍关心和重视的问题。
单片机的晶体振荡电路可以由内部的高增益的反相放大器与单片机的XTAL1、XTAL2引脚外接的晶体构成,振荡电路则产生作为CPU的时钟脉冲信号,如图2-8所示。XTAL1为振荡电路入端,XTAL2为振荡电路输出端,同时XTAL2也作为内部时钟发生器的输入端。片内时钟发生器对振荡频率进行二分频,为控制器提供一个两相的时钟信号,产生CPU的操作时序。MCS-51系列单片机时钟电路的晶体常用的有6MHz、12MHz(可得到准确的定时)、11.0592MHz(可得到准确的串行通信波特率)等。电容C1和C2对频率有微调作用,电容容量的选择范围为5~30pF。在设计印制电路板时,晶振和电容的布局紧靠单片机芯片,以减少寄生电容以及干扰。
图2-8 MCS-51系列单片机的晶体振荡电路
1 常用的时钟电路
常用的时钟电路有两种方式:一种是内部时钟方式,另一种是外部时钟方式。而AT89S51单片机的最高时钟频率为33MHz。
(1)内部时钟方式
单片机内部有一个用于构成振荡器的高增益反相放大器,它的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚外部跨接石英晶体振荡器和微调电容,构成一个稳定的自激振荡器。如图2-9所示为AT89S51单片机内部时钟方式的电路。
图2-9 内部时钟方式的电路
(2)外部时钟方式
外部时钟方式使用现成的外部振荡器产生时钟脉冲信号,常用于多片单片机同时工作,以便于多片单片机之间的同步。利用外部时钟输入时,要根据单片机型号XTAL1接地或悬空,并考虑时钟电平的兼容性。常见的外部时钟源直接接到XTAL1端,XTAL2端悬空(如CHMOS型单片机芯片)。它的波形应为方波,频率应符合所用的MCS-51系列单片机的具体要求。接入外部时钟时,应根据不同类型的单片机,选择相应的连线方式,如图2-10所示。
(3)时钟信号的输出
当使用片内振荡器时,XTAL1、XTAL2引脚还能为应用系统中的其他芯片提供时钟,但需增加驱动能力。其引出的方式有两种,如图2-11所示。
图2-10 MCS-51系列单片机与外部时钟的连接方式
图2-11 时钟信号的两种引出方式
2 工作时序
MCS-51系列单片机的工作时序单位包含节拍、状态、时钟周期、状态周期、机器周期和指令周期等。(www.xing528.com)
(1)节拍与状态
把单片机时钟脉冲频率的倒数(晶体振荡信号的一个周期)定义为节拍,用P表示,也称为时钟周期或振荡周期。时钟频率越高,则时钟周期越短,工作速度越快。为了便于分析CPU时序图中的控制时序,把两个连续的节拍定义为一个状态,用S表示。这样,一个状态就包含两个节拍,前半周期对应的节拍叫节拍1,记作P1;后半周期对应的节拍叫节拍2,记作P2,CPU以时钟P1、P2为基本节拍,指挥单片机的各个部分协调工作。MCS-51系列单片机的时序划分如图2-12所示。各种控制信号在定时与控制电路中控制先后顺序和所需时间就可以通过状态及节拍表示了,如ALE信号。
图2-12 MCS-51系列单片机的时序划分
(2)时序单位
MCS-51系列单片机的工作时序单位从小到大依次是节拍、状态、机器周期和指令周期。为了便于对CPU时序进行分析,一般按指令的执行过程规定了几种周期,即时钟周期、机器周期和指令周期,也称为时序定时单位。各时序单位的定义如下。
1)时钟周期:即振荡周期,时钟控制信号的基本时间单位,它是晶振频率(fOSC)的倒数。例如,采用的晶振频率为12MHz,则时钟周期约为83ns。显然,对同一种机型的单片机,时钟频率越高,单片机的工作速度就越快。但是,由于不同的单片机硬件电路和器件的不完全相同,所以其所需要的时钟频率范围也不一定相同。
2)状态周期:是指两个节拍信号P1、P2的周期,这两个节拍信号由振荡器输出信号经分频器进行二分频后获得,它们的周期是时钟周期(振荡周期)的两倍,相位相互交错。
3)机器周期:在单片机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。MCS-51系列单片机的一个机器周期由6个S周期(状态周期)组成。单片机采用定时控制方式,具有固定的机器周期。每个机器周期完成一个基本操作,如取指令、读或写数据等。一个机器周期中的12个振荡周期可以表示为S1P1,S1P2,S2P1,S2P2,…,S6P1,S6P2,如图2-13所示。也就是说,一个机器周期=6个状态周期=12个时钟周期。若晶振频率为6MHz,则机器周期为22s;若晶振频率为12MHz,则机器周期为11s。
图2-13 机器周期中振荡周期的表示
4)指令周期:是指执行一条指令所需的时间。指令周期是单片机最大的工作时序单位,不同的指令所需要的机器周期数也不相同。MCS-51系列单片机的汇编指令中,按执行时间长短可分为单周期(1个机器周期)指令、双周期指令和四周期指令3种。单片机的运算速度与程序执行所需的指令周期有关,占用机器周期数越少的指令则单片机运行速度越快,如简单的数据传输指令,只有乘法和除法指令为四周期指令。
通常算术逻辑操作在P1时相进行,而内部寄存器传送在P2时相进行。如图2-14所示给出了MCS-51系列单片机的取指和执行指令的定时关系。在图中可看到,低8位地址的锁存信号ALE在每个机器周期中两次有效:一次在S1P2与S2P1期间,另一次在S4P2与S5P1期间。它的频率为时钟频率(振荡频率)的1/6,是一个规则的周期信号,因此,需要时可将其作为其他部件的时钟信号或脉冲信号源使用。
图2-14 MCS-51系列单片机的指令时序图
MCS-51系列单片机的指令系统按照指令字节数和机器周期数,可分为6类:单字节单周期指令、单字节双周期指令、单字节四周期指令、双字节单周期指令、双字节双周期指令、三字节双周期指令。
单字节和双字节指令都在S1P1期间由CPU读取,将指令码读入指令寄存器,同时程序计数器PC加1。在S4P2期间,单字节指令读取的下一条指令会丢弃不用,但程序计数器PC值也加1;如果是双字节指令,CPU在S4P2期间读取指令的第二字节,同时程序计数器PC值也加1。两种指令都在S6P2时序结束时完成。双周期指令在两个机器周期内产生四次读操作码操作,第一次读取操作码,PC自动加1,后三次读取都无效,自然丢弃,程序计数器PC的值不会变化。但当单片机执行的指令为访问片外RAM指令时,是一个例外,如图2-15所示。
由图2-15可见,访问片外RAM指令时序属于单字节双周期指令,在第二个机器周期的S1P2至S2P1期间,ALE信号被禁止一次,致使ALE信号不再是均匀脉冲序列。必须在CPU不访问片外RAM时,ALE引脚输出的脉冲序列才可作为脉冲信号源使用。
图2-15 访问片外RAM指令
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。