单片机如何访问片外存储空间的时序单片机解密
单片机解密单片机与片外程序存储器、数据存储器或I/O接口之间进行数据交换时所产生的总线操作被称为总线周期(Bus Cycle)。单片机向外传输数据的总线周期是写总线周期,反之是读总线周期。在总线周期中,单片机总线引脚的状态将按照一定时间顺序发生特定的变化,这样的总线状态变化被称为总线时序。本节将分别介绍单片机进行片外程序和数据存储器(或I/O接口)访问时的总线时序。
1.片外程序存储器读总线时序
单片机会在以下两种情况下读片外扩展的程序存储器,并产生如图5-11所示的片外程序存储器读总线周期。
图5-11片外程序存储器读总线周期时序
(1)从片外程序存储器中读取指令
单片机解密从片外程序存储器取指令时,首先16位程序指针PC的高8位PCH和低8位PCL分别由单片机的P2口和P0口输出,作为地址指向程序存储的某个存储单元,该存储单元中的数据就是单片机要读取的指令(指令的二进制代码)。由于P0口是地址和数据分时复用的总线,进入一个机器周期的S3状态后,P0口上的低8位地址将消失。为了在P0口上的地址消失后依然能够按照正确的地址访问存储器,必须在低8位地址消失前,通过地址锁存器将其锁存住。这里,地址锁存的时机是非常关键的,因为必须保证触发地址锁存器时,P0口上传送的
是低8位地址,而由图5-11可知,利用ALE引脚上出现的下降沿信号触发地址锁存,恰好符合对锁存时机的要求。接下来,在S4状态的前半段,P0口将成为数据总线,P0口上的数据将被当作指令代码送入单片机内的指令寄存器,而且此段时间内,PSEN引脚为低电平,若PSEN引脚被连接到程序存储器的读选通引脚OE上,则PSEN的低电平可以使程序存储器输出被地址选中的存储单元中所存放的指令代码。
(2)从片外程序存储器中读取数据
单片机可以通过“MOVC A,@A+DPTR”和“MOVC A,@A+PC”两条指令读取程序存储器中存放的信息。当MOVC指令执行时,首先(A)+(DPTR)或(A)+(PC)的16位和的高8位和低8位作为地址的高8位(A15~A8)和低8位(A7~A0)分别由P2口和P0口输出。其中,P2口上的高8位地址保持不变,而P0口上的低8位地址将消失,并且之后成为
单片机解密传送数据的数据总线。为此,需要将单片机ALE引脚与地址锁存器的锁存触发引脚相连,用于控制锁存器在ALE下降沿时锁存住P0口上传送的低8位地址。最后,当与程序存储器OE引脚相连的PSEN引脚出现低电平时,程序存储器将被地址选中的存储单元中的字节数据送上数据总线P0口,而P0口上的数据最后被传送给累加器A。
需要特别注意的是:在读片外程序存储器的过程中,单片机的RD和WR引脚始终为高电平,因此与单片机相连的数据存储器既不输入也不输出数据,从而不可能出现片外程序存储器和数据存储器空间的地址冲突问题。