首页 理论教育51单片机案例笔记:C51双向口和准双向口详解

51单片机案例笔记:C51双向口和准双向口详解

【摘要】:“准”就是“基本上的意思”,也就是“准双向口”不是真正的双向口。双向与准双向,根本区别是双向包含高阻这个状态,而不在于是否需要先写1或者不写。而真正的双向I/O口,有方向控制寄存器,作为输入使用时输出部分被断开。

51单片机的说明书上:"Because Ports 1,2,and 3 have fixed internal pull ups,they are sometimes called quasi-bidirectional ports.When configured as inputs,they pull high and source current(IIL)when externally pulled low.Port 0,on the other hand,is considered truly bidirectional,because it floats when configured as an input."

翻译是:因为P1、P2、P3有固定的内部上拉电阻,所以有时称它们为准双向口。当用做输入时被拉高,若要求低电平则要靠外部电路拉低。而P0则是真双向口,因为作为输入时它是悬浮的。“准”就是“基本上的意思”,也就是“准双向口”不是真正的双向口。

其实重点在P0口。P0口的双向指的是它被用做地址/数据端口时,才处于两个开关管推挽状态,当两个开关管都关闭时,才会出现高阻状态。当P0口用于一般I/O口时,内部接VCC的那个开关管是与引脚(端口)脱离联系的,这时只有拉地的那个开关管起作用。P0口作为输出,是必须外接上拉电阻的,否则无法输出高电平;如果P0口作为输入,则必须先对端口写1,使拉地的开关管断开,这时如果不接上拉电阻,则是高阻状态,就是一个双向口,如果接上拉电阻,则本身输出高电平,对输入信号的逻辑无影响。(www.chuimin.cn)

双向与准双向,根本区别是双向包含高阻这个状态,而不在于是否需要先写1或者不写。P1~P3口因为有内部上拉电阻,所以不是双向;P0口内部无上拉电阻,在处于数据/地址功能时,自动完成三态的转换,是双向;处于一般I/O口时,如果不接外部上拉电阻,而且先向端口写1,那么就处于高阻状态,此时,它也是一个人为的双向口,这与处于地址/数据功能时的自动双向有区别,也和P1~P3处于输入时输出锁存器为1是有区别的。当作为输入使用时,将开关断开,这样就只剩下上拉(或者下拉)电阻,因而阻抗比较高,可以由其他设备驱动该I/O口。准双向口在作为输入使用时,实际上还是一种输出状态,只是该输出状态的内阻比较大而已。而真正的双向I/O口,有方向控制寄存器,作为输入使用时输出部分被断开。