MCS51单片机的输入/输出接口
I/O 口基本特性
51 系列单片机有 4 个 8 位并行 I/O 接口,并行就是所有各位数据同时并排传输的方式,每一个接口都有数据输出锁存器、输入缓冲器和输出驱动器。锁存器作为特殊的寄存器属于端口,具有端口地址。每一个接口只有一个端口,对单片机而言就不再区分两者,我们把 4 个接口和其中的锁存器都统一标记为 P0~P3,简称为P0 口、P1口、P2 口和 P3 口。所有端口都可以作为通用输入/输出口,部分还具有特定功能。
在 4 个并行 I/O 端口中,P0 口输出可驱动 8 个 LSTTL(低功耗肖特基 TTL)门,其它端口只能驱动 4 个 LSTTL。以 AT89S51 为例,其 I/O 口输入电流不超过 20mA,输出电流不超过 1.2mA。
51 系列单片机还有 1 个可编程全双工异步串行 I/O 接口 UART,串行就是所有各位数据按一定顺序,一位接着一位传输的方式。
此时大家会想到,怎么会有这么多的 I/O 口呢?51 系列单片机的各种型号是相互兼容的,多数 I/O 引脚是复用的,称为多功能引脚,不同的应用场合,选取相应的功能。
P0 口结构
P0 口(P0.0~P0.7,第 39~32 引脚):其中一位的结构如图 所示。P0 口是漏极开路的 8 位并行端口,作双向 I/O 口使用或者作为地址总线低 8 位/数据总线使用。
用作通用 I/O 口时,T1 截止,同时使转换开关接通 b 点,输出驱动级工作在漏级开路方式,用作输出口,需要外接上拉电阻(通常为 10KΩ);作为输入时,数据可以来自端口的锁存器,也可以来自端口引脚,读引脚时必须先向锁存器中写入1。
作为地址总线低 8 位或者数据总线使用时,先输出低 8 位地址,后作为双向数据
总线使用,此时需要外接地址锁存器。
输出 0,T2 导通,引脚 P0 接地,电平为 0;
输出 1,T2 截止,,端口为高阻,要外接上拉电阻,端口才有 5V;
P1 口结构
P1 口(P1.0~P1.7,第 1~8 引脚):内部结构如图所示。P1 口的第一功能是作为准双向 I/O 口使用,由用户程序进行定义。请大家思考一下为什么称准双向口?(是由于接口内部有拉高电路)。作为输出时,无需外接上拉电阻,每个引脚可驱动 4 LSTTL 门电路。做输入口时,必须先向锁存器写“1”。
输出 0,T2 导通,引脚 P0 接地,电平为 0;
输出 1,T2 截止,电源通过上拉电阻引脚上,电平为 5V;
P2 口结构
P2 口(P2.0~P2.7,第 21~28 引脚):内部结构如图所示。P2 口作为一般的准双向 I/O 口使用或者高 8 位地址总线输出引脚。
在单片机系统仅使用地址的低 8 位,P2 口仍然可以作为通用 I/O 口使用,此时为准双向口。
当系统需要在片外扩展程序存储器或者数据存储器超过 256B 时, P2 口用作地址总线高 8 位。
P3 口结构
P3 口(P3.0~P3.7,第 10~17 引脚):内部结构如图所示。内部有上拉电阻,P3 口可作为准双向 I/O 口使用或者第二功能引脚,第二功能应用非常重要,其功能描述如表 所示。