51单片机读引脚及读锁存器
单片机读引脚及读锁存器
51单片机I/O引脚IO口工作原理一、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的数据(即把上次的数据锁存起来了)。
如果下一个时序控制脉冲信号来了,这时D端的数据才再次传送到Q端,从而改变Q端的状态。
51单片机引脚功能
51单片机引脚功能51单片机是一种基于MCS-51架构的8位单片机。
它有40个引脚,其中包括I/O引脚、电源引脚和时钟引脚等。
每个引脚都具有不同的功能和用途,下面是一些常见的51单片机引脚功能介绍:1. VCC:为51单片机供电的正电源引脚,一般连接到3.3V或5V电源。
2. GND:为51单片机供电的地引脚,负电源引脚。
3. RESET:复位引脚,当复位引脚电平为低电平时,可以重启或者复位51单片机。
4. EA/VPP:外部访问使能/编程电压引脚。
当电平为低电平时,可以通过外部器件对单片机进行编程,当电平为高电平时,用于外部扩展存储器的使能。
5. P0.0~P0.7:第0口每个引脚的功能可以根据需要进行定义,可以作为输入或输出引脚使用。
6. P1.0~P1.7:第1口I/O引脚,与第0口相似,具有输入和输出功能。
7. P2.0~P2.7:第2口I/O引脚,与第0口和第1口相似,具有输入和输出功能。
8. P3.0~P3.7:第3口I/O引脚,与第0口、第1口和第2口相似,具有输入和输出功能。
9. RST/AP:复位端口/辅助功能端口。
这个引脚可以用作复位单片机的辅助功能,也可以用于电源监控。
10. XTAL1:外部晶振输入引脚,一般通过晶振提供单片机的时钟信号。
11. XTAL2:外部晶振输出引脚。
12. PSEN:程序存储器使能引脚,用于选择程序存储器或外部存储器之间的切换。
13. ALE/PROG:地址锁存器使能/编程引脚。
当电平为高电平时,用作地址锁存器使能引脚;当电平为低电平时,用作一个外部编程信号。
14. RXD:串口接收数据引脚,用于串行通信。
15. TXD:串口发送数据引脚,用于串行通信。
16. INT0:外部中断0引脚,可以通过设置中断使能来检测外部的中断事件。
17. INT1:外部中断1引脚,与INT0引脚类似,用于检测外部的中断事件。
18. T0:定时器0的计数引脚,可以通过程序来对其进行读写操作。
mcs-51单片机的引脚和输入输出端口
MCS-51单片机的引脚和输入输出端口MCS-51有4组8位I/O口,共占用32个引脚:P0、P1、P2和P3口,P1、P2和P3为准双向口,P0口则为双向三态输入输出口。
●P0口(P0.0~P0.7)占用32~39脚;●P1口(P1.0~P1.7)占用1~8脚;●P2口(P2.0~P2.7)占用21~28脚;●P3口(P3.0~P3.7)占用10~17脚;这四个口的主要功能如下:(1) P0 口是一个8位不带内部上拉电阻的漏极开路型准双向I/O口,因此该口输出时需外接上拉电阻,而P1 、P2 和P3口都是带内部上拉电阻的8位双向I/O口。
(2) 在访问片外ROM时,P0口分时兼作数据总线和低8位地址线;P2口作高位地址线。
(3) 内部带程序存储器的芯片,在EPROM编程和程序验证时,P1输入低8位地址,P2输入高8位地址,P0输入指令代码。
(注:P1、P2作输入口时,必须要使每位先置“1”,才能读入外部数据。
)(4) P3口除作双向I/0口外还兼有专用功能。
P0口和P2口:图1为P0口和P2口其中一位的电路图,由图可见,电路中包含一个数据输出锁存器和两个三态数据输入缓冲器,另外还有一个数据输出的驱动和控制电路。
这两组口线用来作为CPU与外部数据存储器、外部程序存储器和I/O扩展口,而不能像P1、P3直接用作输出口。
它们一起可以作为外部地址总线,P0口身兼两职,既可作为地址总线,也可作为数据总线。
P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB15,P0口由ALE选通作为地址总线的低8位输出口AB0-AB7。
外部的程序存储器由PSEN信号选通,数据存储器则由WR和RD读写信号选通,因为216=64k,所以8051最大可外接64kB的程序存储器和数据存储器P1口:图2为P1口其中一位的电路图,P1口为8位准双向口,每一位均可单独定义为输入或输出口,当作为输入口时,1写入锁存器,Q(非)=0,T2截止,内上拉电阻将电位拉至1,此时该口输出为1,当0写入锁存器,Q(非)=1,T2导通,输出则为0。
MCS-51单片机的引脚及内部结构.
P3口各引脚对应的第二功能
P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7
RXD TXD /INT0 /INT1 T0 T1
/WR /RD
PSW各位定义
D7H D6H D5H D4H D3H D2H D1H D0H CY AC F0 RS1 RS0 OV — P
(1)CY(PSW.7):进位标志位 (2)AC(PSW.6):辅助进位标志位。 (3)F0 (PSW.5):用户标志位。 (4)RS1、RS0(PSW.4、PSW.3):工作寄存器组选择位。 用于选择CPU当前使用寄存器组。
4、I/O引脚
﹡ P0口(P0.0~P0.7):8位双向并行I/O接口。扩展外部存 储器或I/O口时,作为低8位地址总线和8位数据线的分时复 用接口,为双向三态。
﹡P1口(P1.0~P1.7) :8位准双向并行I/O接口。
﹡P2口(P2.0~P2.7) :8位准双向并行I/O接口。扩展外 部数据、程序存储器时,作为高8位地址输出端口。
用户RAM区(数据缓冲区) 位寻址区(00H~7FH) 工作寄存器区3区(R7~R0) 工作寄存器区2区(R7~R0) 工作寄存器区1区(R7~R0) 工作寄存器区0区(R7~R0)
内部RAM共有256个单元,通常把256个单元按功 能分划分为两部分:低128字节(00H~7FH)和高128 字节(80H~FFH)
1、P0口: P0口的字节地址为80H,位地址为80H~87H,既可以
做普通的I/O口使用也可以作为低8位的地址/数据线使用。
P0口某位结构
51单片机的IO口
51单片机的I O口.2P0口作为普通I/O口:①输出时,CPU发出控制电平"0"封锁"与"门,将输出上拉场效应管T1截止,同时使多路开关MUX把锁存器与输出驱动场效应管T2栅极接通。
故内部总线与P0口同相。
由于输出驱动级是漏极开路电路,若驱动NMOS或其它拉流负载时,需要外接上拉电阻。
P0的输出级可驱动8个LSTTL负载。
②输入时--分读引脚或读锁存器读引脚:由传送指令(MOV)实现;下面一个缓冲器用于读端口引脚数据,当执行一条由端口输入的指令时,读脉冲把该三态缓冲器打开,这样端口引脚上的数据经过缓冲器读入到内部总线。
读锁存器:有些指令如:ANLP0,A称为"读-改-写"指令,需要读锁存器。
上面一个缓冲器用于读端口锁存器数据。
*原因:如果此时该端口的负载恰是一个晶体管基极,且原端口输出值为1,那么导通了的PN结会把端口引脚高电平拉低;若此时直接读端口引脚信号,将会把原输出的"1"电平误读为"0"电平。
现采用读输出锁存器代替读引脚,图中,上面的三态缓冲器就为读锁存器Q端信号而设,读输出锁存器可避免上述可能发生的错误。
*说明:nP0口必须接上拉电阻;n在读信号之前数据之前,先要向相应的锁存器做写1操作的I/O口称为准双向口;n三态输入缓冲器的作用:n(ANLP0,A)准双向口:从图中可以看出,在读入端口数据时,由于输出驱动FET并接在引脚上,如果T2导通,就会将输入的高电平拉成低电平,产生误读。
所以在端口进行输入操作前,应先向端口锁存器写"1",使T2截止,引脚处于悬浮状态,变为高阻抗输入。
这就是所谓的准双向口。
2、P0作为地址/数据总线在系统扩展时,P0端口作为地址/数据总线使用时,分为:(1)P0引脚输出地址/数据信息:CPU发出控制电平"1",打开"与"门,又使多路开关MUX把CPU的地址/数据总线与T2栅极反相接通,输出地址或数据。
51单片机_片内外设汇总
锁存器
写锁存器
读引脚 返回
片内外设
1.3 P2口
特点: “通用数据I/O端口”和“高八位地址总线”端 口
读锁存器
地址/数据 1/0
控制
Vcc
内部上拉电阻
内部总线
D CL
Q /Q MUX
(地址/数据=0)
锁存器 写锁存器
P2.x 引脚
读引脚
返回上一次
片内外设
与P0口一样,P2口在系统使用外部存储器时,做高八位的 地址总线。 应当注意的是:仅使用外部数据存储器时,P2口分两种情 况: 1)仅仅使用256B的外部RAM时,即使用movx a,@r0指令 访问外部RAM,此时用8位的寄存器R0或R1作间址寄存器, 这时P2口无用,所以在这种情况下,P2口仍然可以做通用 I/O端口。 2)如果访问外部ROM或使用大于256BRAM时,P2口必须 作为外存储器的高八位地址总线。 如:movx a,@dptr ;访问外部数据存储器 movc a,@a+dptr ;访问外部程序存储器 这里使用了16位的寄存器DPTR
片内外设
1. 5 并行端口在使用时应注意的几个问题
“拉电流”还是“灌电流”----与大电流负载的连 接 (我们以美国ATMEL公司生产的AT89C51为例) 1, 使用灌电流的方式与电流较大的负载直接 连接时, 端口可以吸收约20mA的电流而保证端 口电平不高于0.45V(见右上图)。
2,采用拉电流方式连接负载时,AT89C51所 能提供“拉电流”仅仅为80μA,否则输出的 高电平会急剧下降.如果我们采用右下图的方式, 向端口输出一个高电平去点亮LED,会发现,端 口输出的电平不是“1”而是“0”! 当然,不是所有的单片机都是这样,PIC单 片机就可以提供30mA的拉电流和灌电流。单对 于大多数IC电路,最好还是使用“灌电流”去 推动负载。
51单片机各针脚介绍
51单片机各针脚介绍51单片机是一款广泛应用于嵌入式系统中的微控制器,它在电子行业中具有重要的地位。
了解51单片机的各个针脚和其功能对于学习和应用它来说至关重要。
本文将为读者介绍51单片机的各个针脚以及它们的功能。
1. VCC和GND:VCC代表供电正极,GND代表接地。
这两个针脚是最基本的供电和接地连接,使用者需要将这两个引脚连接到电源,以提供电压和地线。
2. P0.0 - P0.7:P0口是51单片机最常用的8位通用I/O口之一。
每个引脚可以被配置为输入或输出,用于连接和控制外部设备。
3. P1.0 - P1.7:P1口也是一个8位通用I/O口,具有与P0口相同的功能。
P1口的特点是它具备上拉电阻功能,可以用于外部开关和按钮的输入控制。
4. P2.0 - P2.7:P2口也是一个8位通用I/O口,同样可以作为输入或输出引脚。
与P1口类似,P2口也具备上拉电阻功能。
5. P3.0 - P3.7:P3口是最后一个8位通用I/O口,同样可用作输入或输出引脚。
与P2口类似,P3口具备上拉电阻功能。
6. RST:RST是复位控制引脚,用于将51单片机重启至复位状态。
当对RST引脚施加低电平脉冲时,单片机将会重新启动,并执行初始化操作。
7. EA/VPP:EA/VPP引脚具有两个不同的功能。
在系统中,EA引脚必须连接到GND,以选择外部程序存储器;VPP引脚在烧录代码时使用,通常连接到12V电压。
8. ALE/PROG:ALE/PROG引脚也有两种功能,ALE用于地址锁存器的时钟输入,PROG用于编程电平切换。
在应用中,ALE通常用于与外部设备进行时序协调。
9. PSEN:PSEN引脚用于外部程序存储器的读取操作。
当进行指令获取或通信时,PSEN引脚连接到程序存储器并发送读取控制信号。
10. XTAL1和XTAL2:这两个引脚用于外部晶振或陶瓷谐振器的连接。
XTAL1接收晶振信号输入,XTAL2输出晶振信号。
51单片机常用芯片引脚图
常用芯片引脚图一、 单片机类1、MCS-51芯片介绍:MCS-51系列单片机是美国Intel 公司开发的8位单片机,又可以分为多个子系列。
MCS-51系列单片机共有40条引脚,包括32条I/O 接口引脚、4条控制引脚、2条电源引脚、2条时钟引脚。
引脚说明: P0.0~P0.7:P0口8位口线,第一功能作为通用I/O 接口,第二功能作为存储器扩展时的地址/数据复用口。
P1.0~P1.7:P1口8位口线,通用I/O 接口无第二功能。
P2.0~P2.7:P2口8位口线,第一功能作为通用I/O 接口,第二功能作为存储器扩展时传送高8位地址。
P3.0~P3.7:P3口8位口线,第一功能作为通用I/O 接口,第二功能作为为单片机的控制信号。
ALE/ PROG :地址锁存允许/编程脉冲输入信号线(输出信号)PSEN :片外程序存储器开发信号引脚(输出信号)EA/Vpp :片外程序存储器使用信号引脚/编程电源输入引脚RST/VPD :复位/备用电源引脚2、MCS-96芯片介绍:MCS-96系列单片机是美国Intel 公司继MCS-51系列单片机之后推出的16位单片机系列。
它含有比较丰富的软、硬件资源,适用于要求较高的实时控制场合。
它分为48引脚和68引脚两种,以48引脚居多。
引脚说明:RXD/P2.1 TXD/P2.0:串行数据传出分发送和接受引脚,同时也作为P2口的两条口线HS1.0~HS1.3:高速输入器的输入端HS0.0~HS0.5:高速输出器的输出端(有两个和HS1共用)Vcc :主电源引脚(+5V )Vss :数字电路地引脚(0V )Vpd :内部RAM 备用电源引脚(+5V )V REF :A/D 转换器基准电源引脚(+5V )AGND :A/D 转换器参考地引脚12345678910111213141516171819204039383736353433323130292827262524232221P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST RXD/P3.0TXD/P3.1INT0/P3.2INT1/P3.3T0/P3.4T1/P3.5WR/P3.6RD/P3.7XTAL2XTAL1V SS V CC P0.0/AD 0P0.1/AD 1P0.2/AD 2P0.3/AD 3P0.4/AD 4P0.5/AD 5P0.6/AD 6P0.7/AD 7EA/V PP ALE/PROG PSENP2.7/A 15P2.6/A 14P2.5/A 13P2.4/A 12P2.3/A 11P2.2/A 10P2.1/A 9P2.0/A 8803180518751XTAL1、XTAL2:内部振荡器反相器输入、输出端,常外接晶振。
51单片机 寄存器,引脚与指令
51单片机:寄存器,引脚与指令本篇总结了单片机学习过程中常常遇到的一些单片机引脚,寄存器,与指令的缩写符号和助记符及简要介绍,方便大家初学与查看。
欢迎下载!1.51单片机:寄存器符号地址功能介绍B F0H B寄存器ACC E0H累加器PSW D0H程序状态字IP B8H中断优先级控制寄存器P3B0H P3口锁存器IE A8H中断允许控制寄存器P2A0H P2口锁存器SBUF99H串行口锁存器SCON98H串行口控制寄存器P190H P1口锁存器TH18DH定时器/计数器1(高8位)TH08CH定时器/计数器1(低8位)TL18BH定时器/计数器0(高8位)TL08AH定时器/计数器0(低8位)TMOD89H定时器/计数器方式控制寄存器TCON88H定时器/计数器控制寄存器DPH83H数据地址指针(高8位)DPL82H数据地址指针(低8位)SP81H堆栈指针P080H P0口锁存器PCON87H电源控制寄存器下面,我们介绍一下几个常用的SFR。
是累加器,通常用A表示。
ACC---是累加器,通常用1、ACC---这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。
它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。
自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。
该标志常用作程序分枝转移的判断条件。
一个寄存器。
B--一个寄存器。
2、B--在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
程序状态字。
PSW-----程序状态字。
3、PSW-----这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。
它的各位功能请看下表:D7D6D5D4D3D2D1D0CY AC F0RS1RS0OV P下面我们逐一介绍各位的用途进位标志。
AT89S52 (51)单片机的引脚图及各引脚功能说明
AT89S52 单片机的引脚图及各引脚功能说明之老阳三干创作由于本书所有的例程均是基于AT89S52 单片机开发的,这里着重介绍AT89S52 各个引脚及功能。
这些关系到在后面学习例程时对原理图的理解,读者要特别重视。
而对于存储器、定时器、中断系统等部分内容,读者可参考介绍MCS-51单片机的相关书籍。
AT89S52 是Atmel公司生产的一种低功耗、高性能CMOS 8位微控制器,具有8 位在系统可编程Flash存储器。
AT89S52 使用Atme 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。
片上Flash 允许程序存储器在系统可编程,也适于惯例编程器。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52 具有PDIP、PLCC、TQFP3 种封装形式以适用于分歧的使用场合。
各封装引脚定义如图1.2所示。
图 1.2 AT89S52引脚图下面简单介绍AT89S52 各引脚的功能,更多信息请查阅Atmel公司的技术文档。
VCC:电源。
GND:地。
P0 口:P0 口是一个8 位漏极开路的双向I/O 口。
作为输出口,每位能驱动8 个TTL逻辑电平。
对P0 端口写“1”时,引脚用做高阻抗输入。
当访问外部程序和数据存储器时,P0 口也被作为低8 位地址/数据复用。
在这种模式下,P0 具有内部上拉电阻。
在Flash编程时,P0 口也用来接收指令字节;在程序校验时,输出指令字节。
在程序校验时,需要外部上拉电阻。
P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,P1 输出缓冲器能驱动4 个TT逻辑电平。
当对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
当作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0 和P1.2 分别作为定时器/计数器2 的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体如表1-1 所示。
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 (上电启动地址)
51单片机针脚接口及锁存器
51单片机I/O引脚IO口工作原理一、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的数据(即把上次的数据锁存起来了)。
如果下一个时序控制脉冲信号来了,这时D端的数据才再次传送到Q端,从而改变Q端的状态。
有关51单片机读端口、读引脚的问题
有关51单⽚机读端⼝、读引脚的问题
80C51单⽚机有P0-P3四个P⼝,以P0为例说明:
要搞清这个问题,就要明⽩p0⼝的内部结构。
P0⼝是由锁存器经两个驱动场效应管和外部引脚相连的。
读引脚的意思就是直接读P0外部引脚的电位,⽽读端⼝(锁存器)读的是内部与数据总线链接的锁存器的电位。
两者不同。
⼀般来说,读取P0的数据,都是读引脚,⽬的是获取与P0相连的外部电路的状态。
⽽读端⼝是在执⾏下述语句时由CPU⾃⾏完成的:
inc P0;给p0加1
执⾏这个语句时,采⽤“读-改-写”的过程,先读取p0的端⼝数据,再加1,然后送到p0锁存器⾥。
注意这个端⼝数据跟p0的引脚状态不⼀样,⽐如你事先给p0写进69H,p0⾥数据就是69H,⽽引脚上的状态因为你没有执⾏MOV A,p0之类的指令,它是不会进到p0的锁存器⾥去的。
由此可见,所谓的读端⼝,不是读取p0的状态,⽽是在执⾏inc之类的指令时由CPU⾃⾏完成的,
读引脚就是读取p0⼝状态了。
读引脚时要注意:先要给p0写FFH,使它的场效应管T2和地断开。
因为p0⼝的场效应管T2⼀端接地,⼀端与外部引脚相连,由P0的锁存器控制,当给锁存器写1时,它和地断开,写0时和地相连,所以写零时读到的总是低电平。
试想你现在要读P0引脚,按理说P0与外部电路相连,外部电路的是什么状态,就应该读到什么,但如果p0⼝的场效应管T2⼀端接地的话,它会把p0⼝电位拉低,你读到的总是低电平0,所以要先给p0写FFH,把p0的场效应管T2和地断开,再读数时就是真实状态了。
当外部电路断开,再读时读到的就是p0端⼝(锁存器)的真实状态了。
zz()。
MCS-51 I-O端口的使用
(2)P3口第二功能
P3口第二功能如表所示:
提示
根据实际的应用场合中的需要,一般 把几条端口线设置为第二功能,而另外几 条端口线处于第一功能运行状态。因此, 在这种情况下,不宜对P3端口作字节操作, 需采用位操作的形式。
—6—
读锁存器
读锁存器中的数据时,读锁存器三态门缓冲器 U1打开(即三态门缓冲器的控制端有效),锁存器 输出端Q的数据经三态门U1进入内部数据总线。
注意
当从内部总线输出高电平后,锁存器Q=1,Q=0,场效 应管T2截止。若外接引脚信号为低电平,此时从引脚读入的 数据与从锁存器读入的数据不同。
为避免原端口的状态被读错,MCS-51系列单片机指令系 统中提供了“读—修改—写”方式指令,如ANL、ORL、XRL等 (这些指令都需要得到原端口输出的状态,修改后再输出), 采用读锁存器方式而不是读引脚方式。
P2口作为I/O端口使用时,多路开 关的控制信号为0(低电平),多路开 关与锁存器的Q端相接,数据输出与输 入工作过程与P0端口作为通用I/O口时 相似,这里不再赘述。
P2口作为通用I/O口
—11—
P2口作为地址总线时,多路开关的控 制信号为1(高电平),多路开关与地 址线接通,地址信号→非门(数据反 相)→场效应管(数据反相)→P2.X。
—4—
① 数据输出
由数据总线向引脚输出的工作过程:写锁存器信号CP有效, 内部总线的信号→锁存器的输入端D→锁存器的反向输出 端Q→多路开关MUX→T2管(数据反相)→P0.X。
提示
当多路开关的控制信号为低电平0时,与门输出为低电平,T1管是 截止的,所以作为输出口时,P0是漏极开路输出,当驱动上接电流负 载时,需要外接上拉电阻。
MCS51单片机的硬件结构
S3 S4 S5 S6 S1
例:MOV A,#09H
3、指令周期 是执行一条指令所需时间. 指令分为:单字节、双字节、三字节指令. 执行一条指令的时间:简单的1个机器周期,复杂的需2个或多
个机器周期.〔单、双字节指令为单机器周期;三字节都是双机器 周期;乘、除为4个机器周期〕
4、指令时序 执行指令,分为取指阶段和执行指令阶段.
2拍P1、P2,一个时钟周期时钟脉冲可表示为:S1P1,…S6P2〕 〔fosc=6MHz时,Tcy=2μs; fosc=12MHz时,Tcy=1μs 〕
一个机器周期
S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6
P1 P2
P1 P2
ALE
读操作码 S1 S2
读下一个操作码(丢弃 ) 单字节单周期指令
*输出电路有上拉电阻〔输出不是三态的,为准双向口〕,在输入数据时, 应先向其锁存器写入1,使输出驱动电路的FET截止.
P2口的位结构电路原理图
四、P3端口 字节地址B0H,位地址B0H~B7H. 作用:通用I/O口;第二功能口.
P3口的位结构电路原理图
2.6 时钟电路与时序
时钟电路→产生时钟控制信号→ 控制单片机严格地按照时序执 行指令.
一、P0端口 字节地址80H,位地址80H~87H. 结构:锁存器,输出驱动电路,输入缓冲器 工作过程: *地址/数据线;
*通用I/O口〔输入时,应先向锁存器写入1;输入分有读引脚、读端口; 输出时须外接上拉电阻〕;
读锁存器
地址/数据 控制 &
内部总线 写入
D锁存器Q CP Q
MUX
VCC P0.x
时序:单片机内的各种操作都是在一系列脉冲〔控制信号〕 控制下进行的,而各个脉冲〔控制信号〕在时间上是有先后顺序的, 这种顺序就称为时序.
MCS-51单片机指令系统“读-改-写”指令
MCS-51单片机指令系统“读-改-写”指令
单片机首先将欲修改的寄存器的内容读回ALU,对相应位进行修改,然后再整个写回原来的寄存器地址,完成该功能的指令就叫做“读-改-写”指令。
读锁存器和读引脚的区别
在51单片机中“读-修改-写”是单片机内部自己执行的,它发生在写IO口的时候,当写IO口的时候它先把IO的当前状态读回来,根据要写的数据修改读回来的数据,再写到IO口;读引脚是直接读引脚的当前状态,当前引脚是高电平,读回来的就是高电平,低电平时读回来的就是低电平
读的两种方式
在对并行口P0~P3操作时,这类指令从端口的锁存器读出数据而不是引脚处。
而MOV等非“读-改-写”指令,则是从端口的引脚处读数据。
单片机从端口读入数据的通道有两个,一个是从锁存器引入,一个是从输出引脚处引入,分别叫做“读锁存器”和“读引脚”。
单片机在进行端口输出时,经常要参考其上一次的输出状态。
例如,需要将连接到端口的LED闪烁。
编程序时往往需要从输出引脚读前一次的输出状态,将其求反后输出。
但如果上次是输出“1”使LED点亮,这时候虽然端口上输出逻辑是“1”,但是由于LED的二极管作用将输出高电平拉至“0”电平(0.7V左右),通过引脚读进来就是“0”而非“1”了。
这样,将“0”求反后输出还是“1”,就起不到使灯闪烁的目的了。
但是,如果这时读的不是端口而是锁存器的输出端Q,则实现闪烁的功能就正常。
上述例子很好地说明了为什么单片机在设置读端口功能后还要设置读锁存器这一功能。
读引脚由传送指令MOV实现
读锁存器用到的“读-改-写”指令用 ANL P0,A等实现。
MCS-51单片机的并行I-O
内 部总 线 写 锁存 器
D
Q
P 3.X
锁 存器
CP Q
内 部上 拉 电 阻
P 3.X 引脚 &
读 引脚
第 二输 入 功 能
P3口的位结构
P3端口(P3.0-P3.7,10-17脚); P3端口是一个带内部上拉电阻的8位I/O端口,P3端口的每一位
可以驱动4个LS型TTL负载; P3端口除了做为一般I/O端口外,每个引脚还具有第二功能。
“读—修改—写”类指令的端口输出与P0的端口输出功能相同。 3.地址总线
CPU在执行读片外ROM、读/写片外RAM或I/O口指令时,单片机 内硬件自动将控制信号C=1,MUX开关接到地址线,地址信息经非门 和驱动管V输出。
1.4 P3口的结构和功能
1.P3口的结构
读 锁存 器
第 二输 出 功 能 VCC来自1.2 P1口的结构和功能
1.P1口的结构
读锁 存器
内部 总线 写锁 存器
D
Q
P 1.X
锁存 器
CP Q
VCC
内部 上拉电阻 P 1.X 引脚
读引 脚
P1口的位结构
1.3 P2口的结构和功能
1.P2口的结构
读锁存器
内部总线 写锁存器
DQ P 2.X 锁存器
CP Q
VCC
地址 控制 MUX
内部上拉电阻
CPU在执行输入指令时,首先低8位地址信息出现在地址/数据总 线上,P0.x引脚的状态与地址/数据总线的地址信息相同。然后, CPU自动使模拟转换开关MUX拨向锁存器,并向P0口写入0FFH,同时 “读引脚”信号有效,数据经缓冲器读入内部总线。因此,可以认 为P0口作为地址/数据总线使用时是一个真正的双向口。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机I/O引脚IO口工作原理一、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的数据(即把上次的数据锁存起来了)。
如果下一个时序控制脉冲信号来了,这时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的漏极到输出端P0.X。
前面我们已讲了,当多路开关的控制信号为低电平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→立即数P0ORL P0,A ;P0→AP0INC P1 ;P1+1→P1DEC P3 ;P3-1→P3CPL 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(11111111,即向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端口也是准双向口。