单片机IO口的使用_图文

单片机I/O口的使用 单片机I/O口的使用
对单片机的控制,其实就是对I/O口的控制, 对单片机的控制,其实就是对I/O口的控制, 无论单片机对外界进行何种控制,亦或接 受外部的控制,都是通过I/O口进行的。单 受外部的控制,都是通过I/O口进行的。单 片机总共有P0、P1、P2、P3四个8 片机总共有P0、P1、P2、P3四个8位双向输 入输出端口,每个端口都有锁存器、输出 驱动器和输入缓冲器。4 I/O端口都能作 驱动器和输入缓冲器。4个I/O端口都能作 输入输出口用,其中P0和P2通常用于对外 输入输出口用,其中P0和P2通常用于对外 部存储器的访问。

§4.1 MCS-51单片机的并行端口结构与操作
51系列单片机有4个I/O端口,每个端口都是8 4 位准双向口,共占32 32根引脚。每个端口都包括一个 32 锁存器(即专用寄存器P0~P3)、一个输出驱动器和 P0~P3 P0 P0~ 输入缓冲器。通常把4个端口笼统地表示为P0~P3 P0 P3。

在无片外扩展存储器的系统中,这4个端口的每一 位都可以作为准双向通用I/O端口使用。在具有片外扩 展存储器的系统中,P2口作为高8位地址线,P0口分时 作为低8位地址线和双向数据总线。 51单片机4个I/O端口线路设计的非常巧妙,学习 I/O端口逻辑电路,不但有利于正确合理地使用端口, 而且会给设计单片机外围逻辑电路有所启发。 下面简单介绍一下输入/输出端口结构。

P0口和P2的结构 口和P2 4.1.1 P0口和P2的结构

一、P0口的结构
下图为P0口的某位P0.n(n=0~7)结构图,它由一个 输出锁存器、两个三态输入缓冲器和输出驱动电路 及控制电路组成。从图中可以看出,P0口既可以作 为I/O用,也可以作为地址/数据线用。
地址/数据 地址/ 控制 VCC

读锁存器 内部总线 写锁存器 读引脚
D Q

T1 P0.n T2 MUX CLK Q

P0口 P0口 引脚

I/O口 1、P0口作为普通I/O口 P0口作为

①输出时
CPU发出控制电平“0”封锁“与”门,将输出上拉场效 0 应管T1截止,同时使多路开关MUX把锁存器与输出
地址/数据 地址/ 控制 VCC

读锁存器 内部总线 写锁存器 读引脚
D Q

T1 P0.n T2 MUX CLK Q

P0口 P0口 引脚

驱动场效应管T2栅极接通。故内部总线与P0口同相。由 于输出驱动级是漏极开路电路,若驱动NMOS或其 它拉流负载时,需要外接上拉电阻。P0的输出级可驱动 8个LSTTL负载。
读锁存器 内部总线 写锁存器 读引脚
D Q MUX

地址/数据 地址/ 控制

VCC

T1 P0.n T2 CLK Q

P0口 P0口 引脚

输入时---- 读引脚或 ② 输入时----分读引脚或读锁存器
读引脚:由传送指令 MOV 实现; MOV)实现 读引脚:由传送指令(MOV 实现; 下面一个缓冲器用于读端口引脚数据,当执行一条 面一个缓冲器用于读端口引脚数据, 引脚数据 由端口输入的指令时,读脉冲把该三态缓冲器打开, 由端口输入的指令时,读脉冲把该三态缓冲器打开, 这样端口引脚上的数据经过缓冲器读入到内部总线。 这样端口引脚上的数据经过缓冲器读入到内部总线。
读锁存器 内部总线 写锁存器 读引脚
D Q MUX

地址/数据 地址/ 控制

VCC

T1 P0.n T2 CLK Q

P0口 P0口 引脚

输入时---- 读引脚或 ② 输入时----分读引脚或读锁存器
读锁存器: P0, 称为“ 读锁存器:有些指令 如:ANL P0,A称为“读-改-写” 指令,需要读锁存器。 指令,需要读锁存器。 上面一个缓冲器用于读端口锁存器数据。 一个缓冲器用于读端口锁存器数据。 锁存器数据
地址/数据 地址/ 控制 VCC

读锁存器 内部总线 写锁存器 读引脚
D Q

T1 P0.n T2 MUX CLK Q

P0口 P0口 引脚

**原因:如果此时该端口的负载恰是一个晶体管基极,且原端 口输出值为1,那么导通了的PN结会把端口引脚高电平拉低;若 此时直接读端口引脚信号,将会把原输出的“1”电平误读为“0” 电平。现采用读输出锁存器代替读引脚,图中,上面的三态缓 冲器就为读锁存器Q端信号而设,读输出锁存器可避免上述可能 发生的错误。** 地址/数据 地址/ 控制 VCC

读锁存器 内部总线 写锁存器 读引脚
D Q

T1 P0.n T2 MUX CLK Q

P0口 P0口 引脚

P0口必须接上拉电阻; P0口必须接上拉电阻; 在读信号之前数据之前,先要向相应的锁存器做写1操作的I/O口 在读信号之前数据之前,先要向相应的锁存器做写1操作的I/O口 称为准双向口; VCC 三态输入缓冲器的作用: (ANL P0,A) P0,

OUTPUT Q1 9013

P0i

GND

准双向口: 从图中可以看出,在读入端口数据时,由于输出 驱动FET并接在引脚上,如果T2导通,就会将输入的 高电平拉成低电平,产生误读。所以在端口进行输 入操作前,应先向端口锁存器写“1”,使T2截止,引 脚处于悬浮状态,变为高阻抗输入。这就是所谓的 准双向口。 地址/ 地址/数据 VCC
读锁存器 内部总线 写锁存器 读引脚
D Q MUX

控制
T1 P0.n T2 CLK Q

P0口 P0口 引脚

2、P0作为地址/数据总线 P0作为地址/ 在系统扩展时,P0端口作为地址/数据总线使用时, 在系统扩展时,P0端口作为地址/数据总线使用时, 端口作为地址 使用时 分为: 分为: P0引脚输出地址/数据信息 引脚输出地址 信息。 P0引脚输出地址/数据信息。
地址/数据 地址/ 控制 VCC

读锁存器 内部总线 写锁存器 读引脚
D Q

T1 P0.n T2 MUX CLK Q

P0口 P0口 引脚

2、P0作为地址/数据总线 P0作为地址/ CPU发出控制电平“ ,打开“ CPU发出控制电平“1”,打开“与”门,又使多路开 发出控制电平 关MUX把CPU的地址/数据总线与T2栅极反相接通,输出地 MUX把CPU的地址/数据总线与T2栅极反相接通, 栅极反相接通 址或数据。由图上可以看出,上下两个FET处于反相, FET处于反相 址或数据。由图上可以看出,上下两个FET处于反相,构 成了推拉式的输出电路,其负载能力大大增强。 成了推拉式的输出电路,其负载能力大大增强。
地址/数据 地址/ 控制 VCC

读锁存器 内部总线 写锁存器 读引脚
D Q

T1 P0.n T2 MUX CLK Q

P0口 P0口 引脚

2、P0作为地址/数据总线 ----真正的双向口 P0作为地址/ P0引脚输出地址/ P0引脚输出地址/输入数据 引脚输出地址 输入信号是从引脚通过输入缓冲器进入内部总线 内部总线。 输入信号是从引脚通过输入缓冲器进入内部总线。 此时,CPU自动使MUX向下 并向P0口写“ , 自动使MUX向下, P0口写 此时,CPU自动使MUX向下,并向P0口写“1”,“读引 控制信号有效,下面的缓冲器打开, 脚”控制信号有效,下面的缓冲器打开,外部数据读入内 部总线。 部总线。 地址/ 地址/数据 VCC
读锁存器 内部总线 写锁存器 读引脚
D Q MUX

控制
T1 P0.n T2 CLK Q

P0口 P0口 引脚

二、P2的内部结构 1.P2口作为普通I/O口
CPU发出控制电平“ 使多路开关MUX MUX倒向锁存 CPU发出控制电平“0” ,使多路开关MUX倒向锁存 发出控制电平 器 输出Q 构成一个准双向口。其功能与P1相同。 P1相同 输出Q端,构成一个准双向口。其功能与P1相同。
读锁存器 内部总线 写锁存器 读引脚
D Q MUX

地址

控制

VCC

R P2.n T CLK Q

P2口 引脚

2.P2口作为地址总线 2.P2口作为地址总线 口作为
在系统扩展片外程序存储器扩展数据存储器且容量超过 在系统扩展片外程序存储器扩展数据存储器且容量超过 程序存储器 @DPTR指令 指令) CPU发出控制电平 发出控制电平“ , 256B (用MOVX @DPTR指令)时,CPU发出控制电平“1”,使多路 开关MUX 内部地址线。此时,P2输出高 位地址。 MUX倒 输出高8 开关MUX倒内部地址线。此时,P2输出高8位地址。
地址 控制 VCC

读锁存器 内部总线 写锁存器 读引脚
D Q

R P2.n T MUX CLK Q

P2口 引脚

P1口 P3口的内部结构 4.1.2 P1口、P3口的内部结构
①P1口的一位的结构 它由一个输出锁存器、两个三态输入缓冲器和输出驱 动电路组成----准双向口。
VCC 读锁存器
R

内部总线 写锁存器 读引脚

D

Q

P1.n P1口 T

引脚

CLK Q

②P3的内部结构 P3的内部结构
一、作为通用I/O口与P1口类似----准双向口(W=1)
第二输出功能 第二输出功能 读锁存器 内部总线 写锁存器 读引脚 第二输入功能 第二输入功能
D Q

VCC
R P3.n P3口 T

W
引脚

CLK Q

②P3的内部结构 P3的内部结构
二、P3 P3第二功能(Q=1) P3 此时引脚部分输入(Q=1、W=1) ,部分输出(Q=1、W输出)
第二输出功能 第二输出功能 读锁存器 内部总线 写锁存器 读引脚 第二输入功能 第二输入功能
D Q



VCC
R P3.n P3口 T

W
引脚

CLK Q

P3第二功能各引脚功能定义: P3 P3.0:RXD串行口输入 P3.1:TXD串行口输出 P3.2:INT0外部中断0输入 P3.3:INT1外部中断1输入 P3.4:T0定时器0外部输入 P3.5:T1定时器1外部输入 P3.6:WR外部写控制 P3.7:RD外部读控制

综上所述:当P0作为I/O口使用时,特别是作 综上所述:当P0作为I/O口使用时,特别是作 为输出时,输出级属于开漏电路,必须外接 上拉电阻才会有高电平输出;如果作为输入, 必须先向相应的锁存器写“ 必须先向相应的锁存器写“1”,才不会影响 输入电平。 当CPU内部控制信号为“1”时,P0口作为地 CPU内部控制信号为“ 时,P0口作为地 址/数据总线使用,这时,P0口就无法再作为 数据总线使用,这时,P0口就无法再作为 I/O口使用了。 I/O口使用了。

P1、P2 和P3 口为准双向口, 在内部差别不大, 但使用 P1、 口为准双向口, 在内部差别不大, 功能有所不同。 ? P1口是用户专用 8 位准双向I/O口, 具有通用输 P1口是用户专用 位准双向I/O口 入/输出功能, 每一位都能独立地设定为输入或输出。 输出功能, 当有输出方式变为输入方式时, 当有输出方式变为输入方式时, 该位的锁存器必须写 入“1”, 然后才能进入输入操作。 P2口是 8 位准双向I/O口。外接I/O设备时, 可 P2口是 位准双向I/O口。外接I/O设备时, 作为扩展系统的地址总线, 输出高8位地址, 作为扩展系统的地址总线, 输出高8位地址, 与P0 口 一起组成 16 位地址总线。 对于 8031 而言, P2 口一 而言, 般只作为地址总线使用, 而不作为I/O线直接与外部 般只作为地址总线使用, 而不作为I/O线直接与外部 设备相连。


相关文档

LESSON1_单片机IO口的使用
实验二 单片机IO口的使用
51单片机及其应用 第3课--单片机IO口的使用
单片机课件 单片机IO口的使用
51单片机IO口使用经验
第4章单片机的IO口
51单片机IO口使用经验绝对经典
51单片机IO口使用DE 经验
占用较少的单片机IO口就能够实现较多的按键功能
电脑版