购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.6 单片机指令时序

时序,简单地说就是在正确的时间做正确的事情。单片机指令时序是单片机指令执行的时间要求。由于单片机内部是基于数字逻辑电路运行的,这些数字逻辑电路需要在一个统一的时钟步调下运行,因此单片机的指令时序问题非常重要。

1.6.1 几个基本概念

单片机的时钟源由XTAL1引脚和XTAL2引脚输入,随后单片机的所有指令操作都建立在该时钟的基础之上。在介绍单片机指令的执行时,并没有采用原始的时钟周期进行度量,而是通过几个基本概念来说明。这里用到的概念从小到大分别为节拍、状态、机器周期和指令周期,这几个概念的关系如图1-14所示。

图1-14 单片机时序的概念

单片机的时序是用定时单位来描述的,其描述了指令执行中各控制信号在时间上的关系,这里涉及节拍、状态、机器周期和指令周期4个概念,接下来分别说明它们之间的关系,示意图如图1-14所示。

●拍:拍为振荡脉冲的周期,是51系列单片机中的最小时序单元。在图1-14中,拍用P来表示。如果采用片内时钟模式,拍(P)的周期便是晶振的振荡周期。如果采用片外时钟模式,拍(P)的周期便是外部时钟脉冲的周期。

●时钟周期:时钟周期是单片机CPU中最基本的时间单元,在一个时钟周期内,CPU仅完成一个最基本的动作。振荡脉冲信号(拍)经过二分频后,便可得到单片机的时钟信号。在图1-14中,时钟信号的周期用S来表示。由于是二分频,因此一个时钟周期包含两个拍,分别称为P1和P2。

●机器周期:一个机器周期由6个时钟周期(S1~S6)构成,也就是由12个拍组成。从图1-14中可以看出,这12个拍依次为S1P1、S1P2、S2P1、……、S6P2。

●指令周期:指令周期执行一条指令所需要的时间。不同的指令有不同的指令周期,例如单周期指令执行需要一个机器周期,双周期指令执行需要两个机器周期。

简言之,在单片机内部,振荡器始终驱动内部时钟发生器向CPU提供时钟信号。时钟发生器的输入是一个二分频触发器,这个二分频触发器为单片机提供了一个二相时钟信号,即相位信号P1和相位信号P2,驱动CPU产生执行指令功能的机器周期。

单片机的振荡频率一旦确定,则机器周期也就确定了。例如,单片机选用24MHz的晶体振荡器,工作与片内时钟模式,则拍的频率为24MHz,时钟周期的频率为12MHz,对应机器周期的频率为2MHz,因此对应的机器周期T=500ns。

注意: 新推出的一些高速增强性8051内核的单片机提高了指令的执行速度,具体可参考相应的器件说明。

1.6.2 指令执行的时序

在上面的几个概念中,有些是我们并不经常接触的。由于程序设计中直接面对的是指令,因此这里将重点介绍不同单片机指令的执行时序。

在单片机中,一般按照指令的长度和指令周期来区分各个指令。大致可以分为单字节单周期指令、双字节单周期指令、双字节双周期指令等。下面介绍几个典型的指令执行时序。由于指令的完整执行过程包括取指令和执行指令两个部分,因此在下面的介绍过程中将贯穿这一点。

1.单字节单周期指令的执行时序

单字节单周期指令是指指令的长度为单个字节,执行需要一个机器周期来完成。单字节单周期指令的执行时序如图1-15所示。

图1-15 单字节单周期指令的执行时序

在每个机器周期内,在S1P2~S2P1处,地址锁存信号ALE出现高电平有效信号,读程序指令码,随后便立刻执行该指令。接着,在S4P2~S5P1处,地址锁存信号ALE再次出现高电平有效信号,此时读下一个指令,但丢弃不执行。

2.双字节单周期指令的执行时序

双字节单周期指令是指指令的长度为两个字节,执行需要一个机器周期来完成。双字节单周期指令的执行时序如图1-16所示。

在每个机器周期内,在S1P2~S2P1处,地址锁存信号ALE出现高电平有效信号,读程序指令码的第一个字节。接着,在S4P2~S5P1处,地址锁存信号ALE再次出现高电平有效信号,此时读取指令的第二个字节,随后便执行该指令。

图1-16 双字节单周期指令的执行时序

3.单字节双周期指令的执行时序

单字节双周期指令是指指令的长度为单个字节,执行需要两个机器周期来完成。单字节双周期指令的执行时序,如图1-17所示。

这类指令执行时,在第一个机器周期的S1P2~S2P1处,读取指令码,随后执行该指令。接着,在第一个机器周期的S4P2~S5P1处、第二个机器周期的S1P2~S2P1处和S4P2~S5P1处读取下一个指令码,但丢弃。整体来说,需要使用两个机器周期执行完该指令。

图1-17 单字节双周期指令的执行时序

4.MOVX类指令的执行时序

MOVX类指令比较特殊,其执行时序,如图1-18所示。这类指令执行时,在第一个机器周期的S1P2~S2P1处,读取指令码,随后执行该指令。接着,在第一个机器周期的S4P2~S5P1处再次读的指令码将丢弃。在第二个机器周期的S1P2~S2P1处和S4P2~S5P1处则无取址操作。该指令在第二个机器周期完成外部数据单元的读写。

图1-18 MOVX类单字节单周期指令的执行时序

访问外部ROM/RAM的操作时序,主要发生在外部扩展单片机ROM和RAM的时候。此时,具体的操作时序分别介绍如下。

1.6.3 访问外部ROM的操作时序

访问外部ROM的操作主要发生在外部扩展单片机ROM的时候。此时,指令的操作时序中便包含了外部ROM存储器的操作。这里涉及的操作包括ALE、 PSEN 、P0端口和P2端口。其中,P0端口作为低8位地址,P2端口作为高8位地址。访问外部ROM的时序,如图1-19所示。

图1-19 读外部ROM时序

在访问外部ROM时,P0端口作为地址和数据的分时复用,P2端口作为地址的高8位。首先,P0端口将先输出低8位地址,P2端口将输出高8位地址,并利用ALE信号使其锁存起来,这两个共同组成16位地址。然后在 PSEN 信号有效的情况下,便可以从外部程序存储器中读取指令,指令将通过P0口送入单片机中。

1.6.4 访问外部RAM的操作时序

访问外部RAM的操作主要发生在外部扩展单片机RAM的时候。此时,指令的操作时序中便包含了外部RAM存储器的操作。这里涉及的操作包括ALE、 PSEN RD 、v、P0端口和P2端口。其中,P0端口作为低8位地址,P2端口作为高8位地址。访问外部ROM的时序,如图1-20所示。整个操作需要如下三步来完成。

首先执行MOVX指令。

根据MOVX指令所给出的数据来选择外部RAM单元。

对该单元进行读写操作。

在访问外部RAM时,P0端口作为地址和数据的分时复用,P2端口作为地址的高8位。首先,第一个机器周期,P0端口将先输出低8位地址,P2端口将输出高8位地址,并利用ALE信号使其锁存起来。第二个机器周期,读信号 RD (或者写信号 WR )有效,这样便将外部RAM中的数据送到单片机P0端口(或者将数据写入外部RAM)。

图1-20 读写外部RAM时序 7sn1Fzc4lAR0Z4sRt0qRxHXENRI3TkynDqb6XAb1Bl9eyXcBVH5Vs0iR3SrsUNCg

点击中间区域
呼出菜单
上一章
目录
下一章
×