你了解MCS-51单片机的片外并行总线吗?
扫描二维码
随时随地手机看文章
单片机的数据存储器、程序存储器和I/O接口必须通过总线与单片机的微处理器(CPU)连接。总线是连接单片机系统各部件的一组公共信号线,可分为地址总线、数据总线和控制总线。
总线的作用
地址总线用于传输存储器单元或I/O端口的地址,传输方向是单向的,只能由单片机向外传送。另外,地址线的根数m决定了地址总线所能“寻址”的存储单元的个数和I/O端口的总数。这是因为每根地址线能传输高电平和低电平两种信号,可分别用二进制数“1”和“0”表示,而二进制数的每个逻辑组可以对应一个地址。具有m根地址线的地址总线可以传输m位的二进制数,共2m个地址。
数据总线是双向总线,可在单片机和存储单元及I/O端口之间传输数据。数据总线的位数一般与单片机CPU的字长一致。控制总线由若干条线组成,有的用于向存储器或I/O端口发送CPU的控制信号,有的用于向CPU传送存储器或I/O端口的状态信息。
MCS-51单片机片外总线的构成
MCS-51单片机没有专用的片外地址总线和数据总线,这两种总线的功能由单片机的并行输入、输出口P0和P2提供。MCS-51单片机的扩展总线结构如图5-1所示。
图5-1 MCS-51单片机的扩展总线结构
1.P0数据/地址分时复用总线
MCS-51单片机有8位片外数据总线(D7~D0),由P0口提供。另外,MCS-51单片机有16位外部地址总线,P0口传送其中的低8位地址(A7~A0)。当单片机访问片外扩展的存储器和I/O接口时,P0口先传送片外地址的低8位,然后再传送数据,即P0口是地址与数据分时复用的总线。由此可知,当数据出现在P0口上时,低8位地址已从P0口上消失,而图5-1中的地址锁存器可以在低8位地址消失前将其锁存,并提供给片外扩展的存储器或I/O端口。
2.P2地址总线高8位
在进行片外扩展时,P2口是地址总线的高8位。与P0口不同的是,P2口仅传送地址,不复用。由P2口和P0口构成的16位片外地址线,使MCS-51单片机具有216=65536个片外地址。MCS-51单片机的程序存储器和数据存储单元均是按字节寻址的(即每个字节型存储单元都有地址)。因此,MCS-51单片机可以扩展的片外程序存储器和数据存储器的容量均为216个字节(Byte),即64KB。
3.控制总线
控制总线有ALE、PSEN、WR和RD,其作用分别如下:
(1)ALE
如前所述,P0口是地址和数据分时复用的总线,必须通过锁存器将其传送的低8位地址锁存。而何时驱动地址锁存器锁存低8位地址非常关键,因为必须保证地址锁存器锁存时,P0口上传送的是地址,而不是之后传送的数据。
ALE是地址锁存使能引脚。在单片机进行外部存储器和I/O端口访问时,该引脚将在P0从地址线变为数据线之前输出一个下降沿信号。可用该引脚作为地址锁存器(假设为下降沿或低电平锁存的锁存器)的锁存驱动信号,以保证被锁存的是低8位地址。
(2)PSEN
PSEN是程序存储器输出使能引脚,低电平有效。该引脚用于片外程序存储器扩展。当单片机进行片外程序存储器的读操作时,该引脚将输出低电平,以选通被访问的程序存储器。程序存储器的访问包括单片机从程序存储器中读取指令和使用MOVC指令从程序存储器中读取数据。
(3)WR和RD
单片机P3口的P3.6和P3.7引脚工作于第二功能时,分别对应于WR和RD。WR和RD用于片外数据存储器(或I/O接口)的扩展,分别为片外数据存储器(或I/O接口)的写选通和读选通信号,均为低电平有效。可产生片外数据存储器(或I/O接口)读操作的指令有“MOVX A,@DPTR”和“MOVX A,@Ri”,可产生写操作的指令有“MOVX@DPTR,A”和“MOVX@Ri,A”。
当单片机从片外数据存储器(或I/O接口)读数据,并将数据送上片外数据总线时,RD引脚为低电平、WR引脚为高电平。相反地,当向片外数据存储器(或I/O接口)写数据时,WR引脚为低电平、RD引脚为高电平。
需要注意的是,PSEN、WR和RD这三个引脚中的任何两个都不会同时为低电平,即片外数据存储器(或I/O接口)的读和写以及片外程序存储器读这三种操作不会同时发生。
4.地址锁存器的作用
如前所述,图5-1中的地址锁存器用于锁存P0口上传送的地址信息,即利用ALE引脚上的下降沿信号触发地址锁存器的锁存操作。因此,图5-1中的地址锁存器应当是下降沿触发的锁存器,如芯片74LS373。如果使用上升沿(或高电平)触发的锁存器(如芯片74LS273和74LS377等),则必须将ALE引脚信号取反后再连接至锁存器的触发端。