2024年6月3日发(作者:达陶)
第二讲MCS - 51并行1/O端口
例子:
IO口做输出利用
点灯,LED闪烁,LED流水灯。
2.一名数码管静态显示,两位数码管动态显示,四位数码管动态显示(有两种方式:main
中扫描,和按时器扫描)。
IO口做输入利用
1. 一名按键状态读取。(软件去抖动)
2. 8位—16位按键状态读取。
程序练习:
1. 两个按键操纵数码管加减功能。
2. 楼道灯
3. 入口人数计数器
第一节 MCS - 51并行1/O端口结构
MCS-51共有4个8位的I/O口,别离记作P0、P1、P2、P3。每一个口都包括一个锁存
器、一个输出驱动器和输入缓冲器。事实上,它们已被归入专用寄放器之列,而且具有字节
寻址和位寻址功能。
在访问片外扩展存储器时,低8位地址和数据由P0分时传送,高8位地址由P2口传
送。在无片外扩展存储器的系统中,这4个口的每一名都可作为双向的I/O端口利用。
MCS-51单片机的4个I/O口都是8位双向口,这些口在结构和特性上是大体相同的,
但又各具特点,以下将别离介绍之。
1 P0口
P0口的口线逻辑电路如图1所示。
图 P0口某位结构
如图所见,电路中包括一个数据输出锁存器、两个三态数据输入缓冲器、一个数据输出
的驱动电路和一个输出操纵电路。当对P0口进行写操作时,由锁存器和驱动电路组成数据
输出通路。由于通路中已有输入锁存器,因此数据输出时能够与外设直接连接,而不需再加
数据锁存电路。
考虑到P0口既能够作为通用的I/O口进行数据输入/输出,也能够作为单片机系统的地
址/数据线利用,为此在P0口的电路中有一个多路转接电路MUX。在操纵信号的作用下,
多路转接电路能够别离接通锁存器输出或地址/数据线。看成为通用的I/O口利历时,内部
的操纵信号为低电平,封锁与门,将输出电路的上拉场效应管(FET)截止,同时使多路转
接电路MUX接通封锁存器
Q
端的输出通路。
当P0口作为输出口利历时,内部的写脉冲加在D触发器的CP端,数据写入锁存器,
并向端口输出。
当P0口作为输入口利历时,应区分读引脚和读端口两种情形,为此,在端口电路中有
两个用于读入驱动的三态缓冲器。所谓读引脚确实是读芯片引脚的数据,这时利用下方的数
据缓冲器,由“读引脚”信号把缓冲器打开,把端口引脚上的数据从缓冲器通过内部总线读
进来。利用传送指令(MOV)进行读端口操作都是属于这种情形。
读端口是指通过上面的缓冲器读锁存器Q端的状态。在端口已处于输出状态的情形下,
Q端与引脚信号是一致的,如此安排的目的是为了适应付端口进行“读——修改——写”操
作指令的需要。例如,“ANL P0,A”确实是属于这种指令,执行时先读入P0口锁存器中
的数据,然后与A的内容进行逻辑与,再把结果送回P0口。关于这种“读——修改——写”
指令,不直接读引脚而读锁存器是为了幸免可能显现的错误。因为在端口已处于输出状态的
情形下,若是端口的负载正是一个晶体管的基极,导通了的PN结会把端口引脚的高电平拉
低,如此直接读引脚就会把本来的“1”误读为“0”。但假设从锁存器Q端读,就能够幸免
如此的错误,取得正确得数据。
但要注意,当P0口进行一样的I/O输出时,由于输出电路是漏极开路电路,因此必需
外接上拉电阻才能有高电平输出;当P0口进行一样的I/O输入时,必需先向电路中的锁存
器写入“1”,使FET截止,以幸免锁存器为“0”状态时对引脚读入的封锁。
在实际应用中,P0口绝大多数情形下都是作为单片机系统的地址/数据线利用,这要比
作一样I/O口应用简单。当输出地址或数据时,由内部发出操纵信号,打开上面的与门,并
使多路转接电路MUX处于内部地址/数据线与驱动场效应管栅极反向接通状态。这时输出
驱动电路由于上、下两个FET处于反相,形成推拉式电路结构,使负载能力大为提高。而
当输入数据时,数据信号那么直接从引脚通过输入缓冲器进入内部总线。
2 P1口
P1口的口线逻辑电路如图1所示。
因为P1口一般是作为通用I/O口利用的,因
此在电路结构上与P0口有一些不同的地方:第一
它再也不需要多路转接电路MUX;第二是电路的
内部有上拉电阻,与场效应管一起组成输出驱电
路。为此,P1口作为输出口利历时,已经能向外
提供推拉电流负载,无需再外接上拉电阻。当P1
口作为输入口利历时,一样也需先向锁驱动电路
FET截止。
图 P1口某位结构
3 P2口
P2口的口线逻辑电路如图1所示。
P2口电路比P1口电路多了一个多路
转接电路MUX,这又正好与P0口一样。
P2口能够作为通用I/O口利用,这时多路
转接电路开关倒向锁存器Q端。通常情形
下,P2口是作为高位地址线利用,现在多
路转接电路开关应倒向相反方向。
2024年6月3日发(作者:达陶)
第二讲MCS - 51并行1/O端口
例子:
IO口做输出利用
点灯,LED闪烁,LED流水灯。
2.一名数码管静态显示,两位数码管动态显示,四位数码管动态显示(有两种方式:main
中扫描,和按时器扫描)。
IO口做输入利用
1. 一名按键状态读取。(软件去抖动)
2. 8位—16位按键状态读取。
程序练习:
1. 两个按键操纵数码管加减功能。
2. 楼道灯
3. 入口人数计数器
第一节 MCS - 51并行1/O端口结构
MCS-51共有4个8位的I/O口,别离记作P0、P1、P2、P3。每一个口都包括一个锁存
器、一个输出驱动器和输入缓冲器。事实上,它们已被归入专用寄放器之列,而且具有字节
寻址和位寻址功能。
在访问片外扩展存储器时,低8位地址和数据由P0分时传送,高8位地址由P2口传
送。在无片外扩展存储器的系统中,这4个口的每一名都可作为双向的I/O端口利用。
MCS-51单片机的4个I/O口都是8位双向口,这些口在结构和特性上是大体相同的,
但又各具特点,以下将别离介绍之。
1 P0口
P0口的口线逻辑电路如图1所示。
图 P0口某位结构
如图所见,电路中包括一个数据输出锁存器、两个三态数据输入缓冲器、一个数据输出
的驱动电路和一个输出操纵电路。当对P0口进行写操作时,由锁存器和驱动电路组成数据
输出通路。由于通路中已有输入锁存器,因此数据输出时能够与外设直接连接,而不需再加
数据锁存电路。
考虑到P0口既能够作为通用的I/O口进行数据输入/输出,也能够作为单片机系统的地
址/数据线利用,为此在P0口的电路中有一个多路转接电路MUX。在操纵信号的作用下,
多路转接电路能够别离接通锁存器输出或地址/数据线。看成为通用的I/O口利历时,内部
的操纵信号为低电平,封锁与门,将输出电路的上拉场效应管(FET)截止,同时使多路转
接电路MUX接通封锁存器
Q
端的输出通路。
当P0口作为输出口利历时,内部的写脉冲加在D触发器的CP端,数据写入锁存器,
并向端口输出。
当P0口作为输入口利历时,应区分读引脚和读端口两种情形,为此,在端口电路中有
两个用于读入驱动的三态缓冲器。所谓读引脚确实是读芯片引脚的数据,这时利用下方的数
据缓冲器,由“读引脚”信号把缓冲器打开,把端口引脚上的数据从缓冲器通过内部总线读
进来。利用传送指令(MOV)进行读端口操作都是属于这种情形。
读端口是指通过上面的缓冲器读锁存器Q端的状态。在端口已处于输出状态的情形下,
Q端与引脚信号是一致的,如此安排的目的是为了适应付端口进行“读——修改——写”操
作指令的需要。例如,“ANL P0,A”确实是属于这种指令,执行时先读入P0口锁存器中
的数据,然后与A的内容进行逻辑与,再把结果送回P0口。关于这种“读——修改——写”
指令,不直接读引脚而读锁存器是为了幸免可能显现的错误。因为在端口已处于输出状态的
情形下,若是端口的负载正是一个晶体管的基极,导通了的PN结会把端口引脚的高电平拉
低,如此直接读引脚就会把本来的“1”误读为“0”。但假设从锁存器Q端读,就能够幸免
如此的错误,取得正确得数据。
但要注意,当P0口进行一样的I/O输出时,由于输出电路是漏极开路电路,因此必需
外接上拉电阻才能有高电平输出;当P0口进行一样的I/O输入时,必需先向电路中的锁存
器写入“1”,使FET截止,以幸免锁存器为“0”状态时对引脚读入的封锁。
在实际应用中,P0口绝大多数情形下都是作为单片机系统的地址/数据线利用,这要比
作一样I/O口应用简单。当输出地址或数据时,由内部发出操纵信号,打开上面的与门,并
使多路转接电路MUX处于内部地址/数据线与驱动场效应管栅极反向接通状态。这时输出
驱动电路由于上、下两个FET处于反相,形成推拉式电路结构,使负载能力大为提高。而
当输入数据时,数据信号那么直接从引脚通过输入缓冲器进入内部总线。
2 P1口
P1口的口线逻辑电路如图1所示。
因为P1口一般是作为通用I/O口利用的,因
此在电路结构上与P0口有一些不同的地方:第一
它再也不需要多路转接电路MUX;第二是电路的
内部有上拉电阻,与场效应管一起组成输出驱电
路。为此,P1口作为输出口利历时,已经能向外
提供推拉电流负载,无需再外接上拉电阻。当P1
口作为输入口利历时,一样也需先向锁驱动电路
FET截止。
图 P1口某位结构
3 P2口
P2口的口线逻辑电路如图1所示。
P2口电路比P1口电路多了一个多路
转接电路MUX,这又正好与P0口一样。
P2口能够作为通用I/O口利用,这时多路
转接电路开关倒向锁存器Q端。通常情形
下,P2口是作为高位地址线利用,现在多
路转接电路开关应倒向相反方向。