单片机I/O口的使用 ■对单片机的控制,其实就是对I/O口的控制, 无论单片机对外界进行何种控制,亦或接 受外部的控制,都是通过I/O口进行的。单 片机总共有P0、P1、P2、P3四个8位双向输 入输出端口,每个端口都有锁存器、输出 驱动器和输入缓冲器。4个1/O端口都能作 输入输出口用,其中PO和P2通常用于对外 部存储器的访问
单片机I/O口的使用 ◼ 对单片机的控制,其实就是对I/O口的控制, 无论单片机对外界进行何种控制,亦或接 受外部的控制,都是通过I/O口进行的。单 片机总共有P0、P1、P2、P3四个8位双向输 入输出端口,每个端口都有锁存器、输出 驱动器和输入缓冲器。4个I/O端口都能作 输入输出口用,其中P0和P2通常用于对外 部存储器的访问
§4.1MS-51单片机的并行端口结构与操作 51系列单片机有4个10端口,每个端口都是8 位准双向口,共占32根引脚。每个端口都包括一个 锁存器(即专用寄存器P0~P3)、一个输出驱动器和 输入缓冲器。通常把4个端口笼统地表示为P0~P3
§4.1 MCS-51单片机的并行端口结构与操作 51系列单片机有4个I/O端口,每个端口都是8 位准双向口,共占32根引脚。每个端口都包括一个 锁存器(即专用寄存器P0~P3)、一个输出驱动器和 输入缓冲器。通常把4个端口笼统地表示为P0~P3
在无片外扩展存储器的系统中,这4个端口的每 位都可以作为准双向通用10端口使用。在具有片外扩 展存储器的系统中,P2口作为高8位地址线,P0口分时 作为低8位地址线和双向数据总线。 51单片机4个10端口线路设计的非常巧妙,学习 1/端口逻辑电路,不但有利于正确合理地使用端口, 而且会给设计单片机外围逻辑电路有所启发 下面简单介绍一下输入/输出端口结构。 4.1.1P0口和P2的结构
在无片外扩展存储器的系统中,这4个端口的每一 位都可以作为准双向通用I/O端口使用。在具有片外扩 展存储器的系统中,P2口作为高8位地址线,P0口分时 作为低8位地址线和双向数据总线。 51单片机4个I/O端口线路设计的非常巧妙,学习 I/O端口逻辑电路,不但有利于正确合理地使用端口, 而且会给设计单片机外围逻辑电路有所启发。 下面简单介绍一下输入/输出端口结构。 4.1.1 P0口和P2的结构
P0口的结构 下图为P0口的某位P0.n(n=0~7)结构图,它由一个 输出锁存器、两个三态输入缓冲器和输出驱动电路 及控制电路组成。从图中可以看出,P0口既可以作 为1/0用,也可以作为地址/数据线用。 地址/数据Vc 读锁存器 控制 P0口 内部总线 PO.n 引脚 写锁存器 CLK Q MUX 读引脚
下图为P0口的某位P0.n(n=0~7)结构图,它由一个 输出锁存器、两个三态输入缓冲器和输出驱动电路 及控制电路组成。从图中可以看出,P0口既可以作 为I/O用,也可以作为地址/数据线用。 D Q CLK Q MUX P0.n 读锁存器 内部总线 写锁存器 读引脚 地址/数据 控制 VCC T1 T2 P0口 引脚 一、P0口的结构
1、P0口作为普通/0口 ①输出时 CPU发出控制电平“03封锁“与”门,将输出上拉场效 应管T1截止,同时使多路开关MX把锁存器与输出 地址/数据Vc 读锁存器 控制 P0口 内部总线 PO.n 引脚 写锁存器 CLK Q MUX 读引脚
1、P0口作为普通I/O口 ①输出时 CPU发出控制电平“0”封锁“与”门,将输出上拉场效 应管T1截止,同时使多路开关MUX把锁存器与输出 D Q CLK Q MUX P0.n 读锁存器 内部总线 写锁存器 读引脚 地址/数据 控制 VCC T1 T2 P0口 引脚
驱动场效应管T2栅极接通。故内部总线与P0口同相。由 于输岀驱动级是漏极开路电路,若驱动№M0S或其 它拉流负载时,需要外接上拉电阻。P0的输出级可驱动 8个LST负载。 地址/数据Vc 读锁存器 控制 P0口 内部总线 PO.n 引脚 写锁存器 CLK Q MUX 读引脚
驱动场效应管T2栅极接通。故内部总线与P0口同相。由 于输出驱动级是漏极开路电路,若驱动NMOS或其 它拉流负载时,需要外接上拉电阻。P0的输出级可驱动 8个LSTTL负载。 D Q CLK Q MUX P0.n 读锁存器 内部总线 写锁存器 读引脚 地址/数据 控制 VCC T1 T2 P0口 引脚
②输入时-—分读引脚或读锁存器 读引脚:由传送指令(M0实现; 下面一个缓冲器用于读端口引脚数据,当执行一条 由端口输入的指令时,读脉冲把该三态缓冲器打开, 这样端口引脚上的数据经过缓冲器读入到内部总线。 地址/数据Vc 读锁存器 控制 P0口 内部总线 PO.n 引脚 写锁存器 CLK Q MUX 读引脚
② 输入时----分读引脚或读锁存器 读引脚:由传送指令(MOV)实现; 下面一个缓冲器用于读端口引脚数据,当执行一条 由端口输入的指令时,读脉冲把该三态缓冲器打开, 这样端口引脚上的数据经过缓冲器读入到内部总线。 D Q CLK Q MUX P0.n 读锁存器 内部总线 写锁存器 读引脚 地址/数据 控制 VCC T1 T2 P0口 引脚
②输入时-—-分读引脚或读锁存器 读锁存器:有些指令如:ANLP0,A称为“读-改-写” 指令,需要读锁存器。 上面一个缓冲器用于读端口锁存器数据 地址/数据Vc 读锁存器 控制 P0口 内部总线 PO.n 引脚 写锁存器 CLK Q MUX 读引脚
D Q CLK Q MUX P0.n 读锁存器 内部总线 写锁存器 读引脚 地址/数据 控制 VCC T1 T2 P0口 引脚 ② 输入时----分读引脚或读锁存器 读锁存器:有些指令 如:ANL P0,A称为“读-改-写” 指令,需要读锁存器。 上面一个缓冲器用于读端口锁存器数据
*原因:如果此时该端口的负载怡是一个晶体管基极,且原端 口输出值为1,那么导通了的叫N结会把端口引脚高电平拉低;若 此时直接读端口引脚信号,将会把原输出的“1“电平误读为“0 电平。现采用读输出锁存器代替读引脚,图中,上面的三态缓 冲器就为读锁存器Q端信号而设,读输出锁存器可避免上述可能 发生的错误。* 地址/数据Vc 读锁存器 控制 P0口 内部总线 PO.n 引脚 写锁存器 CLK Q MUX 读引脚
**原因:如果此时该端口的负载恰是一个晶体管基极,且原端 口输出值为1,那么导通了的PN结会把端口引脚高电平拉低;若 此时直接读端口引脚信号,将会把原输出的“1”电平误读为“0” 电平。现采用读输出锁存器代替读引脚,图中,上面的三态缓 冲器就为读锁存器Q端信号而设,读输出锁存器可避免上述可能 发生的错误。** D Q CLK Q MUX P0.n 读锁存器 内部总线 写锁存器 读引脚 地址/数据 控制 VCC T1 T2 P0口 引脚
P0口必须接上拉电阻 在读信号之前数据之前,先要向相应的锁存器做写1操作的I/O口 称为准双向口; 三态输入缓冲器的作用: ● (ANL PO, A) OUTPUT QI POi 9013 GND
◼ P0口必须接上拉电阻; ◼ 在读信号之前数据之前,先要向相应的锁存器做写1操作的I/O口 称为准双向口; ◼ 三态输入缓冲器的作用: ◼ (ANL P0,A) P0i Q 1 9013 VCC GND OUTPUT