1.5 并行I/O端口结构
8051单片机有4个并行I/O口,称为P0、P1、P2、P3,每个口都有8根引脚,共有32根I/O引脚,它们都是双向通道,每一条I/O引脚都能独立地用做输入或输出,作为输出时数据可以锁存,作为输入时数据可以缓冲。P0~P3口各有一个锁存器,分别对应4个特殊功能寄存器地址:80H、90H、A0H、B0H。图1.10所示为P0~P3 各口中的一位的逻辑图。这4个I/O口的功能不完全相同,它们的负载能力也不相同,P1、P2、P3都能驱动4个LS型TTL门电路,并且不需外加电阻就能直接驱动MOS电路。P0口在驱动TTL电路时能带动8个LS型TTL门电路,但驱动MOS电路时,若作为地址/数据总线,可直接驱动;而作为I/O口时,则需外接上拉电阻才能驱动MOS电路。
图1.10 8051单片机并行I/O口一位的逻辑图
P0口为三态双向口,它可作为输入/输出端口使用,也可作为系统扩展时的低8位地址/8位数据总线使用。P0口内部有一个2选1的MUX开关,当8051以单芯片方式工作而不需要外部扩展时,内部控制信号将使MUX开关接通到锁存器,此时P0口作为双向I/O端口,由于P0口没有内部上拉电阻,通常要在外部加一个上拉电阻来提高驱动能力。当8051需要进行外部扩展时,内部控制信号将使MUX开关接通到内部地址/数据线,此时P0口在ALE信号的控制下分时输出低8位地址和8位数据信号。
P1口为准双向口,它的每一位都可以分别定义为输入或输出使用。P1口作为输入口使用时,有两种工作方式,即所谓的“读端口”和“读引脚”。读端口时实际上并不从外部读入数据,而只把端口锁存器中的内容读入内部总线,经过某种运算和变换后,再写回端口锁存器,属于这类操作的指令很多,如对端口内容取反等。读引脚时才真正地把外部的输入信号读入内部总线。
逻辑图中各有两个输入缓冲器,CPU根据不同的指令分别发出“读端口”或“读引脚”信号,以完成两种不同的操作。在读引脚,也就是从外部输入数据时,为了保证输入正确的外部输入电平信号,首先要向端口锁存器写入一个“1”,然后再进行读引脚操作,否则,端口锁存器中原来状态有可能为“0”,加到输出驱动场效应管栅极的信号为“1”,该场效应管导通,对地呈现低阻抗。这时即使引脚上输入的是“1”信号,也会因端口的低阻抗而使信号变化,使得外加的“1”信号写入时不一定是“1”。若先执行置“1”操作,则可使驱动场效应管截止,引脚信号直接加到三态缓冲器,实现正确的写入。正是由于P1口在进行输入操作之前需要有这样一个附加准备动作,故称之为“准双向口”。
P1口作为输出口时,如果要输出“1”,只要将“1”写入P1口的某一位锁存器,使输出驱动场效应管截止,该位的输出引脚由内部上拉电阻拉成高电平,即输出为“1”。要输出“0”时,将“0”写入P1口的某一位锁存器,使输出驱动场效应管导通,该位的输出引脚被接到地端,即输出为“0”。
P2口也是一个准双向口,它有两种使用功能:作为普通I/O端口或作为系统扩展时的高8位地址总线。P2口内部结构与P0口类似,也有一个2选1的MUX开关,P2口作为I/O端口使用时,内部控制信号使MUX开关接通到锁存器,此时P2口的用法与P1口相同。P2口作为外部地址总线使用时,内部控制信号使MUX开关接通到内部地址线,此时P2口的引脚状态由所输出的地址决定。需要特别指出的是,只要进行了外部系统扩展,由于对片外地址的操作是连续不断的,此时P0口和P2口就不能再用做I/O端口了。
P3口为多功能口,除了用做通用I/O口之外,它的每一位都有各自的第二功能,详见表1.4。P3口作为通用I/O口时其使用方法与P1口相同,P3口的第二功能可以单独使用,即不用做第二功能的引脚仍可以作为通用I/O口线使用。
8051单片机没有独立的对外地址、数据和控制“三总线”,当需要进行外部扩展时就要采用I/O口的复用功能,将P0口、P2口用做地址/数据总线,P3口用其第二功能,形成外部地址、数据和控制总线,如图1.11所示。
P0口在进行外部扩展时分时复用,在读/写片外存储器时,P0口先送出低8位地址信号,该信号只能维持很短的时间,然后P0口又送出8位数据信号。为了使在整个读/写片外存储器期间,都存在有效的低8位地址信号,必须在P0口上外接一个地址锁存器,在ALE信号有效期间将低8位地址锁存于锁存器内,再从这个锁存器对外输出低8位地址。
P2口在进行外部扩展时只用做高8位地址线,在整个读/写期间P2口输出信号维持不变,因此P2口不需外接锁存器。一般在片外接有存储器时,P0和P2口不能再用做通用I/O口,此时只有P1口可作为通用I/O口用,P3口中没有使用第二功能的引脚还可以用做I/O口线。另外还要注意,外接程序存储器ROM的读/写选通信号为,而外接数据存储器RAM的读/写选通信号为和,从而保证外部ROM和外部RAM不会发生混淆。
表1.4 P3口的第二功能定义
图1.11 单片机与外部存储器、I/O端口的连接