详解80C51单片机的四种I/O口

在80c51单片机中有4个双向的8位i/o口p0~p3,在无片外存储器的系统中,这4个i/o口的每一位都可以作为准双向通用i/o使用。
在具有片外存储器的系统中,p0口作为地址线的低8位以及双向数据总线,p2口作为高8位的地址线。这4个i/o口除了可以按字节寻址外,还可以按位寻址。
p0口
下图给出了p0口的逻辑结构,它由一个锁存器,两个三态输入缓冲器,一个多路复用开关,一个与门,一个非门以及控制电路和驱动电路组成。
“锁存器,是数字电路中的一种具有记忆功能的逻辑元件。锁存,就是把信号暂存以维持某种电平状态,在数字电路中则可以记录二进制数字信号0和1。
只有在有锁存信号时输入的状态被保存到输出,直到下一个锁存信号。通常只有0和1两个值。
三态缓冲器(three-state buffer),又称为三态门、三态驱动器,其三态输出受到使能输出端的控制。
当使能输出有效时,器件实现正常逻辑状态输出(逻辑0、逻辑1),当使能输入无效时,输出处于高阻状态,即等效于与所连的电路断开。”
p0口可以作为输入或输出口,在实际应用中通常作为地址/数据复用总线。
在访问外部存储器时,p0口才是真正的双向口。
当p0口输出地址/数据信息时,此时控制信号线为高电平,模拟开关将地址/数据线与场效应管vt2接通,同时与门输出有效,输出结果由地址/数据线信号决定。
与门输出的地址/数据信息去驱动vt1,同时通过非门反相信号后驱动vt2。vt1与与vt2为推拉结构,同一时刻,只有一个管能导通。若地址/数据线为1,则vt1导通,vt2截止,p0口输出高电平;反之输出低电平。
当数据从p0口输入时,读引脚使三态缓冲器打开,端口上的数据经三态缓冲器后送到内部的数据总线,完成读引脚。
当p0口作为通用i/o时,cpu向端口输出数据,此时控制信号为低电平,模拟开关与锁存器的反相端连接,写信号与锁存器的控制总线(时钟线)相连,于是内部数据总线上的数据经反相后出现在vt2端,再经vt2反相后输出到p0端口,输出的数据经过两次反相后相位不变。
由于vt2位漏极开路输出,为了完成vt2反相功能,此时需要外接上拉电阻。
当p0口作为输入时,由于信号加载在vt2上被送入三态缓冲器,若该接口此前刚锁存过数据0,则vt2是导通的,vt2的输出被钳位在0,此时输入的1无法读入,所以当p0口作为通用i/o时,在输入数据之前,必须先向端口写1,使vt2截止。不过当在访问外部程序存储器时,cpu会自动向p0口写1。
有时需要先将端口的数据写入,经过修改后再输出到端口,若此时p0口的负载正好是晶体管的基极,并且其输出为1,这必然导致该引脚为低,若此时读取引脚信号,则会将刚输出的1误读为0,为了避免这类误读的错误,于是单片机还提供了读锁存器的功能。
例如执行inc p0时,cpu先读p0锁存器中的数据,然后再执行加1操作,最后将结果送回p0口,这样单片机从结构上满足了读改写这类操作的需要。
p1口
p1口是一个准双向口,通常作为通用i/o使用,结构图如下。
由于在其输出端接有上拉电阻,故可以直接输出而不需要外接上拉电阻。
同p0口一样,当做输出口时,必须先向端口写1,使场效应管截止。同时,它可以被任何数字逻辑电路驱动,包括ttl电路,mos电路和oc电路。
p2口
p2口位结构图如下。
p2口作为一个准双向口,其位结构与p0口相似,当系统外接片外存储器时,它输出高8位地址,此时开关在cpu的控制下接通地址信号。
同时它还可以作为通用i/o使用,此时开关接通锁存器的q端。对于80c51单片机来说,p2口通常用作地址信号输出。
p3口
p3口位结构图如下。
p3口位双功能口,当p3口作为通用i/o口使用时,它为准双向口,且每位都可定义为输入或输出,其工作原理与p1口类似。
p3口还有第二功能,其引脚描述如下表:
对于输出而言,此时相应位的锁存器由cpu自动输出1,有效输出第二功能。
对于输入而言,无论该位是作为通用输入口还是第二功能输入口,相应的锁存器和选择输出功能端都应置1,该工作在开机或复位时cpu自动完成。
80c51系列单片机的并行i/o接口有以下应用特性:1)p0,p1,p2,p3作为通用双向i/o口使用时,输入操作是读引脚状态;输出操作是对口的锁存器的写入操作,锁存器状态立即反映到引脚上;
2)p1,p2,p3作为输出口时,由于电路内部带上拉电阻,因此无须外接上拉电阻。
3)p0,p1,p2,p3作为通用输入口时,必须使电路中的锁存器写入高电平1。
4)i/o口功能自动识别,无论是p0,p2的总线复用功能,还是p3口的第二功能复用,单片机会自动选择。
5)两种读端口的方式,包括端口锁存器的读、改,写操作和读引脚操作。在单片机中,有些指令是读端口锁存器的,如一些逻辑运算指令,置位/复位指令,条件转移指令以及将i/o口作为目的地址的操作指令;有些指令是读引脚的,如以i/o口作为源操作数的指令mov a,p1。
6)i/o的驱动特性。由于p1,p2,p3口内部带上拉电阻,其引脚拉出电流能力弱,吸入电流能力强,也就是输出驱动能力弱,可驱动4个ls ttl输入;而p0口每个i/o可以驱动8个ls ttl输入。

树莓派驱动舵机介绍_树莓派驱动舵机代码
NIDays 2015全球图形化系统设计盛会中国站圆满落幕
mpu6050姿态解算
tcp0030a电流探棒的用途
芯华章宣布朱洪辰出任副总裁,强化技术解决方案的开发与部署
详解80C51单片机的四种I/O口
NVIDIA 故事 | 利用 NVIDIA 技术探索外太空和探究药物发现的巨大化学空间
6种I/O模式告诉你协程的作用
Vicor的AC前端拓扑转换器的应用介绍
关于车载娱乐在智能驾驶中的作用
电荒持续凸显新能源投资价值
Modelithics和Qorvo大力扩展GaN RF仿真模型库
波音隐瞒MAX 737型飞机的问题遭到了股东的集体诉讼
电缆/电线的最大载流能力
送女朋友礼物排行榜,高颜值耳机分享!
2019人工智能·艺术与科技展暨数字媒体艺术教育论坛”在沪举行
valgrind检测内存问题的原理
区块链如何影响资产所有权
智能工厂时代下,食品工业智能生产提上日程
PTC线性热敏电阻工作原理