MCS-51单片机输入输出口
- 格式:doc
- 大小:38.00 KB
- 文档页数:3
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。
单片机IO口结构及上拉电阻MCS-51有4组8位I/O口:P0、P1、P2和P3口,P1、P2和P3为准双向口,P0口则为双向三态输入输出口,下面我们分别介绍这几个口线。
一、P0口和P2口图1和图2为P0口和P2口其中一位的电路图。
由图可见,电路中包含一个数据输出锁存器(D触发器)和两个三态数据输入缓冲器,另外还有一个数据输出的驱动(T1和T2)和控制电路。
这两组口线用来作为CPU与外部数据存储器、外部程序存储器和I/O扩展口,而不能象P1、P3直接用作输出口。
它们一起可以作为外部地址总线,P0口身兼两职,既可作为地址总线,也可作为数据总线。
图1 单片机P0口内部一位结构图图2 单片机P0口内部一位结构图P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB15,P0口由ALE选通作为地址总线的低8位输出口AB0-AB7。
外部的程序存储器由PSEN信号选通,数据存储器则由WR和RD读写信号选通,因为2^16=64k,所以MCS-51最大可外接64kB的程序存储器和数据存储器。
二、P1口图3为P1口其中一位的电路图,P1口为8位准双向口,每一位均可单独定义为输入或输出口,当作为输入口时,1写入锁存器,Q(非)=0,T2截止,内上拉电阻将电位拉至"1",此时该口输出为1,当0写入锁存器,Q(非)=1,T2导通,输出则为0。
图3 单片机P2口内部一位结构图作为输入口时,锁存器置1,Q(非)=0,T2截止,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平,正因为这个原因,所以P1口常称为准双向口。
需要说明的是,作为输入口使用时,有两种情况:1.首先是读锁存器的内容,进行处理后再写到锁存器中,这种操作即读—修改—写操作,象JBC(逻辑判断)、CPL(取反)、INC(递增)、DEC(递减)、ANL(与逻辑)和ORL(逻辑或)指令均属于这类操作。
2.读P1口线状态时,打开三态门G2,将外部状态读入CPU。
单片机应用电子报/2004年/09月/12日/第011版/浅谈MCS51单片机的准双向口珠海刘经高 在MCS51单片机的设计中,若要使输出脚为高电平,只要用位控制指令“SETB bit”即可;反之,若输出为低电平,则用位控制指令“CL R bit”。
若将MCS51单片机的P1~P3口用于输入,就应注意软硬件的配合设计,因为MCS51单片机的P1~P3口是准双向口(P0口是双向口),即在用作输入时首先要置成高电平,因此设计得不合理容易在编程调试时找不到问题所在,容易被假象迷惑而走许多弯路。
图1是一个典型的按键输入电路。
按键按下时,I/O口接地;按键不按时,该I/O 口为高电平。
而在软件设计时,需将该I/O口置高电平,即用命令“SETB bit”。
该置高命令不会对输入引脚的状态判断带来影响,因为低电平是外部“强行”给定的。
但是,下面的设计方法就有问题。
例1:如图2,这是一个简单的电阻分压电平转换电路,设计的意图是检测12V电平的有无。
从表面上看,不会有什么问题:12V存在时,I/O口为高电平;12V不存在时,I/O口为低电平。
但在编程调试时会发现,12V不存在时,该I/O口也为高电平,达不到设计的目的。
例2:如图3是一个简单的与门电路,其设计意图是A、B两点都为高时,C点输出为高;A、B两点中任意一点为低时,C点输出为低。
但在实际调试时,A点为高,12V 电平为0时,C点仍然为高,达不到设计要求。
由例1、例2可知,若电平转换使用简单的电阻分压,从理论上分析可以达到确认12V电压有无的目的,但实际上,当单片机的I/O口用作输入口时,首先要将它拉高,即在软件的设计上要用“SETB bit”命令将它置1,因输入端的分压电阻较大,12V电平为0时无法将它拉到低电平。
要解决这一问题,首先要理解输入的真正含义,即输入的状态是外部能可靠地改变。
图2中的方法元件少、简单,但不能可靠地改变输入端的状态,为此,可利用图4和图5所示的电路代替,它们能真正可靠地改变输入端的状态。
MCS-51单片机输入输出口
8051有4组8位I/O口:P0、P1、P2和P3口,P1、P2和P3为准双向口,P0口则为双向三态输入输出口,下面我们分别介绍这几个口线:
·P0口和P2口:
右图为P0口和P2口其中一位的电路图,由图可见,电路中包含一个数据输出锁存器和两个三态数据输入缓冲器,另外还有一个数据输出的驱动和控制电路。
这两组口线用来作为CPU与外部数据存储器、外部程序存储器和I/O扩展口,而不能象P1、P3直接用作输出口。
它们一起可以作为外部地址总线,P0口身兼两职,既可作为地址总线,也可作为数据总线。
参考图2。
P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB15,P0口由ALE选通作为地址总线的低8位输出口AB0-AB7。
外部的程序存储器由PSEN信号选通,数据存储器则由WR 和RD读写信号选通,因为216=64k,所以8051最大可外接64kB的程序存储器和数据存储器。
·P1口:
右图为P1口其中一位的电路图,P1口为8位准双向口,每一位均可单独定义为输入或输出口,当作为输入口时,1写入锁存器,Q(非)=0,T2截止,内上拉电阻将电位拉至"1",此时该口输出为1,当0写入锁存器,Q(非)=1,T2导通,输出则为0。
作为输入口时,锁存器置1,Q(非)=0,T2截止,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平,正因为这个原因,所以P1口常称为准双向口。
需要说明的是,作为输入口使用时,有两种情况,其一是:首先是读锁存器的内容,进行处理后再写到锁存器中,这种操作即读—修改—写操作,象JBC(逻辑判断)、CPL(取反)、INC(递增)、DEC(递减)、ANL(与逻辑)
和ORL(逻辑或)指令均属于这类操作。
其二是:读P1口线状态时,打开三态门G2,将外部状态读入CPU。
·P3口:
P3口的电路如上图所示,P3口为准双向口,为适应引脚的第二功能的需要,增加了第二功能控制逻辑,在真正的应用电路中,第二功能显得更为重要。
由于第二功能信号有输入输出两种情况,我们分别加以说明。
P3口的输入输出及P3口锁存器、中断、定时/计数器、串行口和特殊功能寄存器有关,P3口的第一功能和P1口一样可作为输入输出端口,同样具有字节操作和位操作两种方式,在位操作模式下,每一位均可定义为输入或输出。
我们着重讨论P3口的第二功能,P3口的第二功能各管脚定义如下:
·P3.0 串行输入口(RXD)
·P3.1 串行输出口(TXD)
·P3.2 外中断0(INT0)
·P3.3 外中断1(INT1)
·P3.4 定时/计数器0的外部输入口(T0)
·P3.5 定时/计数器1的外部输入口(T1)
·P3.6 外部数据存储器写选通(WR)
·P3.7 外部数据存储器读选通(RD)
对于第二功能为输出引脚,当作I/O口使用时,第二功能信号线应保持高电平,与非门开通,以维持从锁存器到输出口数据输出通路畅通无阻。
而当作第二功能口线使用时,该位的锁存器置高电平,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。
对于第二功能
为输入的信号引脚,在口线上的输入通路增设了一个缓冲器,输入的第二功能信号即从这个缓冲器的输出端取得。
而作为I/O口线输入端时,取自三态缓冲器的输出端。
这样,不管是作为输入口使用还是第二功能信号输入,输出电路中的锁存器输出和第二功能输出信号线均应置“1”。