单片机IO口结构与工作原理.pdf





《单片机IO口结构与工作原理.pdf》由会员分享,可在线阅读,更多相关《单片机IO口结构与工作原理.pdf(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、P0口的结构及工作原理 P0口8位中一位的结构图如下图所示:从上图可以看出,P0口由锁存器、输入缓冲器、开关、与非门、与门和场效应晶体管驱动电路组成。接下来先分析构成P0口的各个部分:首先看输入缓冲器:在P0口中,有两个三态缓冲器,其输出可以是高电平,也可以是低电平,还有也就是高阻态(或禁用态),上位是读锁存器的缓冲器,下位是读管脚的缓冲器,读取P0.X管脚上的数据,使之三态缓冲器若有效,则将引脚上的数据传输到外部数据总线。D锁存器:AD触发器用于在51单片机的32个I/O口线中形成一个锁存器。D端为数据输入端,CP为控制端(即时序控制信号输入端),Q为输出端,Q为反向输出端。多路开关:在
2、51单片机中,当不需要外接扩展存储器时,P0口可作为通用输入输出口(即I/O)。当需要扩展内存容量时,P0 端口用作“地址/数据”总线。该多路复用器开关用于选择是将其用作普通 I/O 端口还是用作“数据/地址”总线的选择器开关。当多路复用器连接到底部时,P0 端口用作公共 I/O 端口。当多路复用器连接到顶部时,P0 端口用作“地址/数据”总线。输出驱动部分:端口P0的输出是由两个MOS管组成的推挽结构,也就是说这两个MOS管一次只能导通一个。V1开启时,V2关闭,V2开启时。打开时,V1 关闭。当P0口作为I/O口时,多路复用器的控制信号为0(低电平),V1管关断,多路复用器接到锁存器的Q非
3、端(即,P0 端口用作 I/O 端口)。使用 O 端口线)。用作地址/数据线时,多路复用器的控制信号为1,V1管由地址/数据线决定,多路复用器接地址/数据线。输出过程:1、I/O输出工作过程:当写锁存信号CP有效时,数据总线的信号锁存器的输入端D锁存器的反向输出Q非端复用开关门V2管极V2漏极至输出端P0.X。此时多路复用器的控制信号为低电平0,V1管截止,所以作为输出口时,P0为开漏输出,类似于OC门。驱动电流负载时,需要外部上拉。反抗。下图是从外部数据总线输出数据到P0口(红色箭头)的流程图。2.地址输出过程 当控制信号为1,地址信号为“0”时,与门输出低电平,V1管截止;反相器输出高电平
4、,V2管导通,输出脚地址信号为低电平。反之,当控制信号为“1”时,地址信号为“1”,“与门”输出高电平,V1管导通;反相器输出低电平,V2管截止,输出脚地址信号为高电平。请看下图(蓝色字体为水平):可以看出,在输出“地址/数据”信息时,V1和V2管交替导通,负载能力很强,可以直接连接外设存储器,无需添加总线驱动。3.作为数据总线的输出过程 如果指令为输出数据,如MOVX DPTR,A(将累加器的内容通过P0口数据总线传送到外部RAM),多路开关的“控制”信号为1,“与门”解锁,与输出地址信号的工作流程类似,通过“地址/数据”线反相器V2场效应管V2漏极输出数据数据。输入过程:1、I/O读管脚工
5、作流程:读芯片管脚数据时,读管脚缓冲器打开,通过外部数据总线输入,见下图(红色表头)。2、I/O读锁存器的工作过程:通过打开读锁存器三态缓冲区来读取锁存器输出 Q的状态,见下图(红色箭头):3.地址/数据时读取指令代码和数据处理 用作数据总线。访问外部程序存储器时,P0口输出低8位地址信息后,变成数据总线,从而可以读取指令代码(输入)。取指令时,“控制”信号为“0”,V1管关断,多路复用器也转至锁存器的反相输出端Q;CPU自动将0FFH(11111111,即写高电平1)写入P0口锁存器,使V2管关断。在读管脚信号的控制下,指令代码通过读管脚三态门电路读入外部总线。这个过程和 I/O 读取引脚的
6、过程是一样的。在输入状态下,从锁存器和引脚读取的信号一般是相同的,但也有例外。例如,从总线输出低电平后,锁存器Q=0,Q not=1,场效应管T2导通,端口线处于低电平状态。此时,无论端口线上的外部信号是低电平还是高电平,从该引脚读入单片机的信号都是低电平,因此无法正确读取该端口引脚上的信号。又例如,当从总线输出高电平时,锁存器Q=1,Q non=0,场效应管T2截止。如果外部引脚信号为低电平,则从引脚读取的信号与从锁存器读取的信号不同。为此,8031 MCU对端口P0-P3的输入操作有如下约定:为此,8051 MCU对端口P0-P3的输入操作有如下约定:所有属于读取的命令-modify-wr
7、ite 模式,从锁存器读取信号,其他指令从端口引脚线读取信号。read-modify-write指令的特点是从端口输入(读)信号,单片机执行操作(修改)后输出(写)到端口。之所以这样安排,是因为read-modify-write命令需要获取端口原来输出的状态,修改后再输出。读取锁存器而不是读取引脚可以避免由于外部电路导致原始端口的状态被错误读取。.当 P0 用作地址/数据总线时,在读取指令代码或输入数据之前,CPU 会自动将 0FFH 写入 P0 端口锁存器,从而破坏 P0 端口的原始状态。因此,它不能再用作通用 I/O 端口。在设计系统时,必须注意程序中不能再包含以P0端口为操作数的指令(包
8、括源操作数和目的操作数)。二、P1口的结构及工作原理 从图中可以看出,P1口和P0口的主要区别在于P1口用上拉电阻R代替了P0口的场效应管T1,输出信息只来自外部总线.外部总线输出的数据经过锁存器和场效应管反相后锁存到端口线上,所以P1端口是一个带输出锁存器的静态端口。要正确地从引脚读取外部信息,必须先关闭 FET,这样才能通过从外部输入的信息来确定引脚的状态。为此,在读入引脚之前,必须先将 l 写入端口。具有这种操作特性的输入/输出端口称为准双向 I/O 端口。8051单片机的P1、P2、P3都是准双向口。因为P0端口的输出具有三态功能,在输入之前,端口线已经处于高阻状态,不需要先写1再进行
9、读操作。单片机复位后,各端口已自动写入1,此时可直接进行输入操作。如果在申请端口的过程中,P1-P3端口线已经输出了0,那么再次输入时,必须先写1再读pin,才能得到正确的信息。此外,根据输入命令的不同,P1 端口还具有读锁存器和读引脚。三、P2口的结构及工作原理:从图中可以看出,P2端口片内既有上拉电阻,又有开关MUX,所以P2端口在功能上兼有P0端口和P1端口的特点。这主要表现在输出功能上。当开关向下导通时,从总线输出的一位数据经反相器和场效应管反相,然后输出到端口引脚线上;当多路复用器向上切换时,输出地址信号也被反相器和场效应管反相,在端口引脚线上输出。对于8031单片机,必须外接程序存
10、储器组成应用电路(或者我们的应用电路扩展外部存储器),通过P2口周期性输出地址(高8位地址)指令取自外部存储器,因此,P2口的复用开关一直在切换,分时输出外部总线的数据和地址信号线的地址。所以 P2 端口是一个动态 I/O 端口。输出数据被锁存,但不会稳定地出现在端口线上。其实这里输出的数据往往是一个地址,而只是外部RAM的高8位地址。在输入功能方面,P2 端口与 P0 和 H 端口相同,有一个读引脚和一个读锁存器,P2 端口也是一个准双向端口。可以 看出,P2口的主要特点包括:不能输出静态数据;输出外部程序存储器的高8位地址;在执行MOVX指令时,还输出外部RAM的高位地址,所以P2口称为动
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 IO 结构 工作 原理

限制150内