CPU在执行指令时,把一条指令拆分成若干微小的基本操作。这些操作所对应的脉冲信号在时间上的次序称为CPU工作时序。51系列单片机的CPU时序由下面4种信号周期组成,见图1-5所示的单片机指令的取址/执行时序。
1.振荡周期
振荡脉冲的周期是时钟信号的基础。
2.状态周期
状态周期由两个振荡周期组成,又称时钟周期,用S表示,分为P1和P2两个节拍(或称两个相位),前半周期节拍P1有效。后半周期节拍P2有效。
3.机器周期
机器周期包含6个状态周期,共12个节拍,分别表示为S1P1、S1P2、…、S6P1、S6P2。机器周期是单片机最小的时间单位,若晶振频率为12MHz,则机器周期为1μs。
4.指令周期
执行一条指令所需要的时间,是单片机时序中最大的时间单位。不同的指令有不同的指令周期,绝大多数指令是单周期指令和双周期指令,而乘法、除法指令是4周期指令。若使用12MHz晶振,则指令最长的执行时间为4μs。
5.指令的取指/执行时序(https://www.xing528.com)
51系列单片机共有111条指令,分为单字节单机器周期指令、单字节双机器周期指令、双字节单机器周期指令、双字节双机器周期指令、三字节双机器周期指令和乘除法的单字节四机器周期指令。指令的取指/执行时序,以XTAL2端口的振荡信号和ALE端口的信号为参考,其中ALE信号在每个机器周期两次有效,第一次出现在S1P2和S2P1之间,第二次出现在S4P2和S5P1之间,有效宽度为一个状态周期S。图1-5展示了典型的单机器周期和双机器周期指令的取指/执行时序,指令的字节数、周期数由内部译码器识别。

图1-5 单片机指令的取址/执行时序
(1)单字节单周期指令 见图1-5a,单字节单周期指令于S1P2开始执行,操作码被读入指令寄存器,在同一机器周期的S4P2继续读入下一字节的操作码,由于是下一条指令,因此不予考虑,此时程序计数器PC值并不加1,在S6P2结束操作。
(2)双字节单周期指令 见图1-5b,双字节单周期指令于S1P2开始执行,操作码被读入指令寄存器,在同一机器周期的S4P2再读入第二字节,同时程序计数器PC的值加1,在S6P2结束操作。
(3)单字节双周期指令 见图1-5c,单字节双周期指令于S1P2开始执行,在两个机器周期内4次读取操作码,由于是单字节指令,因此后3次读操作均无效。
(4)单字节双周期指令(访问片外数据存储器) 见图1-5d,单字节双周期指令于S1P2开始执行,操作码被读入指令寄存器,在S4P2时再读入的操作码被废弃。在第一机器周期的S5开始时,单片机送出片外数据存储器的地址,随后读出或写入数据。在第二机器周期,单片机访问片外数据存储器,此时ALE不输出有效信号,也不进行取指操作。
在时序上算术和逻辑操作一般发生在节拍P1期间,内部寄存器之间的数据传输一般发生在节拍P2期间。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
