开篇
MCS51单片机有4个8位的并行I/O端口,分别为P0、P1、P2、P3。
每个端口都包括一个同名的特殊功能寄存器、一个输出驱动器和输入缓冲器。
讲解顺序为 P1–> P3 --> P0 --> P2
P1口
P1 口具有通用I/O口方式,可实现输出,读引脚(输入)和读锁存器三种功能。
输出方式:
单片机执行写P1口的指令(就是你的C51程序命令),如果你让某位的数据为1,根据高1低0,那么可判断输出为高电平,反之为低电平。 (详解:如果某位的数据为1,则该为锁存器输出端Q=1–>-Q=0 --> V截止,从而在引脚上P1.n 上输出高电平。)
读引脚方式:
在读引脚之前,为了防止V接通零线变成低电平,所以在读引脚之前,必须先用输出指令置Q=1,_Q为0让V截止。以免出现外面(输入的数据)是高电平,读进来是低电平。
解释完这里,输出方式那里也是融会贯通了。
因为P1口作为输入口时是有条件的(要先写1),而输出时是无条件的,因此,被P1口被称为准双向口。
读锁存器:
P3口
P3口的特点:
除通用的I/O口功能外(P1口的功能),还能实现第二功能口功能。
P3口作为准双向通用口,作为通用输入口时应先先使P3.n–>1 ,作为通用输出口时应先使第二输出 端–>1.
P0口
P0口的功能:
在CPU控制信号的作用下,可以作为通用的I/O口进行数据的输入输出,也可以作为单片机系统的地址/数据线使用。
作为通用I/O口使用:CPU使控制端保持“0”电平
P0口的重点:
科普:漏极开路输出一般情况下都需要外接上拉电阻,才能输出高电平。
在使用I/O口功能时,为了能正常改变电平的变化,需要外接一个上拉电阻。地址/数据分时复用方式时无需外接上拉电阻;
P0口具有地址/数据分时复用方式,可实现地址/数据输出、数据输入两种功能;
分时复用方式的数据输入时无需程序写1操作。
P2口
P2口的功能特点
与P1口相比就多了数据控制单元、一个多路开关MUX。P2可以实现通用I/O口和地址输出两种功能。
工作方式:
用作通用I/O口时,在“控制端”的作用下,多路开关向下打连接至锁存器实现通用功能。
注意:用作通用I/O口时,P2口无需外接上拉电阻。
用作地址输出时,MUX在CPU的控制下转向“地址线”一端,使“地址端”信号与P2.n电平同 相 变化。
总结
1.P0~P3口 都可作为准双向通用I/O口;
2.其中只有P0口需要外接上拉电阻;
3.在需要扩展片外设备时,P2口可作为其地址线接口;
4.P0口可作为其地址线/数据线复用接口,此时它是真正的双向口。