单片机IO口状态详解

2019-04-15 18:45发布

以前留的一篇文章,写的挺好的,转载到这吧;; 在单片机学习、开发和应用中,IO口的配置对功能的实现起着重要的作用,下面介绍常见的四种配置,而现在很多单片机都兼有这四种配置,可供选择。   .准双向口配置   如下图,当IO输出为高电平时,其驱动能力很弱,外部负载很容易将其拉至低电平。当IO输出为低电平时,其驱动能力很强,可吸收相当大的电流。    准双向口只能有效的读取0,而对1则是采用读取非零的方式,就是读入的时候要先向io上写1,再读。真正的双向口正如其名,就是真正的双向io不需要任何预操作可直接读入读出。 准双向口有三个上拉晶体管,一个极弱上拉,当端锁存器为逻辑“1”时打开,当端口悬空时,极弱上拉将端口上拉至高电平。   第二个上拉晶体管为弱上拉,当端口锁存器为逻辑“1”且端口本身也为“1”时打开,此上拉提供的电流,使准双向口输出为“1”。如果此时端口被外部装置拉到逻辑“0”时,通过施密特触发器,控制弱上拉关闭,而极弱上拉维持开状态,为了把这个端口拉低,外部装置必须有足够的灌电流能力,使管脚上的电压,降到门槛电以下。   第三个上拉晶体管为强上拉,当端口锁存器由“0”跳变到“1”时,这个上拉用来加快端口由逻辑“0”到逻辑“1”的转换速度。   准双向口做为输入时,通个一个施密特触如器和一个非门,用以干扰和滤波。   准双向口用作输入时,可对地接按键,如下图1,当然也可以去掉R1直接接按键,当按键闭合时,端口被拉至低电平,当按键松开时,端口被内部极弱上
晶体管拉至高电平。当端口作为输出时,不应对地外接LED如图形控制,这样端口的驱动能力很弱,LED只能发很微弱的光,如果要驱动LED,要采用图
3的方法,这样准双向口在输出为低时,可吸收20mA的电流,故能驱动LED。图4的方法也可以,不过LED不发光时,端口要吸收收很大电流。 
    .开漏输出配置   这种配置,关闭所有上拉晶体管,只驱动下拉晶体管,下拉与准双向口下拉配置相同,因此只能输出低电平(吸收电流),和高阻状态。不能输出高电平(输也电流)。如果要作为逻辑输出,必须接上拉电阻到VCC。这种配置也可以通过上图3和图4来驱动LED           .推挽输出配置   这种配置的下拉与准双向口和开漏配置相同,具有较强的拉电流能力,不同的是,具有持续的强上拉。因此可以用上图2的方法来驱动LED       .仅为输入配置(高阻配置)   这种配置不能输出电流,也不能有收电流,只能作为输入数据使用。       以上四种配置各有其特点,在使用中应根据其特点灵活运用。   准双向口的最大特点是既可以作为输入,也可以作为输出,不需要通过控制切换。   推挽输出的特点是,无论输也高电平还是低电平都有较大的驱动能力,在输也高电平时,也能直接点亮LED,这在准双向口中是不能办到的。这种配置不宜作为输入,因为这需要外部设备有很强的拉电流的能胃。   仅为输入配置的特点是端口只能作为输入使用,可以获得很高的输入阻抗,在有模拟比较器或ADC的端口中用得较多。   开漏输出配置与准又向口相似,但内部没有上拉电阻。有很好的电气兼容性,外部接上拉电阻到3V电源,就能和3V逻辑器件连接。外部接上拉电阻到5V电源,就要以和5V器件连接。   需要说明的是以上四种配置均可以作为输入,也就是都可以检测端的逻辑状态,但其特性不同,不是每种配置都可以直接接按键。