2.8.3 P2口的结构

2.8.3 P2口的结构

P2口由一个输出锁存器、一个转换开关、两个三态输入缓冲器、输出驱动电路和一个反相器组成。P2口的位结构如图2-26所示。图2-26中控制信号C的状态决定转换开关的位置。当C=0时,开关拨向锁存器输出端位置;当C=1时,开关拨向地址线位置。由图2-26可见,P2口的输出驱动电路内部设有上拉电阻(由两个场效应管并联构成,图中用等效电阻表示)。

图2-26 P2口的位结构

1.P2口用作通用I/O口(C=0)

当不需要在单片机芯片外部扩展程序存储器(对于80C51和87C51单片机,)和数据存储器,或者只需扩展256字节的片外RAM时(访问片外RAM利用MOVX@Ri类指令来实现),只用到了地址线的低8位,P2口不受存储器扩展的影响,这时P2口可以作为通用I/O口使用。

CPU在执行输出指令时,内部数据总线的数据在“写锁存器”信号的作用下由D端进入锁存器,经反相器反相后送至场效应管VT,再经VT反相,最终在P2.X引脚出现的数据正好是内部总线的数据。

P2口用作输入时,数据可以读自口的锁存器,也可以读自口的引脚。这要根据输入操作采用的是“读锁存器”指令还是“读引脚”指令来决定。

CPU在执行“读-修改-写”类输入指令时(如ANL P2,A),内部产生的“读锁存器”信号使锁存器Q端数据进入内部数据总线,在与累加器A进行逻辑运算之后,结果送回P2的口锁存器并出现在引脚。

CPU在执行MOV类输入指令时(如MOV A,P2),内部产生的操作信号是“读引脚”。同样,应在执行输入指令前把锁存器写入“1”,目的是使场效应管VT2截止,从而使引脚处于高阻抗输入状态。

所以,P2口作为通用I/O口时,属于准双向口。

2.P2口用作地址总线(C=1)

当需要在单片机芯片外部扩展程序存储器()或扩展的RAM容量超过256字节时(读/写片外RAM或I/O采用MOVX@DPTR类指令),单片机内硬件会自动使C=1,MUX开关接向地址线,这时P2.X引脚的状态正好与地址线输出的信息相同。