一、概述
单片机工作时,是在统一的时钟脉冲控制下一拍一拍地进行的。这个脉冲是由单片机控制器中的时序电路发出的。单片机的时序就是CPU在执行指令时所需控制信号的时间顺序。
CPU控制器实际上是复杂的同步时序电路,所有的工作都是在时钟信号的控制下进行的。每执行一条指令,CPU控制器都要发出一系列特定的控制信号,这些控制信号在时间上的相互关系就是CPU的时序。一个单片机系统要想正常工作,除了要做到电平匹配、功率匹配外,还要做到时序匹配。
二、单片机时钟电路
单片机执行指令的过程可分为取指令、分析指令和执行指令三个步骤,每个步骤又有许多微操作组成,这些微操作必须在一个统一时钟控制下才能正确的顺序执行。时钟电路是计算机的心脏,它控制着计算机的工作节奏。
MCS-51的时钟信号可以由两种方式产生:一种是内部方式,利用芯片内部的振荡电路,产生时钟信号;另一种为外部方式,时钟信号由外部引入。
2.1 内部时钟方式
MCS-51内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别为放大器的输入端和输出端。该放大器与作为反馈元件的片外晶体或陶瓷谐振器(简称晶振)一起构成自激振荡器,如图1所示。常用调节C1或C2的容量大小对频率进行微调,电容容量通常为20-100pF,当时钟频率为12MHz时典型值为30pF。
图1 MCS-51内部时钟方式
2.2 外部时钟方式
在由多片单片机组成的系统中,为使各单片机之间的时钟信号严格同步,应当采用公用外部脉冲信号作为各单片机振荡脉冲。这时,外部方波脉冲信号经XTAL2引脚接入,其连接方式如图2所示。
图2 MCS-51外部时钟方式
三、各时间周期含义及其分析
为了保证各部件间的同步工作,单片机内部电路应在唯一的时钟信号下严格地控时序进行工作。为了便于对CPU时序进行分析,一般按指令的执行过程规定了几种周期,即时钟周期、机器周期和指令周期,下文将分别予以介绍。
3.1 时钟周期
时钟周期也称为振荡周期,定义为时钟脉冲的倒数,在单片机中也就等于晶振的倒数。是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。时钟周期是单片机的基本时间单位。51单片机振荡脉冲经十二分频成为时钟信号。若时钟晶振的振荡频率为Fosc,则时钟周期Tosc=(1/Fosc)*12。(即为振荡频率的倒数的12倍)。如:晶振频率为12MHZ,则时钟周期Tosc=(1/12μs)12=1μs。
由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。
3.2 状态周期与节拍
CPU从一个状态转换到另一个状态所需要的时间称为状态周期。单片机的一个状态周期由两个时钟周期组成,又称为由两个节拍组成,每个节拍需要一个时钟周期。振荡脉冲的周期定义为节拍(为方便描述,用P表示),这样一个状态就有两个节拍,前半周期相应的节拍我们定义为1(P1),后半周期对应的节拍定义为2(P2)。
3.3 机器周期
在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由6个S周期(状态周期)组成,依次表示为S1、S2、…、S6。
由于一个状态又包括两个节拍,因此一个机器周期共12个节拍,分别记作:S1P1、S1P2、…、S6P2。也就是一个机器周期等于12个振荡周期。节拍、状态周期与机器周期的关系如图3所示。
图3 MCS-51节拍、状态周期与机器周期的关系
3.4 指令周期
CPU 的工作是不断地取指令和执行指令,以完成数据的运算、传送和输入/输出等操作。CPU从取指令开始至该指令执行完所需的时间称为一个指令周期。它是MCS-51最大的时序单位,一条指令周期应在1-4个机器周期范围内。不同指令的指令周期也是不相同的。指令周期以机器周期为单位,而机器周期是完成一个规定操作所需的时间。
如果单片机执行一条指令占用一个机器周期,则这条指令为单周期指令,如简单的数据传输指令;如果执行一条指令需要两个机器周期,称为双周期指令,如乘法运算指令。单片机的运算速度与程序执行所需的指令周期有关,占用机器周期数越少的指令则单片机运行速度越快。在51系列单片机的汇编指令中,共有单周期指令、双周期指令和四周期指令三种。四周期指令只有乘法和除法指令两条,其余均为单周期和双周期指令。
单片机执行单周期的时序见图4(a)和(b)所示,其中(a)为单字节单周期指令,(b)为双字节单周期指令。
图4 MCS-51指令周期时序图
单字节和双字节指令都在S1P1期间由CPU读取指令,将指令码读入指令寄存器,同时程序计数器PC加一。在S4P2期间,单字节指令读取的下一条指令会丢弃不用,但程序计数器PC值也加一;如果是双字节指令,CPU在S4P2期间读取指令的第二字节,同时程序计数器PC值也加一。两种指令都在S6P2时序结束时完成。
单片机执行单字节双机器周期指令的时序见图4(c)所示,双周期指令在两个机器周期内产生四次读操作码操作,第一次读取操作码,PC自动加一,后三次读取都无效,自然丢弃,程序计数器PC的值不会变化。
四、总结
若单片机外接晶振频率为Fosc=12MHZ,根据上文论述各周期之间的关系,得出四个基本周期的具体数值为:
(1)时钟周期=1/12μs。
(2)状态周期=1/6μs。
(3)机器周期=1μs。
(4)指令周期=1~4μs
准确理解单片机时序、时钟周期、机器周期、指令周期这些概念的含义,对正确地设定定时器/计数器工作参数、按照时序对外围芯片读写操作,设计出相对稳定可靠、精度较高的单片机控制系统具有十分重要的意义。