深圳市航顺芯片技术研发有限公司
登录
直播中
李华
7年用户
1352经验值
私信
关注
[问答]
AT89S51单片机I/O端口及工作原理是什么?
开启该帖子的消息推送
AT89S51
AT89S51
单片机
I/O端口及工作原理是什么?
回帖
(1)
王立冕
2021-11-4 11:17:46
AT89S51
单片机有4个8位的并行I/O端口P0、P1、P2和P3。每个端口均由锁存器、输出驱动器和输入缓冲器组成。各端口除可以作为字节输入/输出外,它们的每一条端口线也可以单独地用作位输入/输出线。各端口编址于特殊功能寄存器中,既有字节地址又有位地址。对端口锁存器的读/写操作,就可以实现端口的输入/输出操作。
当不需要外部程序存储器和数据存储器扩展时,P0口、P2口可用作通用的输入/输出口;当需要外部程序存储器和数据存储器扩展时,P0口作为分时复用的低8位地址/数据总线,P2口作为高8位地址总线。
虽然各端口的功能不同,且结构也存在一些差异,但每个端口的位结构是相同的。所以,端口结构的介绍均以其位结构进行说明。
一、P0口的结构
P0口由1个输出锁存器、1个转换开关MUX、2个三态输入缓冲器、输出驱动电路和1个与门及1个反相器组成,P0口的位结构如图所示。
图中的控制信号C的状态决定转换开关的位置。当C=0时,开关处于图中所示位置:当C=1时,开关拨向反相器输出端位置。
(1)P0口用作通用I/O口
当系统不进行片外的ROM扩展,也不进行片外R AM扩展时,P0用作通用I/O接口。在这种情况下,单片机硬件自动使控制信号C= 0,MUX开关接向锁存器的反相输出端。另外,与门输出的“0”使输出驱动器的上拉场效应晶体管VT1处于截止状态。因此,作为输出驱动时,需工作在外接上拉电阻的漏极开路方式。
作输出接口时,CPU执行端口的输出指令,内部数据总线上的数据在“写锁存器”信号的作用下由D端进入锁存器,经锁存器的反相端送至场效应晶体管VT2,再经VT2反相,在P0.X引脚出现的数据正好是内部总线的数据。
作输入接口时,数据可以读自端口的锁存器,也可以读自端口的引脚。这要根据输入操作采用的是“读锁存器”指令还是“读引脚”指令来决定。读端口锁存器可以避免因外围电路原因使原接口引脚的状态发生变化造成的误读。
(2)P0用作地址/数据总线
当系统进行片外的ROM扩展(此时EA=0)或进行片外RAM扩展时,P0口用作地址/数据总线。在这种情况下,单片机内硬件自动使控制信号C=1,MUX开关接向反相器的输出端,这时与门的输出由地址/数据总线的状态决定。
CPU在执行输出指令时,低8位地址信息和数据信息分时出现在地址/数据总线上。若地址/数据总线的状态为“1”,则场效应晶体管VT1导通、VT2截止,引脚状态为“1”;若地址/数据总线的状态为“0”,则场效应晶体管VT1截止、VT2导通,引脚状态为“0”。可见P0.X引脚的状态正好与地址/数据总线的信息相同。
CPU在执行输入指令时,首先低8位地址信息出现在地址/数据总线上,P0.X引脚的状态与地址/数据总线的地址信息相同。然后,CPU自动地使转换开关MUX拨向锁存器,并向P0口写入FFH,同时“读引脚”信号有效,数据经缓冲器进入内部数据总线。
由此可见,P0口作为地址/数据总线使用时是一个真正的双向接口。
二、 P2口的结构
P2口由1个输出锁存器、1个转换开关MUX、2个三态输入缓冲器、输出驱动电路和1个反相器组成。P2口的位结构如图所示。
图中的控制信号C的状态决定转换开关的位置。当C=0时,开关处于图中所示位置;当C=1时,开关拨向地址线位置。由图可见,输出驱动电路与P0口不同,内部设有上拉电阻。
(1)P2口用作通用I/O接口
当不需要在单片机芯片外部扩展程序存储器,仅可能扩展256 B的片外RAM时,只用到了地址线的低8位,P2口仍可以作为通用I/O接口使用。
CPU在执行输出指令时,内部数据总线的数据在“写锁存器”信号的作用下由D端进入锁存器,经反相器反相后送至场效应晶体管VT,再经VT反相,在P2.X引脚出现的数据正好是内部数据总线的数据。
P2口用作输入时,数据可以读自接口的锁存器,也可以读自接口的引脚。这要根据输入操作采用的是“读锁存器”指令还是“读引脚”指令来决定。
CPU在执行“读-修改-写”类输入指令时,内部产生的“读锁存器”操作信号使锁存器Q端数据进入内部数据总线,在与累加器A进行逻辑运算之后,结果又送回P2口锁存器并出现在引脚上。
CPU在执行输入指令时,内部产生的操作信号是“读引脚”,这时应在执行输入指令前把锁存器写入“1”,目的是使场效应晶体管VT截止,从而使引脚处于高阻抗输入状态。
所以,P2口在作为通用I/O接口时,属于准双向接口。
(2)P2口用作地址总线
当需要在单片机芯片外部扩展程序存储器或扩展的RAM容量超过256 B时,单片机内硬件自动使控制信号C=1,MUX开关接向地址线,这时P2.X引脚的状态正好与地址线的信息相同。
三、P0口的结构
P1口是80C51的唯一的单功能接口,仅能用作通用的数据输入/输出接口。P1口的位结构如图所示。
由图可见,P1口由1个输出锁存器、2个三态输入缓冲器和输出驱动电路组成。输出驱动电路与P2接口相同,内部设有上拉电阻。
P1口是通用的准双向I/O接口。输出高电平时,能向外提供上拉电流负载,不必再接上拉电阻。当接口用作输入时,须向口锁存器写入“1”。
四、 P3口的结构
P3口是双功能接口,除具有数据输入/输出功能外,每一接口线还具有特殊的第二功能。
P3口的位结构如图1.2.6所示。P3口由1个输出锁存器、3个输入缓冲器(其中2个为三态)、输出驱动电路和1个与非门组成。输出驱动电路与P2口和P1口相同,内部设有上拉电阻。
(1)P3口用作第一功能的通用I/O接口
当CPU对P3口进行字节或位寻址时(多数应用场合是把几条接口线设为第二功能,另外几条接口线设为第一功能,这时宜采用位寻址方式),单片机内部的硬件自动将第二功能输出线的W置“1”。这时,对应的接口线为通用I/O接口方式。
作为输出时,锁存器的状态(Q端)与输出引脚的状态相同;作为输入时,也要先向P3口锁存器写入“1”,使引脚处于高阻输入状态。输入的数据在“读引脚”信号的作用下,进入内部数据总线。所以,P3口在作为通用I/O接口时,也属于准双向接口。
(2)P3口用作第二功能使用
当CPU不对P3口进行字节或位寻址时,单片机内部硬件自动将接口锁存器的Q端置1。这时,P3口可以作为第二功能使用。各引脚的定义如下:
作为输出功能的接口线(如TXD),由于该位的锁存器已自动置“1”,与非门对第二功能输出是畅通的,即引脚的状态与第二功能输出是相同的。
作为输入功能的接口线(如RXD),由于此时该位的锁存器和第二功能输出线均为“1”,场效应晶体管VT截止,该接口引脚处于高阻输入状态。引脚信号经输入缓冲器(非三态)进入单片机内部的第二功能输入线。
AT89S51
单片机有4个8位的并行I/O端口P0、P1、P2和P3。每个端口均由锁存器、输出驱动器和输入缓冲器组成。各端口除可以作为字节输入/输出外,它们的每一条端口线也可以单独地用作位输入/输出线。各端口编址于特殊功能寄存器中,既有字节地址又有位地址。对端口锁存器的读/写操作,就可以实现端口的输入/输出操作。
当不需要外部程序存储器和数据存储器扩展时,P0口、P2口可用作通用的输入/输出口;当需要外部程序存储器和数据存储器扩展时,P0口作为分时复用的低8位地址/数据总线,P2口作为高8位地址总线。
虽然各端口的功能不同,且结构也存在一些差异,但每个端口的位结构是相同的。所以,端口结构的介绍均以其位结构进行说明。
一、P0口的结构
P0口由1个输出锁存器、1个转换开关MUX、2个三态输入缓冲器、输出驱动电路和1个与门及1个反相器组成,P0口的位结构如图所示。
图中的控制信号C的状态决定转换开关的位置。当C=0时,开关处于图中所示位置:当C=1时,开关拨向反相器输出端位置。
(1)P0口用作通用I/O口
当系统不进行片外的ROM扩展,也不进行片外R AM扩展时,P0用作通用I/O接口。在这种情况下,单片机硬件自动使控制信号C= 0,MUX开关接向锁存器的反相输出端。另外,与门输出的“0”使输出驱动器的上拉场效应晶体管VT1处于截止状态。因此,作为输出驱动时,需工作在外接上拉电阻的漏极开路方式。
作输出接口时,CPU执行端口的输出指令,内部数据总线上的数据在“写锁存器”信号的作用下由D端进入锁存器,经锁存器的反相端送至场效应晶体管VT2,再经VT2反相,在P0.X引脚出现的数据正好是内部总线的数据。
作输入接口时,数据可以读自端口的锁存器,也可以读自端口的引脚。这要根据输入操作采用的是“读锁存器”指令还是“读引脚”指令来决定。读端口锁存器可以避免因外围电路原因使原接口引脚的状态发生变化造成的误读。
(2)P0用作地址/数据总线
当系统进行片外的ROM扩展(此时EA=0)或进行片外RAM扩展时,P0口用作地址/数据总线。在这种情况下,单片机内硬件自动使控制信号C=1,MUX开关接向反相器的输出端,这时与门的输出由地址/数据总线的状态决定。
CPU在执行输出指令时,低8位地址信息和数据信息分时出现在地址/数据总线上。若地址/数据总线的状态为“1”,则场效应晶体管VT1导通、VT2截止,引脚状态为“1”;若地址/数据总线的状态为“0”,则场效应晶体管VT1截止、VT2导通,引脚状态为“0”。可见P0.X引脚的状态正好与地址/数据总线的信息相同。
CPU在执行输入指令时,首先低8位地址信息出现在地址/数据总线上,P0.X引脚的状态与地址/数据总线的地址信息相同。然后,CPU自动地使转换开关MUX拨向锁存器,并向P0口写入FFH,同时“读引脚”信号有效,数据经缓冲器进入内部数据总线。
由此可见,P0口作为地址/数据总线使用时是一个真正的双向接口。
二、 P2口的结构
P2口由1个输出锁存器、1个转换开关MUX、2个三态输入缓冲器、输出驱动电路和1个反相器组成。P2口的位结构如图所示。
图中的控制信号C的状态决定转换开关的位置。当C=0时,开关处于图中所示位置;当C=1时,开关拨向地址线位置。由图可见,输出驱动电路与P0口不同,内部设有上拉电阻。
(1)P2口用作通用I/O接口
当不需要在单片机芯片外部扩展程序存储器,仅可能扩展256 B的片外RAM时,只用到了地址线的低8位,P2口仍可以作为通用I/O接口使用。
CPU在执行输出指令时,内部数据总线的数据在“写锁存器”信号的作用下由D端进入锁存器,经反相器反相后送至场效应晶体管VT,再经VT反相,在P2.X引脚出现的数据正好是内部数据总线的数据。
P2口用作输入时,数据可以读自接口的锁存器,也可以读自接口的引脚。这要根据输入操作采用的是“读锁存器”指令还是“读引脚”指令来决定。
CPU在执行“读-修改-写”类输入指令时,内部产生的“读锁存器”操作信号使锁存器Q端数据进入内部数据总线,在与累加器A进行逻辑运算之后,结果又送回P2口锁存器并出现在引脚上。
CPU在执行输入指令时,内部产生的操作信号是“读引脚”,这时应在执行输入指令前把锁存器写入“1”,目的是使场效应晶体管VT截止,从而使引脚处于高阻抗输入状态。
所以,P2口在作为通用I/O接口时,属于准双向接口。
(2)P2口用作地址总线
当需要在单片机芯片外部扩展程序存储器或扩展的RAM容量超过256 B时,单片机内硬件自动使控制信号C=1,MUX开关接向地址线,这时P2.X引脚的状态正好与地址线的信息相同。
三、P0口的结构
P1口是80C51的唯一的单功能接口,仅能用作通用的数据输入/输出接口。P1口的位结构如图所示。
由图可见,P1口由1个输出锁存器、2个三态输入缓冲器和输出驱动电路组成。输出驱动电路与P2接口相同,内部设有上拉电阻。
P1口是通用的准双向I/O接口。输出高电平时,能向外提供上拉电流负载,不必再接上拉电阻。当接口用作输入时,须向口锁存器写入“1”。
四、 P3口的结构
P3口是双功能接口,除具有数据输入/输出功能外,每一接口线还具有特殊的第二功能。
P3口的位结构如图1.2.6所示。P3口由1个输出锁存器、3个输入缓冲器(其中2个为三态)、输出驱动电路和1个与非门组成。输出驱动电路与P2口和P1口相同,内部设有上拉电阻。
(1)P3口用作第一功能的通用I/O接口
当CPU对P3口进行字节或位寻址时(多数应用场合是把几条接口线设为第二功能,另外几条接口线设为第一功能,这时宜采用位寻址方式),单片机内部的硬件自动将第二功能输出线的W置“1”。这时,对应的接口线为通用I/O接口方式。
作为输出时,锁存器的状态(Q端)与输出引脚的状态相同;作为输入时,也要先向P3口锁存器写入“1”,使引脚处于高阻输入状态。输入的数据在“读引脚”信号的作用下,进入内部数据总线。所以,P3口在作为通用I/O接口时,也属于准双向接口。
(2)P3口用作第二功能使用
当CPU不对P3口进行字节或位寻址时,单片机内部硬件自动将接口锁存器的Q端置1。这时,P3口可以作为第二功能使用。各引脚的定义如下:
作为输出功能的接口线(如TXD),由于该位的锁存器已自动置“1”,与非门对第二功能输出是畅通的,即引脚的状态与第二功能输出是相同的。
作为输入功能的接口线(如RXD),由于此时该位的锁存器和第二功能输出线均为“1”,场效应晶体管VT截止,该接口引脚处于高阻输入状态。引脚信号经输入缓冲器(非三态)进入单片机内部的第二功能输入线。
举报
更多回帖
rotate(-90deg);
回复
相关问答
AT89S51
AT89S51
单片机
的
I
/
O
端口
的特点及使用注意事项有哪些
2021-08-04
4239
AT89S51
/52
单片机
与AT
89C51
单片机
的主要区别在哪
2021-11-09
4841
在低功耗模式下
at89s51
单片机
的看门狗定时器会不会
工作
?
2023-04-13
1205
求
AT89S51
的Proteus7.10 库元件
2012-10-11
9169
基于
AT89S51
单片机
和数字温度传感器DS18B20组成的多路温度检测系统
2020-04-28
4417
请问PIC
单片机
和AVR
单片机
是
51
内核的吗?
2021-11-02
1968
请问PIC
单片机
和AVR
单片机
是
51
内核的吗?
2021-07-08
1372
求助!
AT89S51
单片机
控制步进电机编程
2014-03-24
3247
89c51
单片机
的引脚及功能有哪些
2021-09-24
5084
单片机
是什么?如何学好
单片机
?
2021-07-14
1386
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分