在 STC51 单片机中,P0、P1、P2 和 P3 这四个端口寄存器分别对应 P0 - P3 四个 I/O 端口,每个寄存器都是 8 位的,其内部的每一位都对应着相应端口的一个引脚。下面详细解释每个端口寄存器各位的作用:
1. P0 口寄存器(地址:80H)
P0 口是一个 8 位漏极开路的双向 I/O 口,既可以作为普通 I/O 口使用,也可以作为地址 / 数据总线使用。
位序号 | 位名称 | 作用 |
---|---|---|
P0.7 | 对应 P0 口的第 7 个引脚,在作为普通 I/O 口时,可用于输入或输出数据;在访问外部存储器时,作为高 8 位地址线或 8 位数据线的一部分。 | |
P0.6 | 对应 P0 口的第 6 个引脚,功能与 P0.7 类似。 | |
P0.5 | 对应 P0 口的第 5 个引脚,功能与 P0.7 类似。 | |
P0.4 | 对应 P0 口的第 4 个引脚,功能与 P0.7 类似。 | |
P0.3 | 对应 P0 口的第 3 个引脚,功能与 P0.7 类似。 | |
P0.2 | 对应 P0 口的第 2 个引脚,功能与 P0.7 类似。 | |
P0.1 | 对应 P0 口的第 1 个引脚,功能与 P0.7 类似。 | |
P0.0 | 对应 P0 口的第 0 个引脚,功能与 P0.7 类似。 |
作为普通 I/O 口使用时:
- 输出:由于 P0 口是漏极开路输出,当要输出高电平时,需要外接上拉电阻。向 P0 口的某一位写 1 时,该引脚呈现高阻态;写 0 时,该引脚输出低电平。
- 输入:在读取引脚状态前,必须先向该位写 1,使引脚处于高阻态,避免锁存器的 0 电平影响引脚输入。
作为地址 / 数据总线使用时:在访问外部存储器(如外部 RAM 或程序存储器)时,P0 口分时复用为低 8 位地址线和 8 位数据线。
2. P1 口寄存器(地址:90H)
P1 口是一个内部带上拉电阻的 8 位双向 I/O 口,通常作为普通 I/O 口使用。
位序号 | 位名称 | 作用 |
---|---|---|
P1.7 | 对应 P1 口的第 7 个引脚,可用于输入或输出数据。 | |
P1.6 | 对应 P1 口的第 6 个引脚,功能与 P1.7 类似。 | |
P1.5 | 对应 P1 口的第 5 个引脚,功能与 P1.7 类似。 | |
P1.4 | 对应 P1 口的第 4 个引脚,功能与 P1.7 类似。 | |
P1.3 | 对应 P1 口的第 3 个引脚,功能与 P1.7 类似。 | |
P1.2 | 对应 P1 口的第 2 个引脚,功能与 P1.7 类似。 | |
P1.1 | 对应 P1 口的第 1 个引脚,功能与 P1.7 类似。 | |
P1.0 | 对应 P1 口的第 0 个引脚,功能与 P1.7 类似。 |
作为普通 I/O 口使用时:
- 输出:向 P1 口的某一位写 1 时,该引脚输出高电平;写 0 时,该引脚输出低电平。
- 输入:在读取引脚状态前,同样需要先向该位写 1,使引脚处于高电平状态,以便正确读取外部输入信号。
3. P2 口寄存器(地址:A0H)
P2 口是一个内部带上拉电阻的 8 位双向 I/O 口,既可以作为普通 I/O 口使用,也可以在访问外部存储器时作为高 8 位地址线使用。
位序号 | 位名称 | 作用 |
---|---|---|
P2.7 | 对应 P2 口的第 7 个引脚,作为普通 I/O 口时用于输入或输出数据;访问外部存储器时,作为高 8 位地址线的一部分。 | |
P2.6 | 对应 P2 口的第 6 个引脚,功能与 P2.7 类似。 | |
P2.5 | 对应 P2 口的第 5 个引脚,功能与 P2.7 类似。 | |
P2.4 | 对应 P2 口的第 4 个引脚,功能与 P2.7 类似。 | |
P2.3 | 对应 P2 口的第 3 个引脚,功能与 P2.7 类似。 | |
P2.2 | 对应 P2 口的第 2 个引脚,功能与 P2.7 类似。 | |
P2.1 | 对应 P2 口的第 1 个引脚,功能与 P2.7 类似。 | |
P2.0 | 对应 P2 口的第 0 个引脚,功能与 P2.7 类似。 |
作为普通 I/O 口使用时:其输入输出特性与 P1 口类似。
作为地址线使用时:在访问外部存储器(如外部 RAM 或程序存储器)时,P2 口输出高 8 位地址。
4. P3 口寄存器(地址:B0H)
P3 口是一个内部带上拉电阻的 8 位双向 I/O 口,除了作为普通 I/O 口使用外,每个引脚还具有第二功能。
位序号 | 位名称 | 普通 I/O 功能 | 第二功能 |
---|---|---|---|
P3.7 | 对应 P3 口的第 7 个引脚,可用于输入或输出数据。 | 外部数据存储器写选通(WR) | |
P3.6 | 对应 P3 口的第 6 个引脚,可用于输入或输出数据。 | 外部数据存储器读选通(RD) | |
P3.5 | 对应 P3 口的第 5 个引脚,可用于输入或输出数据。 | 定时器 / 计数器 1 外部输入(T1) | |
P3.4 | 对应 P3 口的第 4 个引脚,可用于输入或输出数据。 | 定时器 / 计数器 0 外部输入(T0) | |
P3.3 | 对应 P3 口的第 3 个引脚,可用于输入或输出数据。 | 外部中断 1 请求(INT1) | |
P3.2 | 对应 P3 口的第 2 个引脚,可用于输入或输出数据。 | 外部中断 0 请求(INT0) | |
P3.1 | 对应 P3 口的第 1 个引脚,可用于输入或输出数据。 | 串行口发送(TXD) | |
P3.0 | 对应 P3 口的第 0 个引脚,可用于输入或输出数据。 | 串行口接收(RXD) |
作为普通 I/O 口使用时:其输入输出特性与 P1 口类似。
作为第二功能使用时:各引脚实现相应的特殊功能,如 P3.0 和 P3.1 用于串口通信,P3.2 和 P3.3 用于外部中断等。当使用第二功能时,对应的普通 I/O 功能将被屏蔽。