基础篇:关于单片机工作的基本时序介绍
扫描二维码
随时随地手机看文章
时序就是 CPU 总线信号在时间上的顺序关系。CPU 的控制器实质上是一个复杂的同 步时序电路,所有工作都是在时钟信号控制下进行的。每执行一条指令,CPU 的控制器都要发出一系列特定的控制信号,这些控制信号在时间上的相互关系就是 CPU 的时序。
CPU 发出的时序控制信号有两大类。一类是用于单片机内部协调控制的,但对用户来说,并不直接接触这些信号,可不必了解太多。另一类时序信号是通过单片机控制总线送到片外,形成对片外的各种 I/O 接 口、RAM 和 EPROM 等芯片工作的协调控制,对于这部分时序信号用户应该关心。
1.机器周期和指令周期
下面先介绍几个时序概念:
(1) 振荡周期:也称时钟周期,是指为单片机提供时钟脉冲信号的振荡源的周期。
(2) 状态周期:每个状态周期为时钟周期的 2 倍,是振荡周期经二分频后得到的。
(3) 机器周期:一个机器周期包含 6 个状态周期 S1~S6 ,也就是 12 个时钟周期。在一个机器周期内,CPU 可以完成一个独立的操作。
(4) 指令周期:它是指 CPU 完成一条操作所需的全部时间。每条指令执行时间都是由一个或几个机器周期组成的。MCS 51 系统中,有单周期指令、双周期指令和四周期指令。
2.MCS 51 指令的取指/执行时序
MCS 51 单片机取指/执行时序如图 2.7 所示,每条指令的执行都包括取指和执行两 个阶段。在取指阶段,CPU 从内部或外部 ROM 中取出指令操作码及操作数,然后再执行 这条指令。通常,在每个机器周期内 ALE 信号出现两次,时刻为 S1P2 和 S4P2 ,信号的有效宽度为一个 S 状态。每出现一次 ALE 信号,CPU 就依次进行取指操作,但并不是每条 指令在 ALE 生效时都能有效地读取指令。如果是单个指令,在 S4 期间仍有读操作,但读出的字节被丢弃,且读后的 PC 值不加 1 。如果是双周期指令,则在 S4P2 期间读第二字节, 在 S6P2 时结束指令。
图 2.7(a)、(b) 分别为单字节单周期指令和双字节单周期指令的时序。
图 2.7(c) 为单字节双周期指令的时序,它在两个机器周期内发生 4 次读操作,后 3 次 读操作是无效的。
图 2.7(d) 为指令 MOVX 操作 时序 ,它是一条单字节双周期指令。第一机器周期 S5 开始时,送出外部数据存储器的地址,随后读或写数据。读写期间在 ALE 端不输出有效信号,在第二机器周期,即外部数据存储器已被寻址和选通后,也不产生取指操作。
当 CPU 对外部数据存储器 RAM 读写时,ALE 不是周期信号。
3. 访问外部 ROM 和 RAM 的时序
如果指令是从外部 ROM 中读取 ,除 了 ALE 信号之外,控制信号还有PSEN 。此外,还要用到 P0 和 P2 口,P0 口分时用做低 8 位地址和数据总线,P2 口用做高 8 位地址总 线。相应的时序图如图 2.8 所示。
其过程如下:
(1) 在 S1P2 时 ALE 信号有效;
(2) 在 P0 口送出 ROM 地址低 8 位,在 P2 口送出 ROM 地址高 8 位。低 8 位地址信号只持续到 S2 结束,故在外部要用锁存器加以锁存,ALE 为地址锁存信号 。高 8 位地址在整个读指令过程中都有效,不必再接锁存器,到 S2P2 前 ALE 失效。
(3) 在 S3P1 时刻 PSEN开始有效,用它来选通外部 ROM 的使用端,所选中 ROM 单元的内容,从 P0 口读入到 CPU,随后 PSEN 信号失效。
(4) 在 S4P2 后开始第二次读入,过程和第一次相同。
访问外部数据 RAM 时,使用的控制信号有 ALE 和RD(读) 或WR(写),P0 和 P2 口仍然要用,作为传送 RAM 地址线和读写数据线。读外部数据 RAM 的 时序如 图 2.9 所示, 其过程如下:
(1) 第一次 ALE 有效到第二次 ALE 出现前的过程和读外部 ROM 相同。
(2) 第二次 ALE 有效后,P0 口、P2 口分别送出 RAM 单元的低 8 位和高 8 位地址。
(3) 在第二个机器周期第一个 ALE 不再 出现,此时PSEN为高 电平,第二个机器周期的 S1P1 时RD开始有效,选通 RAM 芯片,从 P0 口读出 RAM 单元数据。
(4) 第二个机器周期 的第二个 ALE 出现时 ,也对外部 ROM 进行读操作,但为无效操作。
若对外部 RAM 进行写操作,则用WR信号来选通 RAM,其余过程与读操作相似,写外部数据 RAM 的时序如图 2.10 所示。