”。
因此,读端口前一般应先向端口锁存器写入“l”。保证T2截止。 注意:(1)如果给端口写1时,T1、T2均不导通,无法保证端口输出为高电平;
(2)读引脚时,没有将T2关闭,端口输入1读到的是0,因此读端口前要保证T2是关闭的,最好给T2写1。
(3) 读P0口D锁存器:8051有几条输出指令功能特别强,属于“读-修改—写”指令。
例如,执行—条“ANL P0,A”指令的过程是:不直接读引脚上的数据,而是CPU先读P0口D锁存器中的数据,当“读锁存器”信号有效.三态缓冲器2开通,Q端数据送入内部总线和累加器A中的数据进行“逻辑与”操作,结果送P0端口锁存器。此时,锁存器的内容(Q端状态)和引脚是—致的。 (以端口接一三极管基极为例)
3、P0口作为地址/数据总线使用
CPU对片外存储器读写,由于指令不同,在执行相应指令时,内部硬件自动使控制线C=l,开关MUX拨向反相器输出端。这时P0口可作地址/数据总线分时使用,分为两种情况。
①P0口用作输出地址/数据总线:在扩展系统中,—种是以P0口引脚输出低8位地址或数据信息。MUX开关把CPU内部地址/数据线经反向器与驱动场效应管FET(T2)栅极接通。
②另一种情况是由P0口输入数据。这种情况是在“读引脚”信号有效时打开输入缓冲器使数据进入内部总线。 4、总结:
●P0既可作一般I/O端口用使用,又可作地址/数据总线使用。 ● I/O输出时,必须外接上拉电阻,才能保证高电平可靠输出; ●作I/O输入时,必须先向对应的锁存器写入“1”,使T2截止,才能保证输入的正确。
●当P0口被地址/数据总线占用时,就无法再做I/O口使用了。 ●作I/O口时是准双向总线,扩展时是双向总线。
三、 P1口 1、P1口某位结构
P1口是一个准双向口。
2、工作原理
作通用I/O口使用。其电路结构见图,输出驱动部分与P0口不同、内部有上拉负载电阻与电源相连。

