3.4 单片机并行I/O端口
3.4.1 并行I/O端口介绍
I/O端口又称为I/O接口或I/O通路,是MSC-51单片机对外部实现控制和信息交换的必经之路,是一个过渡的大规模集成电路,用于信息传递过程中的速度匹配和增强单片机的负载能力。
MCS-51单片机共有4个8位并行I/O端口,分别用P0、P1、P2和P3表示,每个端口都有八条端口线,每个I/O端口既可以按位操作单个引脚,也可以按照字节操作使用8个引脚。单片机的4个I/O端口在结构和特性上基本相似,但也各有特点。
3.4.2 P0端口
1.P0端口功能介绍
P0端口(P0.7~P0.0)字节地址为0x80,位地址范围是0x80~0x87。P0端口具有较大的负载能力,最多可驱动8个TTL门。
一般来说,P0端口具有两种功能:第一,P0可以作为通用I/O端口使用,输出数据时可以得到锁存,不需要外接专用锁存器,输入时数据可以得到缓冲。第二,P0端口在CPU访问外部存储器时作为第八位地址和数据复用线。
2.P0端口电路结构
P0口的位电路结构如图3-5所示,是由一个输出锁存器(D型触发器)、两个三态门缓冲器、与门和多路开关MUX组成的控制电路、一对场效应晶体管FET构成的输出电路所组成。

图3-5 P0端口位电路结构
3.P0端口工作原理
当P0口作为输出口使用时,内部总线将数据送入锁存器,内部的写脉冲加在锁存器时钟端CP上,锁存数据到Q端。经过MUX,T2反相后正好是内部总线的数据,送到P0口引脚输出。
当P0口作为输入口使用时,应区分读引脚和读端口两种情况,所谓读引脚,就是读芯片引脚的状态,这时使用下方的数据缓冲器,由“读引脚”信号把缓冲器打开,把端口引脚上的数据从缓冲器通过内部总线读进来。
读端口是指通过上面的缓冲器读锁存器Q端的状态。读端口是为了适应对I/O口进行“读—修改—写”操作语句的需要。
除了I/O功能以外,在进行单片机系统扩展时,P0端口是作为单片机系统的地址/数据线使用的,一般称为地址/数据分时复用引脚。
当输出地址或数据时,由内部发出控制信号,使“控制”端为高电平,打开与门,并使多路开关MUX处于内部地址/数据线与驱动场效应管栅极反相接通状态。此时,输出驱动电路由于两个FET处于反相,形成推拉式电路结构,使负载能力大为提高。输入数据时,数据信号直接从引脚通过输入缓冲器进入内部总线。
3.4.3 P1端口
1.P1端口功能介绍
P1端口是准双向口,只能作为通用I/O口使用。
2.P1端口电路结构
P1端口的位电路结构如图3-6所示,包含输出锁存器、2个输入缓冲器以及FET晶体管和内部上拉电阻组成的输出驱动器。
(https://www.daowen.com)
图3-6 P1端口位电路结构
3.P1端口工作原理
P1端口作为输出口使用时,无须再外接上拉电阻。P1端口作为输入口使用时,应区分读引脚和读端口。读引脚时,必须先向电路中的锁存器写入“1”,使输出级的FET截止。
3.4.4 P2端口
1.P2端口功能介绍
P2端口是准双向口,在实际应用中,可以用于为系统提供高8位地址,也能作为通用I/O口使用。
2.P2端口电路结构
P2端口的位电路结构如图3-7所示。电路含有输出锁存器、两个输入缓冲器以及FET晶体管、内部上拉电阻以及多路选择开关。
3.P2端口工作原理
P2端口作为通用I/O口的输出口使用时,与P1端口一样无须再外接上拉电阻。P2端口作为通用I/O口的输入口使用时,应区分读引脚和读端口。读引脚时,必须先向锁存器写入“1”。

图3-7 P2端口位电路结构
3.4.5 P3端口
1.P3端口功能介绍
P3端口是准双向口,可以作为通用I/O口使用,还可以作为第二功能使用。作为第二功能使用的端口,不能同时当作通用I/O口使用,但其他未被使用的端口仍可作为通用I/O口使用。
2.P3端口电路结构
P3端口的位电路结构如图3-8所示,P3端口有第二功能。P3端口位电路含有输出锁存器、两个输入缓冲器以及FET晶体管、与非门和内部上拉电阻组成的输出驱动器。

图3-8 P3端口位电路结构
3.P3端口工作原理
P3端口作为通用I/O端口使用时,工作原理与P1端口基本相似。
P3端口作为第二功能时,锁存器输出1,通过第二输出功能线输出特定的信号;在输入方面,可以通过缓冲器读入引脚信号。