用时,就不能再把它当通用IO口使用。P1口是8位准双向口,作通用输入/输出口使用,如图6b所示。在输出驱动器部分,Pl口有别于P0口,它接有内部上拉电阻。P1口的每以一位可以独立地定义为输人或者输出,因此,P1口既可作为8位并行输入/输出口,又可作为8位输入/输出端。CPU既可以对P1口进行字节操作,又可以进行位操作。当作输入方式时,该位的锁存器必须顶写1。P2口是8位准双向输入/输出接口,如图6c所示。P2口可作通用I/0口使用与P1口相同。当外接程序存储据时,P2口给出地址的高8位,此时不能用作通用,I/O口。当外按数据存储器时,若RAM小于256KB,用R0、R1作间址寄存器,只需要P0口送出地址低8位,P2口可以用作通用I/O;若RAM大于256KB,必须用16位寄存器DPTR作间址寄存器.则P2口只能在一定限度内作一股I/O口使用。P3口也是一个8位的准双向输入/输出接口,如图6d所示。它具有多种功能。一方面与P1口一样作为一般准双向输入/输出接口,具有字节操作和位操作二种工作方式;另一方面8条闲人/输出线可以独立地作为串行输入/输出口和其它控制信号线。
图6
IO一位锁存器和缓冲器结构
6
f浙江师范大学数理与信息工程学院课程设计用8051单片机实现步进电机控制
P0P3端口的负载能力及接口要求P0口的输出级与P1P3口的输出级在结构上是不同的,因此它们的负载能力和接口要求也各不相同。P0口的每一位输出可驱动8个LSTTL输入,但把它当通用口使用时,输出级是开漏电路,故用它驱动NM0S输入时需外接上拉电阻;把它当地址/数据总线时,则需接外部上拉电阻。P1P3口的输出级接有内部上拉电阻,它们的每一位输出可驱动4个LSTTL输入。CHMOS端口只能提供几毫安的输出电流,故当作为输出口去驱动一个普通晶体管的基极时,应在端口与晶体管基极间串联一个电阻,以限制高电平输出时的电流。IO口的读一修改一写特性由图6可见,每个I/O端口均有两种读人方法,读锁存器和读引脚,并有相应的指令,那么如何区分读端口的指令是读锁存器还是读引脚呢读锁存器指令是从锁存器中读取数据,进行处理,并把处理以后的数据重新写入锁存器中这类指令称为“读一修改一写”指令。当目的操作数是一个I/O端口或I/O端口的某一位时,这些指令是读锁存器而不是读引脚,即为“读一修改一写”指令,下面是一些“读一修改一写”指令。
ANLORLXRLJBCCPLINCDECDJNZMOVP17CLRP14SETBP12
逻辑与例如ANLP1A逻辑或例如ORLP2A逻r