AT89S51的并行I/O口

发布者:心灵捕手最新更新时间:2017-12-28 来源: eefocus关键字:AT89S51  并行  I  O口 手机看文章 扫描二维码
随时随地手机看文章

      AT89S51单片机共有4个双向的8位并行I/O口,分别记为PO、Pl、P2和P3,其中输出锁存器属于特殊功能寄存器。端口的每一位均由输出锁存器、输出驱动器和输入缓冲器组成,这4个端口除了按字节输入/输出外,还可以按位寻址,便于位控功能的实现。
  
  PO口
  
  PO口是一个双功能的8位并行口,字节地址为80H,位地址为80H~87H。端口的各位具有完全相同但又相互独立的电路结构,PO口某一位的位电路结构如图2-8所示。结构
  
  1.位电路结构

      PO口某一位的电路包括:
  
  (1)一个数据输出的锁存器,用于数据位的锁存。
  
  (2)两个三态的数据输入缓冲器,分别是用于读锁存器数据的输入缓冲器BUF1和读引脚数据的输入缓冲器BUF2。
  
  (3)一个多路转接开关MUX,它的一个输入来自锁存器的Q(的反)端,另一个输入为地址/数据信号的反相输出。MUX由“控制”信号控制,实现锁存器的输出和地址/数据信号之间的转接。
  
  (4)数据输出的控制和驱动电路,由两个场效应管(FET)组成。
  
  2.工作过程分析
  
  (1) PO口用作地址/数据总线  当AT89S51外扩存储器或I/O时,PO口作为单片机系统复用的地址/数据总线使用。
  
  当作为地址或数据输出时,“控制”信号为1,硬件自动使转接开关MUX打向上面,接通反相器的输出,同时使与门处于开启状态。当输出的地址/数据信息为l时,与门输出为1,上方的场效应管导通,下方的场效应管截止,PO.x引脚输出为l;当输出的地址/数据信息为O时,上方的场效应管截止,下方的场效应管导通,PO.x引脚输出为0。这说明PO.x引脚的输出状态随地址/数据状态的变化而变化。输出电路是上、下两个场效应管形成的推拉式结构,大大提高了负载能力,上方的场效应管这时起到内部上拉电阻的作用。
  
  当PO口作为地址/数据输入时,仅从外部存储器(或外部I/O)读入信息,对应的“控制”信号为0,MUX接通锁存器的Q(的反)端。由于PO口作为地址/数据复用方式访问外部存储器时,CPU自动向PO口写入FFH,使下方的场效应管截止,上方的场效应管由于控制信号为O也截止,从而保证数据信息的高阻抗输入,从外部存储器输入的数据信息直接由PO.x引脚通过输入缓冲器BUF2进入内部总线。
  
  具有高阻抗输入的I/O口如果是真正的双向口,它应是具有高电平、低电平和高阻抗3种状态的端口。因此,PO口作为地址/数据总线使用时是一个真正的双向端口,简称双向口。
  
  (2) PO口用作通用I/O口  当PO口不作为系统的地址/数据总线使用时,此时PO口也可作为通用的I/O口使用。
  
  当用作通用的I/O时,对应的“控制”信号为0,MUX打向下面,接通锁存器的Q(的反)端,与门输出为0,上方的场效应管截止,形成的PO口输出电路为漏极开路输出。
  
  PO口用作输出口时,来自CPU的“写”脉冲加在D锁存器的CP端,内部总线上的数据写入D锁存器,并由引脚PO.x输出。当D锁存器为1时,Q端为0,下方场效应管截止,输出为漏极开路,此时,必须外接上拉电阻才能有高电平输出;当D锁存器为0时,下方场效应管导通,PO口输出为低电平。
  
  PO口作为输入口使用时,有两种读入方式:“读锁存器”和“读引脚”。当CPU发出“读锁存器”指令时,锁存器的状态由Q端经上方的三态缓冲器BUF1进入内部总线;当CPU发出“读引脚”指令时,锁存器的输出状态=1(即Q(的反)端为0),从而使下方场效应管截止,引脚的状态经下方的三态缓冲器BUF2进入内部总线。
  
  3.PO口的特点
  
  综上所述,PO口具有如下特点:PO口为双功能口——地址/数据复用口和通用I/O口。
  
  (1)当PO口用作地址/数据复用口时,是一个真正的双向口,用作与外部存储器的连接,输出低8位地址和输出/输入8位数据。
  
  (2)当PO口用作通用I/O口时,由于需要在片外接上拉电阻,端口不存在高阻抗(悬浮)状态,因此是一个准双向口。为保证引脚信号的正确读入,应首先向锁存器写l。单片机复位后,锁存器自动被置1;当PO口由原来的输出状态转变为输入状态时,应首先置锁存器为1,方可执行输入操作。
  
  一般情况下,PO口大多作为地址/数据复用口使用,这时就不能再作为通用I/O口使用。


  Pl口
  
  Pl口是单功能的I/O口,字节地址为90H,位地址为90H~97H。Pl口某一位的位电路结构如图2-9所示。结构
  
  1.位电路结构


      P1口位电路结构由以下三部分组成:
  
  (1)一个数据输出锁存器,用于输出数据位的锁存。
  
  (2)两个三态的数据输入缓冲器BUF1和BUF2,分别用于读锁存器数据和读引脚数据的输入缓冲。
  
  (3)数据输出驱动电路,由一个场效应管(FET)和一个片内上拉电阻组成。
  
  2.工作过程分析
  
   P1口只能作为通用的I/O口使用。
  
  (1) P1口作为输出口时,若CPU输出1,Q=1, Q(的反)=0,场效应管截止,Pl口引脚的输出为1;若CPU输出Q=0,Q(的反)=1,场效应管导通,P1口引脚的输出为0。
  
  (2) P1口作为输入口时,分为“读锁存器”和“读引脚”两种方式。“读锁存器”时,锁存器的输出端Q的状态经输入缓冲器BUF1进入内部总线;“读引脚”时,先向锁存器写1,使场效应管截止,Pl.x引脚上的电平经输入缓冲器BUF2进入内部总线。
  
  3.P1口的特点
  
  P1口由于有内部上拉电阻,没有高阻抗输入状态,故为准双向口。作为输出口时,不需要在片外接上拉电阻。
  
  P1口“读引脚”输入时,必须先向锁存器写入1。
  
  P2口
  
  P2口是一个双功能口,字节地址为AOH,位地址为AOH~A7H。P2口某一位的位电路结构如图2-10所示结构
  
  1.位电路结构
  
  P2口某一位的电路包括:
  
  (1)一个数据输出锁存器,用于输出数据位的锁存。
  
  (2)两个三态数据输入缓冲器BUF1和BUF2,分别用于读锁存器数据和读引脚数据的输入缓冲。
  
  (3)一个多路转接开关MUX,它的一个输入是锁存器的Q端,另一个输入是地址的高8位。
  
  (4)输出驱动电路,由场效应管(FET)和内部上拉电阻组成。
  
  2.工作过程分析
  
  (1) P2口用作地址总线  在内部控制信号作用下,MUX与“地址”接通。当“地址”线为O时,场效应管导通,P2口引脚输出0;当“地址”线为1时,场效应管截止,P2口引脚输出1。(2) P2口用作通用I/O口  在内部控制信号作用下,MUX与锁存器的Q端接通。
  
  CPU输出1时,Q=1,场效应管截止,P2.x引脚输出1;CPU输出0时,Q=0,场效应管导通,P2.x引脚输出0。
  
  输入时,分为“读锁存器”和“读引脚”两种方式。“读锁存器”时,Q端信号经输入缓冲器BUF1进入内部总线;“读引脚”时,先向锁存器写1,使场效应管截止,P2.x引脚上的电平经输入缓冲器BUF2进入内部总线。
  
  3.P2口的特点
  
  作为地址输出线使用时,P2口可以输出外部存储器的高8位地址,与PO口输出的低8位地址一起构成16位地址,可以寻址64 KB的地址空间。当P2口作为高8位地址输出口时,输出锁存器的内容保持不变。
  
  作为通用I/O口使用时,P2口为一个准双向口。功能与Pl口一样。
  
  一般情况下,P2口大多作为高8位地址总线口使用,这时就不能再作为通用I/O口使用。


      P3口
    
  由于AT89S51的引脚数目有限,因此在P3口电路中增加了引脚的第二功能。P3口的每一位都可以分别定义为第二输入功能或第二输出功能。P3口的字节地址为BOH,位地址为BOH~B7H。P3口某一位的位电路结构如图2-11所示结构
  
  1.位电路结构
  
  P3口某一位的电路包括:
  
  (1)一个数据输出锁存器,用于输出数据位的锁存。
  
  (2)3个三态数据输入缓冲器BUF1、BUF2和BUF3,分别用于读锁存器、读引脚数据和第二功能数据的输入缓冲。    
  
  (3)输出驱动电路,由与非门、场效应管(FET)和内部上拉电阻组成。
  
  2.工作过程分析
  
  (1) P3日用作第二输入/输出功能  当选择第二输出功能时,该位的锁存器需要置1,使与非门为开启状态。当第二输出为1时,场效应管截止,P3.x引脚输出为1;当第二输出为0时,场效应管导通,P3.x引脚输出为0。
  
  当选择第二输出功能时,该位的锁存器和第二输出功能端均应置1,保证场效应管截止,P3.x引脚的信息由输入缓冲器BUF3的输出获得。
  
  (2) P3口用作第一功能——通用I/O口  当P3口用作第一功能通用输出时,第二输出功能端应保持高电平,与非门为开启状态。CPU输出1时,Q=l,场效应管截止,P3.x引脚输出为l;CPU输出0时,Q=0,场效应管导通,P3.x引脚输出为0。
  
  当P3口用作第一功能通用输入时,P3.x位的输出锁存器和第二输出功能均应置1,场效应管截止,P3.x引脚信息通过输入BUF3和BUF2进入内部总线,完成“读引脚”操作。
  
  当P3口实现第一功能通用输入时,也可以执行“读锁存器”操作,此时Q端信息经过缓冲器BUF1进入内部总线。
  
  3.P3口的特点
  
  P3口内部有上拉电阻,不存在高阻抗输入状态,为准双向口。
  
  P3口作为第二功能的输出/输入或第一功能通用输入,均需将相应位的锁存器置1。实际应用中,由于复位后P3口锁存器自动置l,满足第二功能所需的条件,所以不需要任何设置工作,就可以进入第二功能操作。
  
  当某位不作为第二功能使用时,可作为第一功能通用I/O口使用。
  
  引脚输入部分有两个缓冲器,第二功能的输入信号取自缓冲器BUF3的输出端,第一功能的输入信号取自缓冲器BUF2的输出端。
  
  P3口的第二功能定义见表2-1。
  
  P1~P3口驱动LED发光二极管
  
  下面以常见的P1~P3口驱动LED发光二极管问题为例,来讨论P1~P3口与LED发光二极管的驱动连接问题。
  
  PO口与Pl、P2、P3口相比,PO口的驱动能力较大,每位可驱动8个LSTTL输入,而Pl、P2、P3口的每一位的驱动能力,只有PO口的一半。当PO口的某位为高电平时,可提供400 μA的电流;当PO口的某位为低电平(0.45 V)时,可提供3.2 mA的灌电流,如低电平允许提高,灌电流可相应加大。所以,任何一个口要想获得较大的驱动能力,只能用低电平输出。例如,使用单片机的并行口P1~P3直接驱动发光二极管,电路如图2-12所示。由于P1~P3口内部有30 kΩ左右的上拉电阻,如果高电平输出,则强行从Pl、P2和P3口输出的电流Id会造成单片机端口的损坏,如图2-12(a)所示。连接

如果端口引脚为低电平,能使电流Id从单片机的外部流入内部,则将大大增加流过的电流值,如图2-12(b)所示。所以,当P1~P3口驱动LED发光二极管时,应该采用低电平驱动。

关键字:AT89S51  并行  I  O口 引用地址:AT89S51的并行I/O口

上一篇:AT89S51的时钟电路与时序
下一篇:AT89S51存储器的结构

推荐阅读最新更新时间:2024-03-16 15:50

STM32 I2C从机发送数据
stm32 I2C主机发送功能在网上有很多例程,调试也很容易,从机发送数据的介绍很少,鉴于本人刚开始调试单片机程序不久,花了一整天也没调试通,最后在部门领导的帮助下,通过示波器及单步调试程序,查看寄存器状态值,终于实现了。下面主要介绍下从机发送数据注意事项。(附带例程) 1、相信使用I2C的都知道,从机是不能主动发送数据的,开始条件都是由主机生成。 2、根据参考文档,I2C默认是从机模式,只有在生成起始条件后,才会从从机模式自动切换到主机模式。所以作为从机模式使用时不能生成起始条件。 3、附图1,为从机发送器的传送时序图,截图于参考手册,图中说明部分讲述了怎样能清除事件,这点很重要,每次事件是都要去清除才可以去检测下一
[单片机]
STM32 <font color='red'>I</font>2C从机发送数据
STM32硬件I2C问题
1.CUBEMX生成代码后I2C总线初始化一直出现 I2C_FLAG_BUSE 1.1 环境: 1.2 硬件I2C配置为默认,管脚如下 1.3 时钟等其他 配置完成后生成工程 1.4 添加代码 在i2c.c文件中的的void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)函数中添加如下代码 __I2C2_FORCE_RESET(); __I2C2_RELEASE_RESET(); 实际如下图 这里采用读取板载的MPU6050的设备地址来确认硬件I2C是否工作正常。 主函数里main.c添加程序如下: /* USER CODE BEGIN PV
[单片机]
STM32硬件<font color='red'>I</font>2C问题
I2C总线协议的一些理解
1、无论读与写,都是在时钟线为低时把数据送到数据总线上,在高时采样数据,把数据锁存到内部,所以读之前先把时钟线拉低,做好准备(数据线为高表示释放数据线),为接下来读数据做好准备。也就是时钟信号为低时,数据线上的高低电平才允许变化,时钟信号为高时,数据总线上的数据必须保持稳定。   2、起始信号产生后,总线为被占用状态(SDA拉低);终止信号产生后,总线为空闲状态(SCL被释放了)。   3、接收器件收到一个完整的数据字节后有可能需要完成一些其它工作,如处理中断,可能无法立刻接收下一字节,这时从机将SCL拉成低电平,从而使主机处于等待状态。直到从机准备好接收下一字节,再释放SCL线使之为高,从而数据传送可继续进行。数据线上
[嵌入式]
I2C总线学习与EEPROM
一。I2C总线简介 二。 I2C总线的初步认识 三。I2C总线时序 I2C通信分为起始信号Start,数据传输部分(可以是多个字节),停止信号Stop I2C总线数据传输一次为9位,8个数据位和一位应答位ACK。数据从高位到低位传输。 起始信号:SCL 为高电平期间,SDA 由高电平向低电平变化产生一个下降沿,表示起始信号。 数据传输:I2C 通信是高位在前,低位在后。 要求当 SCL 在低电平的时候,SDA 允许变化,也就是说,发送方必须先保持 SCL 是低电平,才可以 改变数据线 SDA。8 位数据位后边跟着的是一位应答位。 停止信号:SCL 为高电平期间,SDA 由低电
[单片机]
<font color='red'>I</font>2C总线学习与EEPROM
ARM-Linux s3c2440 之I2C分析
内核版本linux-2.6.30.4 I2C在Linux中是Bus下的一个子系统. 它由客户驱动(client driver),i2c-core核心,i2c适配器驱动(adapter driver) ,算法aglorithm组成。s3c2440中有两个i2c现适配器.作为platform_device设备在系统启动先时被注册和添加。下面我们分析i2c(设备,驱动,总线)的实现过程. //填充设备资源 //struct resource结构体描述了挂接在cpu总线上的设备实体资源 //.start:i2c寄存器起始地址; .end:i2c寄存器结束地址; .flag:描述设备实体的共性和特性标志 static struct
[单片机]
SHARC并行系统软件设计方法
  随着数字信号处理(Digital Signal ProcESSor,DSP)技术的发展,DSP已被广泛应用于雷达、通信等领域。虽然DSP经历了几代的发展,运算速度和能力都有了很大的提高,但在很多情况下,单片DSP已经不能满足实时处理的要求,必须寻求多片DSP并行处理的方案。   从系统结构出发可以将并行系统分为共享存储器并行系统和分布存储器并行系统。AD公司推出的SHARC系列DSP芯片同时支持这二种并行处理器结构。通常,将AD公司的一系列双位高性能浮点DSP称为SHARC(Super Harvard Architecture)。对于共享存储器系统,通过SHARC间的外部共享总线实现。对于分布存储器系统,通过2个SHARC间的
[嵌入式]
SHARC<font color='red'>并行</font>系统软件设计方法
STM32-(20):I2C通信(实验:读写EEPROM)
硬件电路连接 底板上的 I2C 接口 A0、A1是用来确定器件的地址的。 排针上的引脚图: 核心板上的引脚图: 通过I2C总线实现对EEPROM的读写操作的准备工作: 1、掌握芯片(目标对象)特性,才能对其正确的读和写。 2、掌握 I2C 通信,读写过程需要用到。 3、Cortex的一些操作,编程方法。 实验内容:通过I2C总线实现对EEPROM的读写操作 main.c #include stm32f10x_lib.h #include IIC.h /*------------函数的声明---------------*/ void Delay_MS(u16 dly); void RCC_Configurati
[单片机]
STM32-(20):<font color='red'>I</font>2C通信(实验:读写EEPROM)
大神教你快速上手:标准80C51单片机模拟I2C总线的主机程序
I2C总线协议程序 在做程序是我在网上找的是周立功的程序,感觉还不错顺便转载;在使用的过程中一定要注意时序、时间的问题。 “i2c.h文件” //I2C总线综合发送函数,向从机发送多个字节的数据 I2C读写EEPROM流程图 bit I2C_Puts( unsigned char SlaveAddr, unsigned int SubAddr, unsigned char SubMod, char *dat, unsigned int Size ); //I2C总线综合接收函数,从从机接收多个字节的数据 bit I2C_Gets ( unsigned char SlaveAddr, unsigned int SubAddr
[单片机]
大神教你快速上手:标准80C51单片机模拟<font color='red'>I</font>2C总线的主机程序
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved