单片机的I/O接口是用来输入和控制输出的端口,DIP40封装的51系列单片机共有P0、P1、P2、P3四组端口,分别与单片机内部P0、P1、P2、P3寄存器对应,每组端口有8位,因此DIP40封装的51系列单片机共有32个I/O端口。STC89C52RC单片机有5个端口P0、P1、P2、P3、P4,其中P4口在LQFP44、PQFP44、PLCC44等封装形式中才有,其他有很多引脚和控制信号共用引脚。
1 P0口引脚
P0是一个双功能的8位并行接口,字节地址为80H,位地址为80H~87H。接口的各位具有完全相同但又相互独立的电路结构。P0口分别占用32~39脚,依次命名为P0.0~P0.7。P0口既可作为输入/输出口,也可作为地址/数据复用总线使用。当P0口作为输入/输出口时,P0是一个8位准双向口,上电复位后处于开漏模式,P0口内部无上拉电阻,所以作为I/O接口必须外接10~4.7kΩ的上拉电阻。当P0作为地址/数据复用总线使用时,是低8位地址线(A0~A7)和数据线(D0~D7)共用,此时无须外接上拉电阻。
如果用户向3V单片机的引脚上加5V电压,将会有电流从引脚流向VCC,这样导致额外的功率消耗。因此,建议不要在准双向口模式中向3V单片机引脚施加5V电压,如使用的话,要加限流电阻,或用二极管进行输入隔离,或用三极管进行输出隔离。准双向口带有一个干扰抑制电路。准双向口读外部状态前,要先锁存为1,才可读到外部正确的状态。
P0口具有高电平、低电平和高阻抗输入3种状态的端口,因此,P0口作为地址/数据总线使用时,是一真正的双向端口,简称双向口。
P0口用作通用I/O输出口时,来自CPU的写脉冲加在D锁存器的CP端,内部总线上的数据写入D锁存器,并由引脚P0.X输出。当D锁存器为1时,输出为漏极开路,此时,必须外接上拉电阻才能有高电平输出;当D锁存器为0时,P0口输出为低电平。
P0口作为通用I/O输入口时,有两种读入方式:读锁存器和读引脚。当CPU发出读锁存器指令时,锁存器的状态由Q端经上方的三态缓冲器BUF1进入内部总线;当CPU发出读引脚指令时,锁存器的输出状态为1,从而使下方场效应晶体管V2截止,引脚的状态经下方的三态缓冲器BUF2进入内部总线。
综上所述,P0口具有如下特点:
1)当P0口作为地址/数据总线口使用时,是一个真正的双向口,与外部扩展的存储器或I/O连接,输出低8位地址和输出/输入8位数据。
2)当P0口作为通用I/O口使用时,P0口各引脚需要在片外接上拉电阻,此时端口不存在高阻抗的悬浮状态,因此是一个准双向口。
大多数情况下,单片机片外部扩展RAM或I/O接口芯片,此时P0口只能作为复用的地址/数据总线使用。如果单片机片外没有外扩RAM和I/O接口芯片,此时P0口才能作为通用I/O口使用。
2 P1口引脚
P1口占用1~8脚,分别是P1.0~P1.7,字节地址为90H,位地址为90H~97H。P1口是一个带内部上拉电阻的8位双向I/O接口,每位能驱动4个LSTTL门负载。这种接口没有高阻状态,输入不能锁存,因而不是真正的双向I/O接口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。其中,P1.0和P1.1还可以作为定时/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体见表2-6。
表2-6 P1.0和P1.1引脚特性
对P1口的操作既可字节操作,又可位操作。
P1口作为输入口时,分为读锁存器和读引脚两种方式。这样保证单片机输入的电平与外接电路电平相同。例如,使用输入指令MOV A,P1时,应先使锁存器置1(即通常所说的置端口为输入方式),再把P1口的数据读入累加器A。(www.xing528.com)
P1口作为输出口时,内部总线输出0时,即输出为0;内部总线输出1时,即输出为1。
3 P2口引脚
P2口是一个双功能口,分别是P2.0~P2.7,字节地址为A0H,位地址为A0H~A7H。P2口内部带上拉电阻的8位双向I/O接口,P2可以作为普通I/O接口使用,也可作为高8位地址总线使用(A8~A15),当系统外接存储器和扩展I/O接口时,作为扩展系统的高8位地址总线,与P0口一起组成16位地址总线,兼有地址总线高8位输出功能。
当P2口作为输入/输出口时,P2是一个8位准双向口。在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX @DPTR”指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行“MOVX @R1”指令)时,P2口引脚上的内容就是专用寄存器SFR区中的P2寄存器的内容,在整个访问期间不会改变。
1)P2口用作地址总线口:P2口作为地址输出线使用时,可输出外部存储器的高8位地址,与P0口输出的低8位地址一起构成16位地址,可寻址64KB的片外地址空间。当P2口作为高8位地址输出口时,输出锁存器的内容保持不变。
2)P2口用作通用I/O接口:在内部控制信号作用下,CPU输出1时,P2.X引脚输出1;CPU输出0时,P2.X引脚输出0。
P2口作为通用I/O接口使用时,功能与P1口一样。一般情况下,P2口大多作为高8位地址总线口使用,这时就不能再作为通用I/O接口。如果不作为地址总线口使用,可作为通用I/O接口使用。
P2口输出的高8位地址可以是片外ROM、RAM高8位地址,与P0口输出的低8位地址共同构成16位地址线,从而可分别寻址64KB的程序存储器和片外数据存储器。地址线以字节为操作单位,8位一起输出的,不能进行位操作。
如果AT89C51单片机有扩展程序存储器(地址不小于1000H),访问片外ROM的操作连续不断,P2口要不断送出高8位地址,这时,P2口不宜再作为I/O接口使用。
4 P3口引脚
P3口的8个引脚占用10~17脚,分别是P3.0~P3.7。P3是一个带内部上拉电阻的8位双向I/O接口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。P3是双功能端口,作为普通I/O接口使用时,同P1、P2口一样,作为第二功能使用时,引脚定义见表2-7。P3口引脚具有的第二功能,能使硬件资源得到充分利用。
表2-7 P3口的第二功能表
(续)
由于P3口每一引脚都有第一功能与第二功能,究竟是使用哪个功能,完全是由单片机执行的指令控制来自动切换的,用户不需要进行任何设置。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。