基于AT89S51的程序存储器的操作时序

1.访问程序存储器的控制信号
AT89S51单片机访问片外扩展的程序存储器时,所用的控制信号有以下3种 。
(1) ALE——用于低8位地址锁存控制 。
(2) PSEN(的反)——片外程序存储器“读选通”控制信号 。它接外扩EPROM的OE(的反)引脚 。
(3)EA(的反)——片内、片外程序存储器访问的控制信号 。当EA(的反)=1时,在单片机发出的地址小于片内程序存储器最大地址时,访问片内程序存储器;当EA(的反)=0时,只访问片外程序存储器 。
【基于AT89S51的程序存储器的操作时序】如果指令是从片外EPROM中读取的,除了ALE用于低8位地址锁存信号之外,控制信号还有PSEN(的反),PSEN(的反)接外扩EPROM的OE(的反)脚 。此外,还要用到PO口和P2口,PO口分时用作低8位地址总线和数据总线,P2口用作高8位地址线 。
2.操作时序
AT89S51单片机对片外ROM的操作时序分两种,即执行非MOVX指令的时序和执行MOVX指令的时序,如下图所示 。
 
(1)应用系统中无片外RAM硬件系统中无片外RAM(或I/O)时,则不用执行MOVX指令 。在执行非MOVX指令时,操作时序如下图(a)所示 。PO口作为地址/数据复用的双向总线,用于输入指令或输出程序存储器的低8位地址PCL 。P2口专门用于输出程序存储器的高8位地址PCH 。P2口具有输出锁存功能 。由于PO口是分时复用,故首先要用ALE将PO口输出的低8位地址PCL锁存在锁存器中,然后PO口再作为数据口 。在每个机器周期中,允许地址锁存两次有效,ALE在下降沿时,将PO口上的低8位地址PCL锁存在锁存器中 。同时,PSEN(的反)也是每个机器周期中两次有效,用于选通片外程序存储器,将指令读入片内 。
系统无片外RAM(或I/O)时,此ALE有效信号以振荡器频率的1/6出现在引脚上,它可以用作外部时钟或定时脉冲信号 。
(2)应用系统中接有片外RAM在执行访问片外RAM(或I/O)的MOVX指令时,程序存储器的操作时序有所变化 。其主要原因在于,执行MOVX指令时,16位地址应转而指向数据存储器,操作时序如下图(b)所示 。在指令输入以前,P2口输出的地址PCH、PCL指向程序存储器;在指令输入并判定是MOVX指令后,ALE在该机器周期S5状态锁存的是PO口发出的片外RAM(或I/O)低8位地址 。若执行的是“MOVXA,@DPTR”或是“MOVX@DPTR,A”指令,则此地址就是DPL(数据指针低8位);同时,在P2口上出现的是DPH(数据指针的高8位) 。若执行的是“MOVX A,@R/”或“MOVX@R/,A”指令,则R/的内容为低8位地址,而P2口线上将是P2口锁存器的内容 。在同一机器周期中将不再出现PSEN有效取指信号,下一个机器周期中ALE的有效锁存信号也不再出现;而当RD/WR有效时,PO口将读/写数据存储器中的数据 。
由上图(b)可以看出:
(1)将ALE用作定时脉冲输出时,执行一次MOVX指令就会丢失一个ALE脉冲 。
(2)只有在执行MOVX指令时的第二个机器周期中,才对数据存储器(或I/O)进行读/写,地址总线才由数据存储器使用 。

    推荐阅读