P89V51的程序存储器寻址空间和数据存储器寻址空间均为 64KB。其中P89V51片内有8KB的快速存储器。P89V51的程序存储器寻址空间和数据存储器寻址空间是重叠的(51系列单片机都是这样),即它们共用一套地址总线和数据总线,但通过不同的控制总线来区别访问程序存储器空间和数据存储器空间:即访问程序存储器空间读取指令时程序存储器输出使能信号 有效,而访问数据序存储器空间时数据写 或读 信号有效。下面详细讨论访问外部存储器时的有关操作。
如图 4-6所示为从外部程序存储器的取指操作时序图。图 4-6(a)是没有访问外部数据存储器,即没有执行MOVX一类指令情况下的时序;图 4-6(b)是有执行MOVX一类指令情况下的时序。在从外部程序存储器取指时,16位地址中的低 8位地址(PCL)由P0口输出,高 8位地址(PCH)由P2口输出,而指令由P0输入。
下面分两种情况讨论访问外部程序存储器的取指操作时序。
此时,P2口专门用于输出PCH,P2口有锁存功能,可以把P2口直接接到外部存储器的地址端,不需再加锁存。而P0口分时复用,分别作为地址总线和数据总线:作为地址总线输出PCL,作为数据总线输入指令。P0口需要外接锁存器锁存它输出的低8位地址(PCL)。在这种情况下,每个机器周期中地址锁存允许信号ALE两次有效。在ALE由高变低时,有效地址PCL出现在P0口,ALE信号使低8位地址锁存器把地址锁存起来。 在每个机器周期中也是两次有效。用于选通外部程序存储器,使指令加载到数据总线(P0口)上,通过P0口输入到CPU。图 4-6(a)所示为这种情况下的操作时序。由于每个机器周期中ALE两次有效,甚至在片内取指时也是这样,所以,ALE以1/6振荡器频率的恒定速率、1/3的占空比出现在引脚上。可以利用ALE作为外部时钟或定时时钟,也可以利用它来判断单片机的时钟是否工作正常。
当系统中接有外部数据存储器并执行MOVX一类指令时,其时序有所变化,图 4-6(B)所示为这种情况下的操作时序。从外部程序存储器取入的指令是MOVX一类指令时,在同一周期的S5状态(有关机器周期、指令周期和振荡周期等系统时钟的概念请参考第五单元)ALE由高变低时,P0口上出现的不再是有效地址PCL值,而是有效的数据存储器的低位地址。如果执行的是MOVX @DPTR指令,出现在P0口的低 8位地址是DPL(数据指针的低 8位寄存器)的值,出现在P2口的高 8位地址是DPH (数据指针的高 8位寄存器)的值。如果执行的是MOVX @Ri指令,出现在P0口的低 8位地址是Ri的值,出现在P2口的高 8位地址是P2口锁存器的值。在同一机器周期的S6状态将不再出现 有效信号,在下一个机器周期也不再出现ALE的有效信号。而当 或 信号有效时,在P0口(数据总线)上将出现有效的输出或输入数据。
图 4-6 外部程序存储器的取指操作时序图
图 4-6 外部程序存储器的取指操作时序图(续)
在从外部程序存储器读取数据操作,即执行MOVC指令时的时序图如图 4-7所示。每个机器周期中地址锁存允许信号ALE两次有效。在ALE由高变低时,有效地址出现在P0口,ALE信号使低 8位地址锁存器把地址锁存起来。 在每个机器周期中也是两次有效。用于选通外部程序存储器,使数据加载到数据总线(P0口)上,通过P0口输入到CPU。P2口专门用于输出高 8位地址。而P0口分时复用,分别用作为地址总线和数据总线:作为地址总线输出低 8位地址,作为数据总线输入数据。P0口需要外接锁存器锁存它输出的低 8位地址。
MOVC指令有两条:MOVC A,@A+DPTR和MOVC A,@A+PC。前者由累加器和数据指针合成 16位地址,后者由累加器和程序计数器合成 16位地址。合成后的 16位地址中的高 8位地址由P2口输出,低 8位地址由P0口输出。
图 4-7 外部程序存储器的读数操作时序图
外部数据存储器的读数操作时序图如图 4-8所示。在第一个机器周期的S1状态,地址锁存信号ALE由低变高,开始了读周期。在S2状态,CPU从P0口输出低 8位地址,从P2口输出高 8位地址。ALE的下降沿把低 8位地址锁存到外部锁存器中,而高 8位地址一直锁存在P2口。在S3状态,P0口进入高阻状态。在S4状态,读控制信号 变为有效,它的作用使外部数据存储器把地址所选中单元的数据加载到数据总线并通过P0口输入到CPU,当 变高后,P0口回到高阻状态,总线重新悬浮起来。
图 4-8 外部数据存储器的读数操作时序图
外部数据存储器的写数操作时序图如图 4-9所示。在第一个机器周期的S4状态,地址锁存信号ALE由低变高,开始了写周期。在S5状态,CPU从P0口输出低 8位地址,从P2口输出高 8位地址。ALE的下降沿把低 8位地址锁存到外部锁存器中,而高 8位地址一直锁存在P2口。在S6状态,CPU通过P0口把数据加载到数据总线上。在第二个机器周期的S1状态,写控制信号 变为有效,它的作用使外部数据存储器把CPU已加载到数据总线的数据写入所选中单元中。在S4状态,当 变高后,外部数据存储器不再受数据总线的影响。
图 4-9 外部数据存储器的写数操作时序图