51单片机读引脚及读锁存器
《单片机原理及应用》第5章 P0~P3口应用基础

3、矩阵键盘:
5.4 实验与设计
• 实验1 闸刀型开关输入/8段LED静态显示输出
5.4 实验与设计
• 设计1:LED模拟交通
• 6个灯—南北:黄、红、绿
•
东西:黄、红、绿
• (红、绿是10秒,黄闪烁2秒)
• 2个应急开关:南北绿或东西绿
• 画出硬件设计,编出模拟程序。
实验2 并行接口键盘/LED指示灯输出
同,每个显示缓冲器对应着一位显示器。
(3)查表并操作相应的显示器
• MOV • MOV • MOVC
A,#data DPTR,#DSPTAB A,@A+DPTR
• (4)显示子程序的调用
3、静态显示示例
• 【例5-4】利用51单片机的并行口作为静态显示的控制 口的示例
请修改:
(1)显示“12”; (2)轮流显示“12”、“--”、“AB”; (3)计数器:从00开始,1S加1。
设计1 计时秒表的设计
• (1)两位LED显示 • 可以显示00~99秒; • (2)两个按键 • 分别为启动/停止键、清零键。 • 要求:设计硬件电路,编写出软件程序(延时由软件
形成)。
设计2 模拟交通信号灯控制装置的设计
• (1)6个发光二极管模拟交通灯 • 南北:黄、红、绿 ;东西:黄、红、绿。 • (2)2个应急开关 • 南北绿东西红或东西绿南北红。 • 要求:设计硬件模拟电路,编写软件程序。
• 单片机原理及应用(第4版)
• 姜志海 王蕾 姜沛勋 编著
• 电子工业出版社
第5章 P0~P3口应用基础
• 片内并行I/O口的应用。 • 5.1 P0~P3口概述 • 5.2 输出操作 • 5.3 输入操作 • 5.4 实验与设计
单片机第二章MCS-51系列单片机硬件结构

3. P1口(P1.0~P1.7,1脚~8脚)
P1口仅用作I/O使用,它也是自带上拉电阻的8 位准双向I/O接口,每一位可驱动4个LSTTL负载。 当P1口作为输入接口时,应先向口锁存器写“1”。 4. P3口(P3.0~P3.7,10脚~17脚)
除了和P1口的功能一样外, P3口的每一引脚还具有第二功能。
第二章 单片机的硬件结构
2.1 MCS-51单片机的总体结构
2.2 微处理器 2.3 MCS-51存储器 2.4 MCS-51基本电路及引脚电路 2.5 实例演练
2.1MCS-51单片机的总体结构
一,8031芯片实照
二,MCS-51单片机外形是一个40脚的双列直插式集成块:
P10 P1.1 P12 P1.3 P1.4 P1.5 P1.6 P1.7 RST/VPD RXD/P3.0 TXD/P3.1 INT0/P3.2 INT1/P3.3 T0/P3.4 T1/P3.5 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Vss 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 Vcc P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 EA/VPP ALE/PROG PSEN P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
ALE地址锁存使能信号输出端。存取 片外存储器时,用于锁存低8位地址。 PROG是对于EPROM型单片机,在 EPROM编程期间,此引脚用于输入编 程脉冲。
ALE/ PROG (30脚)
控制 引脚
MCS-51单片机的逻辑结构及

2.1 MCS-51单片机的逻辑结构及 信号引脚
MCS-51单片机结构框图 MCS-51芯片内部逻辑结构 MCS-51的信号引脚
MCS-51单片机结构框图
MCS-51芯片内部逻辑结构
1.中央处理器(CPU ) 中央处理器CPU是单片机的核心,完成运算和控 制操作。它包括运算器和控制器电路。 1 )运算器电路 运算器主要用来实现对操作数的算术、逻辑运算 和位操作的。 主要包括算术逻辑运算单元ALU、累加器ACC (A )、暂存寄存器、B 寄存器、程序状态字PSW、 两个暂存器以及BCD码运算修正电路。
其地址为0003h0023h是五个中断源的中断地址区0003h000ah外部中断0中断地址区000bh0012h定时器计数器0中断地址区0013h001ah外部中断1中断地址区001bh0022h定时器计数器1中断地址区0023h002ah串行中断地址区中断服务程序超过8个字节时在中断地址区的首地址存放一条无条件转移指令转移到中断服务程序
专用寄存器地址表
MCS-51的堆栈操作
后进先出 入栈PUSH 出栈POP 1.堆栈的功用 保护断点 保护现场
2.堆栈的开辟 MCS-51的堆栈只能开辟在芯片内部的数据存储器中。 3.堆栈指示器SP 专用寄存器地址81H SP的内容是堆栈栈顶的地址 系统复位后SP的内容是07H 4.堆栈类型
5.堆栈的使用方法 自动方式 调用子程序或中断时 指令方式 使用堆栈操作指令 PUSH、POP
PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0
CY AC F0 RS1 RS0 OV 未用 P
进位标志 辅助进位标志 用户标志 寄存器组选择 寄存器组选择 溢出标志 带符号数加减运算 溢出; 乘法积超过8位;除数为0 奇偶标志
MCS51P端口知识

MCS-51P端口知识1 引言MSC—51是70年代末的产品,目前出现了很多功能更强大的单片机,但在目前市场上的产品中MSC—51仍占单片机的多半产品,且MCS—51是其他单片机的基础。
本文将详细讨论MSC—51的并行接口,目的是为单片机的使用者提供更好的理论依据。
2 MSC—51的并行I/O端口2.1 I/O端口简介I/O端口又称为I/O接口或I/O通路,是MSC—51单片机对外部实现控制和信息交换的必经之路,是一个过渡的大规模集成电路,用于信息传递过程中的速度匹配和增强单片机的负载能力。
I/O 端口可以实现和不同外设的速度匹配,以提高CPU的工作效率,可以改变数据的传送方式,如:内部并行总线与外部设备串行数据传送的转换。
2.2 MSC—51各并行I/O的组成I/O端口分为串行口和并行口。
串行I/O端口一次只能传送一位二进制信息;并行I/O端口一次可传送一个字节的数据。
MSC—51单片机有四个并行端口,分别命名为P0、P1、P2、P3,每个端口都有八条端口线,用于传送数据或地址信息。
由于每个端口的结构各不相同,因此它们在功能和用途上差别颇大。
每个I/O端口都由一个八位数据锁存器和一个八位数据缓冲器组成,其中八位数据锁存器的端口与P0、P1、P2、P3同名,属于21个特殊功能寄存器中的4个,对应内部RAM地址分别为80H、90H、A0H、B0H。
需要输出数据时,8个数据锁存器用于对端口引脚上输入数据进行锁存。
需要输入数据时,8个数据缓冲器用于对端口引脚上输入数据进行缓冲。
另外访问并行I/O端口除了可以用字节地址访问外,还可以进行按位寻址。
3 P0综述3.1 P0口功能P0.7—P0.0为P0所用。
P0口的访问地址是80H,位地址范围是80H—87H。
由于P0口具有较大的负载能力,最多可推动8个TTL门,因此是真正的双向I/O口。
一般来说,P0口具有两种功能:第一,P0口可以作为通用I/O接口使用,P0.7—P0.0用于传送CPU的输入/输出数据。
单片机的引脚原理图及说明完整版

单片机的引脚原理图及说明HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】一、P0端口的结构及工作原理P0端口8位中的一位结构图见下图:由上图可见,P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及场效应管驱动电路构成。
再看图的右边,标号为P0.X引脚的图标,也就是说P0.X引脚可以是P0.0到P0.7的任何一位,即在P0口有8个与上图相同的电路组成。
下面,我们先就组成P0口的每个单元部份跟大家介绍一下:先看输入缓冲器:在P0口中,有两个三态的缓冲器,在学数字电路时,我们已知道,三态门有三个状态,即在其的输出端可以是高电平、低电平,同时还有一种就是高阻状态(或称为禁止状态),大家看上图,上面一个是读锁存器的缓冲器,也就是说,要读取D 锁存器输出端Q的数据,那就得使读锁存器的这个缓冲器的三态控制端(上图中标号为‘读锁存器’端)有效。
下面一个是读引脚的缓冲器,要读取P0.X引脚上的数据,也要使标号为‘读引脚’的这个三态缓冲器的控制端有效,引脚上的数据才会传输到我们单片机的内部数据总线上。
D锁存器:构成一个锁存器,通常要用一个时序电路,时序的单元电路在学数字电路时我们已知道,一个触发器可以保存一位的二进制数(即具有保持功能),在51单片机的32根I/O口线中都是用一个D触发器来构成锁存器的。
大家看上图中的D锁存器,D端是数据输入端,CP是控制端(也就是时序控制信号输入端),Q是输出端,Q非是反向输出端。
对于D触发器来讲,当D输入端有一个输入信号,如果这时控制端CP没有信号(也就是时序脉冲没有到来),这时输入端D的数据是无法传输到输出端Q及反向输出端Q非的。
如果时序控制端CP的时序脉冲一旦到了,这时D端输入的数据就会传输到Q及Q非端。
数据传送过来后,当CP时序控制端的时序信号消失了,这时,输出端还会保持着上次输入端D的数据(即把上次的数据锁存起来了)。
8051单片机的体系结构

(3)数据缓冲区
内部RAM的30H~7FH是数据缓冲区,也称为用户RAM区, 共80个单元。
52子系列内部有256个单元的数据存储器,用户RAM区范 围为30H~FFH,共208个单元。
工作寄存器区和位寻址区的地址及单元数与上述一致。
3、堆栈和堆栈指针 堆栈的概念:是一种数据项按序排列的数据结
构,采用后进先出,这种后进先出操作的缓冲器 区称为堆栈。
由内部控制信号产生输入锁存器两个输入缓冲器buf1和buf2推拉式io驱动器251p0口位图内部结构buf2buf15p0r2为读引脚信号执行movap0时该信号有效6读引脚端口时输出锁存器应为1qqdcvcc控制ad0p0r1p0r2d0p0w图1p0口内部结构读锁存器读引脚锁存器内部总线写锁存器地址数据p00多路开关10写数据读端口p03地址锁存器cbioa15a14a13a12a11a10a9a8a7a6a5a4a3a2a1a0d7d6d5d4d3d2d1d0dbabp10p11p12p13p14p15p16p17resetp30p31p33p34p35p36p37vssvccp00p01p02p05p06p07eaalepsenp27p26p25p24p23p22p21p20p32mcs51片外总线结构示意图返回mcs51单片机片外总线p04返回单片机8031p20p21p22a8a9a10alerd74ls373g6264a7a6a5a4a3a2a1a0o0o1o2o3o4o5o6o7p00p01p02p03p04p05p06p07oeceq0q1q2q3q4q5q6q7d0d1d2d3d4d5d6d7wewrp27p23p24a11a126264we单片机8031p20
P2.0
.P:2.4
单片机
8031 P0.0
51单片机外部引脚英文全称是什么
引言:51单片机是一种常用的嵌入式系统微控制器,常用于各种电子设备中。
在使用51单片机时,了解其外部引脚的英文全称是非常重要的。
本文将详细介绍51单片机外部引脚的英文全称,探讨其各个引脚的功能和用途。
概述:51单片机外部引脚的英文全称是根据它们在芯片上的物理位置和连接功能来命名的。
这些引脚包括电源引脚、输入输出引脚、复位引脚和其他特殊功能引脚。
了解这些英文全称可以帮助工程师更好地掌握51单片机的使用和应用。
正文:1. 电源引脚(Power Pins)1.1 VCCVCC引脚是指供电引脚,它连接到单片机的正电源。
VCC引脚提供的电压通常是5V,也可以是3.3V或其他电压。
1.2 GNDGND引脚是指接地引脚,它连接到单片机的负电源。
GND引脚用于建立电路的共地参考点。
2. 输入输出引脚(I/O Pins)2.1 P0.0 - P0.7P0引脚是51单片机上的一个8位可编程输入输出引脚组。
P0.0到P0.7分别对应于物理引脚P0.0到P0.7。
这些引脚可以配置为输入或输出,用于与其他设备进行数据交换。
2.2 P1.0 - P1.7P1引脚是51单片机上的另一个8位可编程输入输出引脚组。
P1.0到P1.7分别对应于物理引脚P1.0到P1.7。
这些引脚也可以配置为输入或输出,用于与其他设备进行数据交换。
2.3 P2.0 - P2.7P2引脚是51单片机上的第三个8位可编程输入输出引脚组。
P2.0到P2.7分别对应于物理引脚P2.0到P2.7。
这些引脚同样可以配置为输入或输出,用于数据交换。
2.4 P3.0 - P3.7P3引脚是51单片机上的第四个8位可编程输入输出引脚组。
P3.0到P3.7分别对应于物理引脚P3.0到P3.7。
这些引脚也可以配置为输入或输出。
3. 复位引脚(Reset Pin)3.1 RSTRST引脚是51单片机上的复位引脚。
当RST引脚被拉低时,单片机将被复位。
复位引脚通常通过一个复位电路提供一个确定的复位信号。
第2章 MCS-51单片机的硬件结构
(2)通用I/O接口功能
P2口作准双向口使用,与P1口相同,也有输入、 输出、端口操作三种工作方式。
3.P2口负载能力
4个LSTTL负载,输出电流≥ 400uA
三、P3口
1. P3口1位结构原理图如图所示
P 奇偶标志
A中1的个数若为奇数P=1,否则P=0
例如:MOV A, #7FH ADD A, #4FH 0111,1111B + 0100,1111B 1100,0110B
结果:(A)=C6H, C=0,AC=1,OV=1,P=0
2.控制器 3.片内存储器
4.4个I/O接口
5.串行接口
6.定时/计数器
先片内、后片外,片内片外连续,二者 一般不作重叠。 EA=0,只访问片外程序存储器 EA=1,先访问片内程序存储器。当PC >0FFFH(51子系统)或PC>1FFFH(52子系统) ,再去访问片外程序存储器。
存储器编址图如下图所示
0000H
片内ROM /EA=1 0FFFH 0FFFH 1000H 片外ROM 0000H 片外ROM /EA=0 00H 7FH 80H FFH 片外RAM 片内RAM 0000H
有5个中断源
11.111条指令,含乘、除法,有很强
的位处理能力 12.片内采用单总线结构,单一+5V
电源
52系列主要有8032、8052两种机型。 与51系列不同在于:片内数据存储器增 至256个字节,3个16位定时/计数器,6 个中断源。
二、内部结构
MCS-51系列单片机的内部结构如 下图所示:
1 2 . . .
51单片机的专用寄存器
51单片机的专用寄存器21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。
在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。
在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。
这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):MCS-51单片机的特殊功能寄存器带“*”的在51系列是没有的。
分别说明如下:1、ACC---是累加器,通常用A表示这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。
它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。
自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。
该标志常用作程序分枝转移的判断条件。
2、B--一个寄存器在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
3、PSW-----程序状态字。
这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。
它的各位功能请看下表:下面我们逐一介绍各位的用途CY:进位标志。
8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。
51单片机_片内外设
片内外设
输入时应先写“1”:在端口电路中,可以发现一个问题:端 口在输入(读引脚)时,原来锁存器的状态可能要影响引 脚电平的输入。例如:原来锁存器的状态为“0”态,即输 出极的下端FET是饱和状态,这样如果外电路向引脚输入 高电平时,电路将不能正确读入。解决的方法就是让下端 的FET截止,即事先向端口写一个“1”。 请注意下面的一段程序:
返回
P0口的位结构图
读锁存器 地址/数据 I/0 控制(=0时)
片内外设
Vcc
Vcc
内部总线
D CL
Q /Q MUX (控制=0时)
锁存器
P0.x 引脚
写锁存器
读引脚
硬件组成: 1)一个输出锁存器(D型触发器); 2)二个三态门(控制读引脚或读锁存器); 3)与门和MUX等元件组成的输出控制电路; 4)一对场效应晶体管FET构成的输出电路。
返回
片内外设
1)P0口的I/O操作(通用I/O端口)
在P0口作为通用I/O端口时,控制电路中的“控制” 为“0”电平,多路开关MUX接入下方的锁存器的/Q 端。 由于与门的一个输入端为“0”,所以它使上端的 FET截止。这就是P0口在做I/O口时输出为“漏极 开路”的结构原因。 输出操作:在执行以口为目标的指令时,数据送到 锁存器的“D”端,经“/Q”端送场效应管输出极。 如:送“1”时,/Q=“0”,使下端的FET截止。这样 出现输出极的两个FET全部截止。在这种情况下必 须在端口线上外加上拉电阻。这样在上拉电阻的作 用下,使端口为高电平。同理,若总线向口送“0” 时,锁存器的/Q=1,使下端的FET导通(上面的FET 仍然截止),这样端口呈现“0”电平。 结构图
返回
片内外设 0000H (上电启动地址)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机I/O引脚IO口工作原理 一、P0端口的结构及工作原理
P0端口8位中的一位结构图见下图:
由上图可见,P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及场效应管驱动电路构成。再看图的右边,标号为引脚的图标,也就是说引脚可以是到的任何一位,即在P0口有8个与上图相同的电路组成。
下面,我们先就组成P0口的每个单元部份跟大家介绍一下: 先看输入缓冲器:在P0口中,有两个三态的缓冲器,在学数字电路时,我们已知道,三态门有三个状态,即在其的输出端可以是高电平、低电平,同时还有一种就是高阻状态(或称为禁止状态),大家看上图,上面一个是读锁存器的缓冲器,也就是说,要读取D锁存器输出端Q的数据,那就得使读锁存器的这个缓冲器的三态控制端(上图中标号为‘读锁存器’端)有效。下面一个是读引脚的缓冲器,要读取引脚上的数据,也要使标号为‘读引脚’的这个三态缓冲器的控制端有效,引脚上的数据才会传输到我们单片机的内部数据总线上。
D锁存器:构成一个锁存器,通常要用一个时序电路,时序的单元电路在学数字电路时我们已知道,一个触发器可以保存一位的二进制数(即具有保持功能),在51单片机的32根I/O口线中都是用一个D触发器来构成锁存器的。大家看上图中的D锁存器,D端是数据输入端,CP是控制端(也就是时序控制信号输入端),Q是输出端,Q非是反向输出端。 对于D触发器来讲,当D输入端有一个输入信号,如果这时控制端CP没有信号(也就是时序脉冲没有到来),这时输入端D的数据是无法传输到输出端Q及反向输出端Q非的。如果时序控制端CP的时序脉冲一旦到了,这时D端输入的数据就会传输到Q及Q非端。数据传送过来后,当CP时序控制端的时序信号消失了,这时,输出端还会保持着上次输入端D的数据(即把上次的数据锁存起来了)。如果下一个时序控制脉冲信号来了,这时D端的数据才再次传送到Q端,从而改变Q端的状态。
多路开关:在51单片机中,当内部的存储器够用(也就是不需要外扩展存储器时,这里讲的存储器包括数据存储器及程序存储器)时,P0口可以作为通用的输入输出端口(即I/O)使用,对于8031(内部没有ROM)的单片机或者编写的程序超过了单片机内部的存储器容量,需要外扩存储器时,P0口就作为‘地址/数据’总线使用。那么这个多路选择开关就是用于选择是做为普通I/O口使用还是作为‘数据/地址’总线使用的选择开关了。大家看上图,当多路开关与下面接通时,P0口是作为普通的I/O口使用的,当多路开关是与上面接通时,P0口是作为‘地址/数据’总线使用的。
输出驱动部份:从上图中我们已看出,P0口的输出是由两个MOS管组成的推拉式结构,也就是说,这两个MOS管一次只能导通一个,当V1导通时,V2就截止,当V2导通时,V1截止。 与门、与非门:这两个单元电路的逻辑原理我们在第四课数字及常用逻辑电路时已做过介绍,不明白的同学请回到第四节去看看。
前面我们已将P0口的各单元部件进行了一个详细的讲解,下面我们就来研究一下P0口做为I/O口及地址/数据总线使用时的具体工作过程。
1、作为I/O端口使用时的工作原理 P0口作为I/O端口使用时,多路开关的控制信号为0(低电平),看上图中的线线部份,多路开关的控制信号同时与与门的一个输入端是相接的,我们知道与门的逻辑特点是“全1出1,有0出0”那么控制信号是0的话,这时与门输出的也是一个0(低电平),与让的输出是0,V1管就截止,在多路控制开关的控制信号是0(低电平)时,多路开关是与锁存器的Q非端相接的(即P0口作为I/O口线使用)。 P0口用作I/O口线,其由数据总线向引脚输出(即输出状态Output)的工作过程:当写锁存器信号CP 有效,数据总线的信号→锁存器的输入端D→锁存器的反向输出Q非端→多路开关→V2管的栅极→V2的漏极到输出端。前面我们已讲了,当多路开关的控制信号为低电平0时,与门输出为低电平,V1管是截止的,所以作为输出口时,P0是漏极开路输出,类似于OC门,当驱动上接电流负载时,需要外接上拉电阻。 下图就是由内部数据总线向P0口输出数据的流程图(红色箭头)。
P0口用作I/O口线,其由引脚向内部数据总线输入(即输入状态Input)的工作过程: 数据输入时(读P0口)有两种情况 1、读引脚 读芯片引脚上的数据,读引脚数时,读引脚缓冲器打开(即三态缓冲器的控制端要有效),通过内部数据总线输入,请看下图(红色简头)。
2、读锁存器 通过打开读锁存器三态缓冲器读取锁存器输出端Q的状态,请看下图(红色箭头):
在输入状态下,从锁存器和从引脚上读来的信号一般是一致的,但也有例外。例如,当从内部总线输出低电平后,锁存器Q=0,Q非=1,场效应管T2开通,端口线呈低电平状态。此时无论端口线上外接的信号是低电乎还是高电平,从引脚读入单片机的信号都是低电平,因而不能正确地读入端口引脚上的信号。又如,当从内部总线输出高电平后,锁存器Q=1,Q非=0,场效应管T2截止。如外接引脚信号为低电平,从引脚上读入的信号就与从锁存器读入的信号不同。为此,8031单片机在对端口P0一P3的输入操作上,有如下约定:为此,8051单片机在对端口P0一P3的输入操作上,有如下约定:凡属于读-修改-写方式的指令,从锁存器读入信号,其它指令则从端口引脚线上读入信号。 读-修改-写指令的特点是,从端口输入(读)信号,在单片机内加以运算(修改)后,再输出(写)到该端口上。下面是几条读--修改-写指令的例子。
ANL P0,#立即数 ;P0→立即数P0 ORL P0,A ;P0→AP0 INC P1 ;P1+1→P1 DEC P3 ;P3-1→P3 CPL P2 ;P2→P2
这样安排的原因在于读-修改-写指令需要得到端口原输出的状态,修改后再输出,读锁存器而不是读引脚,可以避免因外部电路的原因而使原端口的状态被读错。 P0端口是8031单片机的总线口,分时出现数据D7一D0、低8位地址A7一AO,以及三态,用来接口存储器、外部电路与外部设备。P0端口是使用最广泛的I/O端口。
2、作为地址/数据复用口使用时的工作原理 在访问外部存储器时P0口作为地址/数据复用口使用。 这时多路开关‘控制’信号为‘1’,‘与门’解锁,‘与门’输出信号电平由“地址/数据”线信号决定;多路开关与反相器的输出端相连,地址信号经“地址/数据”线→反相器→V2场效应管栅极→V2漏极输出。 例如:控制信号为1,地址信号为“0”时,与门输出低电平,V1管截止;反相器输出高电平,V2管导通,输出引脚的地址信号为低电平。请看下图(兰色字体为电平):
反之,控制信号为“1”、地址信号为“1”,“与门”输出为高电平,V1管导通;反相器输出低电平,V2管截止,输出引脚的地址信号为高电平。请看下图(兰色字体为电平):
可见,在输出“地址/数据”信息时,V1、V2管是交替导通的,负载能力很强,可以直接与外设存储器相连,无须增加总线驱动器。
P0口又作为数据总线使用。在访问外部程序存储器时,P0口输出低8位地址信息后,将变为数据总线,以便读指令码(输入)。 在取指令期间,“控制”信号为“0”,V1管截止,多路开关也跟着转向锁存器反相输出端Q非;CPU自动将0FFH(,即向D锁存器写入一个高电平‘1’)写入P0口锁存器,使V2管截止,在读引脚信号控制下,通过读引脚三态门电路将指令码读到内部总线。请看下图
如果该指令是输出数据,如MOVX @DPTR,A(将累加器的内容通过P0口数据总线传送到外部RAM中),则多路开关“控制”信号为‘1’,“与门”解锁,与输出地址信号的工作流程类似,数据据由“地址/数据”线→反相器→V2场效应管栅极→V2漏极输出。 如果该指令是输入数据(读外部数据存储器或程序存储器),如MOVX A,@DPTR(将外部RAM某一存储单元内容通过P0口数据总线输入到累加器A中),则输入的数据仍通过读引脚三态缓冲器到内部总线,其过程类似于上图中的读取指令码流程图。
通过以上的分析可以看出,当P0作为地址/数据总线使用时,在读指令码或输入数据前,CPU自动向P0口锁存器写入0FFH,破坏了P0口原来的状态。因此,不能再作为通用的I/O端口。大家以后在系统设计时务必注意,即程序中不能再含有以P0口作为操作数(包含源操作数和目的操作数)的指令。
二、P1端口的结构及工作原理 P1口的结构最简单,用途也单一,仅作为数据输入/输出端口使用。输出的信息有锁存,输入有读引脚和读锁存器之分。P1端口的一位结构见下图.
由图可见,P1端口与P0端口的主要差别在于,P1端口用内部上拉电阻R代替了P0端口的场效应管T1,并且输出的信息仅来自内部总线。由内部总线输出的数据经锁存器反相和场效应管反相后,锁存在端口线上,所以,P1端口是具有输出锁存的静态口。 由上图可见,要正确地从引脚上读入外部信息,必须先使场效应管关断,以便由外部输入的信息确定引脚的状态。为此,在作引脚读入前,必须先对该端口写入l。具有这种操作特点的输入/输出端口,称为准双向I/O口。8051单片机的P1、P2、P3都是准双向口。P0端口由于输出有三态功能,输入前,端口线已处于高阻态,无需先写入l后再作读操作。 P1口的结构相对简单,前面我们已详细的分析了P0口,只要大家认真的分析了P0口的工作原理,P1口我想大家都有能力去分析,这里我就不多论述了。 单片机复位后,各个端口已自动地被写入了1,此时,可直接作输入操作。如果在应用端口的过程中,已向P1一P3端口线输出过0,则再要输入时,必须先写1后再读引脚,才能得到正确的信息。此外,随输入指令的不同,H端口也有读锁存器与读引脚之分。
三、P2端口的结构及工作原理: P2端口的一位结构见下图:
由图可见,P2端口在片内既有上拉电阻,又有切换开关MUX,所以P2端口在功能上兼有P0端口和P1端口的特点。这主要表现在输出功能上,当切换开关向下接通时,从内部总线输出的一位数据经反相器和场效应管反相后,输出在端口引脚线上;当多路开关向上时,输出的一位地址信号也经反相器和场效应管反相后,输出在端口引脚线上。 对于8031单片机必须外接程序存储器才能构成应用电路(或者我们的应用电路扩展了外部存储器),而P2端口就是用来周期性地输出从外存中取指令的地址(高8位地址),因此,P2端口的多路开关总是在进行切换,分时地输出从内部总线来的数据和从地址信号线上来的地址。因此P2端口是动态的I/O端口。输出数据虽被锁存,但不是稳定地出现在端口线上。其实,这里输出的数据往往也是一种地址,只不过是外部RAM的高8位地址。 在输入功能方面,P2端口与P0和H端口相同,有读引脚和读锁存器之分,并且P2端口也是准双向口。 可见,P2端口的主要特点包括: ①不能输出静态的数据; ②自身输出外部程序存储器的高8位地址; ②执行MOVX指令时,还输出外部RAM的高位地址,故称P2端口为动态地址端口。