P0~P3口都是并行I/O口,但P0口和P2口还可用来构建数据总线DB和地址总线AB,所以电路中有一个MUX,进行转换。而P1口和P3口无构建系统的数据总线和地址总线的功能,因此,无需转接开关MUX。
P0口可作为总线口,此时为真正的双向口。P0也可作为通用的I/O口使用,此时为准双向口,这时P0口需加上拉电阻,否则无法输出高电平,上拉电阻阻值一般在5~10kΩ之间。P1口、P2口、P3口均为准双向口,这3个口内部已集成了上拉电阻,无需再外接上拉电阻。
注意:准双向口与双向口是有差别的。只有P0口是一个真正的双向口,P1~P3口都是准双向口。原因在于:P0口作数据总线使用时,为保证数据正确传送,需解决芯片内外的隔离问题,即只有在数据传送时芯片内外才接通;否则应处于高阻“悬浮”的隔离状态。因此,P0口的输出缓冲器应为三态门。准双向口仅有两个状态,其I/O口无高阻的“悬浮”状态。
P3口具有第二功能。因此在P3口电路增加了第二功能控制逻辑。这是P3口与其他各口的不同之处。
另外,准双向口作通用I/O的输入口使用时,一定要向该口先写入“1”,即(P0)=(P1)=(P2)=(P3)=FFH(单片机复位后P0~P3口就处于这种状态),使单片机内部并行接口的输出MOS管V1、V2或V截止,方可实现高阻输入,否则该口被引脚上的电位被箝位为低电平“0”,外部信号无法通过该口输入。(www.xing528.com)
CPU对P0~P3口的读操作有两种:读引脚和“读—修改—写”锁存器。当CPU执行MOV A,P i或JB/JNB P i.j,标号(其中i=0~3,j=0~7)时,产生读引脚控制信号,此时读的是引脚的状态。而当CPU执行“读—修改—写”指令(以端口为目的操作数的指令,如ANL、ORL、XRL、DEC、INC、SETB、CLR、CPL等指令)时,产生读锁存信号,此时是先读锁存器的状态,在修改之后,送回锁存器保存。注意:锁存器的状态与其相应的引脚的状态可能不一致。读—修改—写指令举例如下:
当单片机不扩展时,P0~P3口都用于通用I/O接口;但当单片机需扩展时,P0口、P2口、部分P3口,再加上单片机的其他引脚被用于形成扩展所需要的三总线,只有P1口和剩下的P3口还可用于通用I/O接口。
此外,在使用P0、P2、P3口时,无论是P0、P2的总线复用,还是P3口的功能复用均由系统自动选择,不须人工干预来进行端口复用的识别。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。