您好,欢迎来到捷配电子市场网 登录 | 免费注册

8051单片机端口结构—P0口

出处:eefocus 发布于:2017-12-23 | 247 次阅读

  8051单片机有四个8位并行I/O端口,记作P0,P1,P2和P3.每个端口都是8位准双向口,共占有32条引脚。每一条I/O线都 可以独立的用作输入或输出。

  每个端口都包括锁存器,一个输出驱动器,作输出时数据可以锁存,作输入时数据可以缓冲。在无片外扩展存储器的系统中,这四个端口的每一位都可以作为准双向通用I/O端口使用。


  在具有片外扩展存储器系统中,P2口送出高8位地址,为双向总线,分别送出低8位地址和数据输入/输出。8051单片机四个I/O端口的电路设计非常巧妙,熟悉I/O端口逻辑电路,不但有利于正确合理地使用端口,而且会对设计单片机外围逻辑电路有所启发。

  P0口的每一位由一个输出锁存器 ,二个三态输入,输出驱动电路,控制电路与门,器,MUX控制构成。当CPU使控制线C=0时,数控开关MUX向下,P0口为通用I/O口;当C=1时,开关拔向反相器的输出,端口分时为地址/数据总线使用。

  我们先来看P0口作为I/O口使用的情况:

  当8051组成的系统无外扩存储器,CPU对片内存储器和I/O口读写时 。执行MOV指令,或EA=1的条件下执行MOVC指令时,由硬件自动使控制线C=0,开关MUX倒向下,它输出级T2与锁存器的Q反端接通;同时,因与门输出为0,输出级中的上拉场效应管T1处于截止状态,因此,输出级是漏极开路电路。这时P0口可作一般I/O口用。

  一般I/O口又有输入和输出两种操作,我们先来看看P0用作输出口的情况。当CPU执行输出指令时,写入脉冲加在D锁存器上,这样与内部总线相连的数据取 反相后就出现在Q上,若D端数据为0,则反端数据为1,场效应管T2导通,输出0.此时引脚被拉成高,这样数据总线上的信号1被准确的送出到引脚上 。

  8051有几条输出指令功能特别强,属于“读-改-写”指令。例如,执行一条ANL P0,A。指令的过程是:不直接读引脚上的数据,而是读P0口D端锁存器中的数据,当“读锁存器”信号有效,三态缓冲器1导通,Q端数据内部总线和累加器A中的数据进行“逻辑与”操作,结果送回P0端口锁存器。此时,锁存器的内部和引脚是一致的。

  下面分析P0口作输入口的情况,缓冲器2用于CPU直接读口数据。当执行一条由端口输入的指令时,“读引脚”脉冲把该三态缓冲器打开,这样,端口上的数据经过缓冲器2读入到内部总线。这类操作由数据传送指令实现。在读入端口引脚数据时,由于输出驱动场效应管T2并接在引脚上,如果T2导通就会将输入的高电平拉成低电平,以至于产生误读。所以,在端口进行输入操作前,应先向端口锁存器写入“1”,也就是使锁存器Q反=0,因为控制线C=0,因此T1和T2截止,引脚处于悬浮状态,可作高输入。

  下面我们看看控制线C=0时,P0口作为地址/数据总线使用的情况。当8031外扩存储器组成系统,CPU对外存储器读写,CPU片外存储器读写,即执行MOVX指令,或在EA=0的条件下执行MOVC指令时,由内部硬件自动使控制线C=1,开关MUX拨向反相器3输出端。这时P0可作地址/数据总线分别使用,并且又分为两种情况。

  1、P0口可作输出地址/数据总线。在扩展系统中,一种是以P0口引脚输入低8位地址或数据信息。

  2、另一种情况是有P0口输入数据。这种情况是在“读引脚”信号有效时打开输入缓冲器使数据进入内部总线。

  综上所述,P0即可作一般I/O端口使用, 也可作地址/数据总线使用。


0次

版权与免责声明

凡本网注明“出处:捷配电子市场网”的所有作品,版权均属于捷配电子市场网,转载请必须注明捷配电子市场网,http://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。