89C51单片机的外部结构及工作原理-硬件结构

从1.3.1节的硬件结构中可以看出,89C51单片机总共有4组端口,P0、P1、P2和P3,了解这4组端口的结构原理对于日后的编程会有很大的帮助,由于这4组端口结构不尽相同,下面分别介绍单片机总的4组端口。既然单片机的引脚有第二功能,那么CPU是如何识别的呢?

单片机的内部结构由CPU、ROM、RAM等组成,现在介绍一下外部引脚。 图 1-3 显示了微控制器的引脚图。 这是实验中使用的89C51单片机的外部引脚图。 表 1-3 为 89C51 单片机引脚分配表。

89C51单片机的外部结构及工作原理-硬件结构

图1-389C51单片机引脚图

89C51单片机的外部结构及工作原理-硬件结构

表1-389C51单片机引脚分配表

端口结构分析

从1.3.1节的硬件结构可以看出,89C51单片机共有4组端口,分别是P0、P1、P2和P3。 了解这4组端口的结构原理对于以后的编程有很大的帮助。 因此,四组端口的结构是不同的。 下面介绍单片机总共四组端口。 由于每组端口均由8位组成,因此在下面的说明中,仅使用每组端口中的一个进行说明。

1、P0口结构及工作原理

P0口的字节地址为80H,位地址为80H~87H。 P0口8位之一的结构图如图1-4所示。

89C51单片机的外部结构及工作原理-硬件结构

图1-4P0端口位结构图

从图1-4可以看出,P0口由锁存器、输入缓冲器、多路开关、非门、与门和场效应晶体管驱动电路组成。 在图 1-4 中,标记为 P0 的图标。 。 接下来我们先介绍一下组成P0口的各个单元部分。

(1)输入缓冲区

在P0口,有两个三态缓冲器。 研究过数字电路的读者都知道,三态门有三种状态,即它的输出可以是高电平、低电平,同时还有一个高阻。 状态(或禁用状态),在图1-4中,上面的是读锁存器的缓冲区,即要读取D锁存器的输出Q处的数据,需要使能读锁存器。该缓冲区的状态控制端(图1-4中标记为“读锁存器”端)有效。 下一个是读取引脚的缓冲区。 读取P0上的数据。 使标有“读引脚”的三态缓冲器的控制端有效,则该引脚上的数据将传输到单片机内部数据总线。

(2)D锁存器

组成锁存器通常采用时序电路(时序单元电路内容请参考数字电路的相关知识)。 触发器可以保存一个二进制数(即具有保持功能)。 在51单片机的32个I/O引脚的O口线上,用一个D触发器组成锁存器。 对于图1-4中的D锁存器,D端为数据输入端,CP为控制端(即时序控制信号输入端),Q为输出端。

它是反向输出端。

对于D锁存器来说,当D输入端有输入信号时,如果控制端CP没有信号(即定时脉冲没有到达),则输入端D的数据无法传输到输出端端子 Q 并反向。 输出

如果定时控制端CP的定时脉冲到来,则D端输入的数据将被传送到Q端

结尾。 数据发送完毕后,当CP时序控制端的时序信号消失时,输出端仍会保持最后一个输入端D的数据(即锁存最后一个数据)。 如果下一个定时控制脉冲信号到来,D端的数据将再次传输到Q端,从而改变Q端的状态。

(3)多路开关

在51单片机中,当内部存储器充足时(即不需要外部扩展存储器时,这里所说的存储器包括数据存储器和程序存储器),P0口可作为通用输入/输出口(即,输入/输出)。 ,对于8031单片机(内部无ROM),或者当编写的程序超出单片机内部存储器容量,需要扩展存储器时,则使用P0口作为地址/数据总线。 然后这个多路选择开关用于选择是否将其用作普通I/O端口或用作地址/数据总线。 从图1-4可以看出,当多路开关接在下端时,P0口作为普通I/O口使用; 当上端连接多路开关时,P0口作为地址/数据总线。

(4)输出驱动器

从图1-4可以看出,P0口输出是由两个MOS管组成的推挽结构。 也就是说这两个MOS管一次只能导通一个。 当V1导通时,V2截止。 ,当V2导通时,Vl截止。

P0口的单元组成在上面已经详细解释过。 我们来研究一下P0口作为I/O口和地址/数据总线使用时的具体工作过程。

(1) 作为I/O口使用时的工作原理

当P0口作为I/O口时,多路开关的控制信号为0(低电平)。 如图1-4所示,多路开关的控制信号同时连接到与门的输入端。 该门的逻辑特性是“全1输出1,任意0输出0”,那么如果控制信号为0,那么与门的输出也是0(低电平)。 此时,Vl管将截止,在多路控制开关的控制信号为0(低电平)时,多路开关连接到锁存器的一端(即P0口作为I/O口线使用)。

P0口作为I/O口线,其工作过程是从数据总线到引脚输出(即输出状态Output):写锁存信号CP有效,数据的输出过程总线信号是锁存器的输入端。 D→锁存器的反相输出

端子→多路开关→V2管栅极→V2管漏极→输出端P0.X。 前面提到,当多路开关的控制信号为低电平0时,与门输出低电平,Vl管截止,所以作为输出口时,P0为开漏输出状态下,与OC Gate类似,当驱动器连接有电流负载时,需要外接上拉电阻。 图1-5所示为内部数据总线向P0口输出数据的流程图。

89C51单片机的外部结构及工作原理-硬件结构

图1-5 P0口内部数据总线输出到引脚时

P0口作为I/O口线使用。 它使用一个引脚来输入内部数据总线(即输入状态Input)。 数据输入(读P0口)有两种情况:

第一种情况是读引脚,即读取芯片引脚上的数据。 读取引脚号时,读取引脚缓冲区打开(即三态缓冲区的控制端必须有效)并通过内部数据总线输入。 P0 口读引脚流程图如图 1-6 所示。

89C51单片机的外部结构及工作原理-硬件结构

图1-6 读取P0口引脚流程图

第二种情况是读锁存器,通过打开读锁存器三态缓冲器来读取锁存器输出Q的状态。 图 1-7 所示为读取 P0 端口锁存器时的流程图。

89C51单片机的外部结构及工作原理-硬件结构

图1-7 读取P0端口锁存器时的流程图

在输入状态下,从锁存器和从机引脚读取的信号一般是一致的,但也有例外。 例如,当内部总线输出低电平时,锁存器Q=0,

=l,场效应晶体管V2导通,端口线处于低电平状态。 此时,无论端口线上的外部信号是低电平还是高电平,从该引脚读入单片机的信号始终为低电平,因此无法正确读取端口引脚上的信号。 再比如,当内部总线输出高电平时,锁存器Q=1,

=0时,场效应管V2截止。 如果外部引脚信号为低电平,则从该引脚读取的信号与从锁存器读取的信号不同。 为此,8031微控制器对P0~P3端口的输入操作有如下约定:任何属于读-修改-写方式的指令从锁存器读取信号,其他指令从锁存器读取信号。端口引脚线。 读-修改-写指令的特点是信号从端口输入(读),在单片机中操作(修改),然后输出(写入)到端口。 以下是读取-修改-写入指令的几个示例。

ORLP0、A P0→AP0

INCP1 P1+1→P1

DECP3 P3-1→P3

CPLP2 P2→P2

这么安排的原因是read-modify-write命令需要获取端口原来的输出状态,修改后输出。 读取锁存器而不是读取引脚可以避免由于外部电路而错误地读取原始端口状态。

注:P0端口是8031单片机的总线端口。 数据D7~D0、低8位地址A7~A0和三态分时出现,用于连接存储器、外部电路和外部设备。 P0口是应用最广泛的I/O口。

(2) 作为地址/数据复用端口时的工作原理

当访问外部存储器时,P0端口用作地址/数据复用端口。 此时多路开关控制信号为l,与门解锁,与门输出信号电平由地址/数据线信号决定; 将多路开关与反相器的输出端连接,通过地址/数据线→反相器​​→V2场效应管栅极→V2漏极输出地址信号。 例如,当控制信号为l,地址信号为0时,与门输出低电平,Vl管截止; 反相器输出高电平,V2管导通,输出脚地址信号为低电平。 图1-8所示为P0口作为地址线、控制信号为1、地址信号为0时的工作流程图。

89C51单片机的外部结构及工作原理-硬件结构

图1-8P0口作为地址线,控制信号为1。

反之,控制信号为l,地址信号为l,与门输出高电平,Vl管导通; 反相器输出低电平,V2管截止,输出脚地址信号为高电平。 图1-9所示为P0口作为地址线、控制信号为1、地址信号为1时的工作流程图。

89C51单片机的外部结构及工作原理-硬件结构

图1-9P0口作为地址线

可见,输出地址/数据信息时,Vl、V2管交替导通,带负载能力很强。 它可以直接连接到外设存储器,无需添加总线驱动程序。 P0口也用作数据总线。 访问外部程序存储器时,P0口输出低8位地址信息后,成为数据总线读取指令代码(输入)。在访问指令期间,控制信号为0,Vl管关断,多路开关也转向锁存器的反相输出端。

;CPU自动向P0口锁存器写入0FFH(11111111,即向D锁存器写入高电平1),关闭V2管。 在读引脚信号的控制下,读引脚三态门电路将指令代码读取到内部总线。 如图1-10所示,P0口作为数据总线以及取指令期间的工作流程图。

89C51单片机的外部结构及工作原理-硬件结构

图1-10

如果该指令是输出数据,如“MOVX@DPTR,A”,则该指令将累加器的内容通过 P0 口数据总线传送到外部 RAM,此时多路开关控制信号为 1,与门解锁,输出地址信号工作流程类似,数据从地址/数据线→反相器​​→V2场效应晶体管栅极→V2漏极输出。

如果该指令是输入数据(读外部数据存储器或程序存储器),如“MOVX A,@DPTR”,则该指令将外部 RAM 某个存储单元的内容通过 P0 口数据输入累加器 A总线,则输入的数据仍然通过读引脚三态缓冲区到达内部总线,其过程与读指令代码流程图类似。

从上面的分析可以看出,当P0作为地址/数据总线时,在读取指令代码或输入数据之前,CPU会自动向P0口锁存器写入0FFH,破坏了P0口原有的状态。 因此,它不能再用作通用I/O端口。

注意:在设计系统时,必须注意程序中不能再含有使用P0口作为操作数的指令(包括源操作数和目的操作数)。

当数据从P0端口输入时,外部输入信号被施加到缓冲器输入端子和驱动电路的漏极。 如果此时T2导通,则该引脚上的电位始终被钳位在0电平,无法正确读取输入数据。 因此,在输入数据时,应先将P0口设置为1,使两个输出场效应管均截止,使引脚“悬空”,成为高阻状态。 只有这样才能正确插入数据。 这是一个准双向端口。

当I/O端口作为输入端口时,有两种工作模式,即读端口和读引脚。 读端口时,实际上并不是从外部读取数据,而是将端口锁存器的内容读入内部总线。 经过一些操作或转换后,它被写回端口锁存器。 只有读端口时,外部数据才真正读入内部总线。 图1-10中的两个三角形代表输入缓冲区,CPU读端口或读引脚会根据不同的指令发出信号来完成不同的操作,这是由硬件自动完成的。 读取引脚时,即使用端口作为外部输入线时,必须先通过外部指令将端口锁存器设置为1,然后再读取引脚。 否则,可能会出现读取错误。 为什么? 参见图 1-10。 ,如果端口不置1,则端口锁存器原来的状态可能为0,Q端为0。

端为1,加到场效应管栅极的信号为1,场效应管导通,对地呈低阻抗。 此时,即使输入到该引脚的信号为1,也会由于该端口的阻抗较低而导致。 信号变低,这样外部1信号读入后不一定是1。如果先进行设置操作,可以截止场效应管,引脚信号直接加到三态缓冲器从而达到正确阅读的目的。 由于在输入操作时必须添加准备动作,因此这种类型的I/O端口被称为准双向端口。 89C51的P0、P1、P2、P3口作为输入时都是准双向口。 接下来我们看另一个问题。 从图1-10可以看出,这四个端口之间还有一个区别。 除P1口外,P0、P2、P3口还有其他功能。 这些功能是用来做什么的? 什么? 下面我们来详细解释一下这个问题。

每个I/O端口有一个8位数据锁存器和两个8位数据缓冲器。 P0~P3(8位锁存器)是SFR,有自己的端口地址,可以通过指令直接寻址,存储需要输出的数据。 当数据输入时,只有缓冲,没有锁存。 每个引脚上输入的数据必须保留,直到 CPU 将其读出。 P0位结构图如图1-11所示。

89C51单片机的外部结构及工作原理-硬件结构

请图1-11P0位结构图

从图1-11可以看出,P0口有一个内部选择器,由内部信号控制。 如果处于图1-11所示位置,则处于I/O口工作模式。 这相当于一个准双向端口输入。 P0端口必须先设置为1。 每条端口线可以独立定义为输入或输出,但必须在端口线上添加上拉电阻。 如果开关向另一个方向移动,则它被用作地址/数据复用总线。 这时就不能定义为逐位输入/输出了。 有两种使用方法。 当用作数据总线时,输入8位数据,当用作地址总线时,输出低8位地址。 注意,当P0口作为地址/数据复用总线使用后,就不能再作为I/O口使用。 那么什么是地址/数据复用呢? 这其实是单片机并口不够用时,需要扩展输入输出口时的一种用法。 具体使用方法将在后续章节中逐步讲解。

当使用P0口扩展外部存储器和I/O时,P0口将用作地址和数据时分复用。 CPU发出控制信号打开与门,使MUX向上移动,形成推挽结构。 可以直接读取数据信号。 输入或输出到内部总线。 当使用P0作为通用I/O时,此时P0口为准双向口。 CPU发出控制信号,封锁与门,关闭上拉管,并将MUX向下打开连接到D触发器Q。

输入程序示例:

MOVP0,#FFH

输出程序示例:

莫瓦,P0

2、P1口结构及工作原理

P1口的字节地址为90H,位地址为90H~97H。 P1位结构图如图1-12所示。

89C51单片机的外部结构及工作原理-硬件结构

图1-12P1位结构图

与P0不同的是,P1口只能作为I/O口使用,无需MUX,但其内部有上拉电阻,因此连接外设负载时无需外接上拉电阻。 这对于 P1、P2 和 P3 来说是相同的。

输入程序示例:

MOVP1,#FFH

莫瓦,P1

输出程序示例:

莫瓦,P1

三、P2口结构及工作原理

P2口的字节地址为A0H,位地址为A0H~A7H。 P2位结构图如图1-13所示。

89C51单片机的外部结构及工作原理-硬件结构

图1-13P2位结构图

P2口作为I/O口线使用时,其使用方法与P0口相同。 当内部开关拨向另一个方向,即地址输出时,可输出程序存储器或外部数据存储器的高8位地址并与P0口输出合并。 低地址共同构成16位地址线。

注:数据总线与数据总线的区别在于数据总线是8位的。 很多书上都会提到51单片机有8位数据总线和16位地址总线,但不会解释其中的区别。 读者应该了解以下两者之间的区别。

16位地址总线可以寻址64KB的程序存储器或外部数据存储器,这将在后续章节中解释。 这里需要注意的是,当P2口作为地址总线时,高8位地址线与8位一起输出。 不能像I/O口线是逐位定义的,和P0口一样。

当P2口用于扩展外部存储器和I/O时,作为高8位地址输出。 当读写外部存储器或I/O设备时,CPU自动发出控制信号,打开与门,使MUX向上移动。 。 当P2口作为通用I/O时,CPU自动发出控制信号,MUX关闭并连接到D触发器Q。

输入程序示例:

MOVP2,#FFH

莫瓦,P2

输出程序示例:

莫瓦,P2

4、P3口结构及工作原理

P3口的字节地址为B0H,位地址为B0H~B7H。 P3位结构图如图1-14所示。

89C51单片机的外部结构及工作原理-硬件结构

图1-14P3位结构图

当作为I/O口线使用时,P3口与其他口相同。 它也是一个准双向端口。 不同的是,P3口的每一位都有另外一个功能,也称为第二功能。 具体功能在使用时确定。 详细解释。 当P3口作为通用I/O口时,准双向口的第二功能端保持高电平。

输入程序示例:

MOVP3,#FFH

莫瓦、P3

输出程序示例:

莫瓦、P3

当P3口作为第二功能时,锁存器输出Q=1,P3口第二功能列表如表1-4所示。

89C51单片机的外部结构及工作原理-硬件结构

表1-4P3端口第二功能列表

既然单片机的引脚有第二个功能,那么CPU是如何识别的呢? 这是很多初学者困惑的一个问题。 事实上,单片机的第二功能不需要人工干预,也就是说,只要CPU执行相应的命令,就会自动转换为第二功能。

思考:输入和输出端口统称为I/O端口。 它们是微控制器与外部电路连接的唯一方式。 四个并行端口的结构有些不同。 如何根据系统设计要求和产品使用情况正确、灵活地使用它们是第一步。 学者既要掌握基本技能,又要了解其功能和用途。

5. 应用笔记

(1) 在没有片外扩展存储器的系统中,这四个端口均可用作准双向通用I/O端口。 在具有片外扩展存储器的系统中,端口P2作为高8位地址线,端口P0作为双向总线,分时作为低8位地址和数据的输入/输出线。

(2) 当P0口作为通用双向I/O口使用时,必须外接上拉电阻。

(3) P3口除了用作通用I/O口外,还有第二个功能。 当P3口的某一位作为第二功能输出时,就不能再作为通用I/O口使用。

(4) 当 P0~P4 端口作为输入时,为避免误读,必须先向相应的输出锁存器写入 1,关闭 FET,然后再读取端口引脚。 例如,以下程序:

MOVP1,#0FFH

莫瓦,P1

单片机

为什么要学习STM32第二章FreeRTOS中断管理?

2024-1-23 22:01:18

单片机

合泰单片机最小系统板、流水灯实验操作详细解析

2024-1-23 23:01:49

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索