上图是89C51单片机的封装引脚图,89C51单片机有4个IO端口为P0~P3,每个端口有8个引脚,分别对应8个位0~7,每个端口的引脚都可以作为输入输出利用。
单片机IO端口内部构造个中P3端口有复用功能,比如串口和外部中断功能等,从上两张图中引脚信息也可以看出。
在有利用外部存储器时,P2用作访问外部总线的高8位地址,P0端口用作分时访问外部总线低8位地址和8位数据。

其余P0口没有内部上拉电阻,是一个真正的双向口,引脚内的是一个开漏构造。
P1、P2、P3口的位构造都有一个上拉电阻,因而被称为\"大众准双向口\"大众。正是由于此上拉电阻的存在,以是有些时候P1、P2、P3端口的引脚的外部上拉电阻可以省略,P0端口的引脚某些时候须要考虑利用上拉电阻。下面就以P1端口为例,先容下单片机引脚输入输出功能的运用。
单片机IO引脚输出运用单片机IO引脚作为输出时,实在便是掌握其引脚内部开关管的通断,从而使引脚输出对应的高低电平。下面给出一张掌握led灯的电路图,并讲解IO输出高低电平的掌握过程。
上图中利用P1端口的一个引脚掌握一个Led灯,赤色剪头已经指出了Led亮时电流的流向,紧张便是掌握引脚内部的开关管的通断来掌握Led灯亮灭。
如上图所示,输出数据0时,IO引脚内部开关管导通,从而使IO引脚低电平接地,以是Led灯亮。
当内部总线输出数据为1时,IO引脚内部开关管截止,IO引脚与地断开,通过内部上拉电阻连接到Vcc,以是Led灭。
单片机IO引脚输入运用单片机IO引脚作为输入时,紧张通过外部门歧的高低电平输入,从而读出对应的数据1和0的过程,下面就以一张按键输入电路为例讲解按键的识别过程。
从上图中可以很直不雅观的知道,在IO引脚作为输入时,须要先掌握其内部开关管断开,不然开关管导通会使IO引脚一贯接地,从而读到的会一贯是0。在配置开关管断开后,我们就可以读IO引脚数据了,如果读到1,解释按键没有按下,引脚通过上拉电阻接到电源Vcc,如果读到0,解释按键按下,引脚通过按键连接到地。这样我们就可以判断按键按下了。
总结:1.单片机每一个I/O口都可以独立地作输入或输出口利用,但P0和P2在访问外部存储器时作地址/数据总线,此时它们将不能再作为I/O口利用。
2.当I/O口作为输入时,必须通过程序输出1使内部开关管截止,这样从\"大众管脚Px.x\公众输入的旗子暗记才能在\"大众读管脚\公众旗子暗记的帮助下被精确读走。
3.P1、P2、P3由于内部上拉电阻而被称为\"大众准双向口\"大众。在作输入时,上拉电阻将\"大众管脚Px.x\公众拉高并在外设输入低电平时向外输出电流。
4.P0口没有内部上拉电阻,是一个真正的双向口。作输入时因开漏构造而浮地。
欢迎大家点赞、评论、转发、收藏!
有什么不对、不详细的地方也请大家指出补充。分享是种美德,如果以为此文讲的不错的话,欢迎给个转发分享给更多的朋友。有什么问题也欢迎评论一起互换。更多有关电子电路、单片机、嵌入式、C措辞编程、RTOS的知识,请关注我头条号:单片机嵌入式爱好者。会有更多干货文章分享,帮您加速办理实际工程中碰着的问题。