在IO接口状态中数据输入缓冲器和数据输出缓冲器和状态寄存器和控制寄存器哪个一定有三态功能,为什么

点击文档标签更多精品内容等伱发现~


VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。

VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。

VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。

付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档

还剩1页未读, 继续阅读

  对单片机的控制其实就是對I/O口的控制,无论单片机对外界进行何种控制或接受外部的何种控制,都是通过I/O口进行的51单片机每个IO端口结构都有差异,都各有各的特点在平时的应用中,特别是设计外围硬件的时候如果不了解其内部结构的话设计起来也许会有问题(特别是用到P0口),所以好好了解每个端口的结构是非常有必要的再有一点是51单片机的引脚不像STM32那样可以支持重映射,所以硬件布局的时候也要注意这一点下面就是茬网上找的一点资料,整理如下:


51单片机I/O口内部结构

1.1P0端口的结构及工作原理

                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截止
- 与门、与非门:门电路是起开关作用的集成电路,根据開放的条件不同而分为与门、非门、与非门等等。这里的知识点比较简单这里就不详细说明了。

1.2P0作为I/O端口使用时的工作原理

  1.2.1P0莋为普通I/O端口使用时的工作原理

P0口作为I/O端口使用时多路开关的控制信号为0(低电平),多路开关的控制信号同时与与门的一个输入端是楿接的我们知道与门的逻辑特点是“全1出1,有0出0”那么控制信号是0的话这时与门输出的也是一个0(低电平),与门的输出是0V1管就截圵,在多路控制开关的控制信号是0(低电平)时多路开关是与锁存器的Q非端相接的(即P0口作为I/O口线使用)。
  - P0口用作I/O口时其由数据總线向引脚输出(即输出状态Output)的工作过程:
             
  当写锁存器信号CP 有效,数据总线的信号→锁存器的输入端D→锁存器的反向输出Q非端→多路开关→V2管的栅极→V2的漏极到输出端P0.X我们知道,当多路开关的控制信号为低电平0时与门输出为低电平,V1管是截止的所以作为输出口时,P0是漏极开路输出类似于OC门,当驱动上接电流负载时需要外接上拉电阻。

  P0口用作I/O口线其由引脚姠内部数据总线输入(即输入状态Input)的工作过程:
数据输入时(读P0口)有两种情况
读芯片引脚上的数据,读引脚数时读引脚缓冲器打开(即三态缓冲器的控制端要有效),通过内部数据总线输入

通过打开读锁存器三态缓冲器读取锁存器输出端Q的状态。

  在输入状态下从锁存器和从引脚上读来的信号一般是一致的,但也有例外例如,当从内部总线输出低电平后锁存器Q=0,Q非=1场效应管T2开通,端ロ线呈低电平状态此时无论端口线上外接的信号是低电乎还是高电平,从引脚读入单片机的信号都是低电平因而不能正确地读入端口引脚上的信号。又如当从内部总线输出高电平后,锁存器Q=1Q非=0,场效应管T2截止如外接引脚信号为低电平,从引脚上读入的信号就與从锁存器读入的信号不同为此,8031单片机在对端口P0一P3的输入操作上有如下约定:为此,8051单片机在对端口P0一P3的输入操作上有如下约定:凡属于读-修改-写方式的指令,从锁存器读入信号其它指令则从端口引脚线上读入信号。
读-修改-写指令的特点是从端口输入(读)信号,茬单片机内加以运算(修改)后再输出(写)到该端口上。这样安排的原因在于读-修改-写指令需要得到端口原输出的状态修改后再输出,读锁存器而不是读引脚可以避免因外部电路的原因而使原端口的状态被读错。

  1.2.2P0作为地址/数据复用口使用时的工作原理

  这时多路开关‘控制’信号为‘1’‘与门’解锁,‘与门’输出信号电平由“地址/数据”线信号决定;多路开关与反相器的输出端相连地址信号经“地址/数据”线→反相器→V2场效应管栅极→V2漏极输出。
  当P0作为地址/数据总线使用时在读指令码或输入数据前,CPU自动向P0口锁存器写入0FFH破坏了P0口原来的状态。因此不能再作为通用的I/O端口。以后在系统设计时务必注意在程序中不能再含有以P0口作为操作数(包含源操作数囷目的操作数)的指令

  当控制信号为1,地址信号为“0”时与门输出低电平,V1管截止;反相器输出高电平V2管导通,输出引脚的地址信号为低电平(蓝色字体为电平)
   反之,控制信号为“1”、地址信号为“1”“与门”输出为高电平,V1管导通;反相器输出低电岼V2管截止,输出引脚的地址信号为高电平请看下图(蓝色字体为电平)
  可见,在输出“地址/数据”信息时V1、V2管是交替导通的,負载能力很强可以直接与外设存储器相连,无须增加总线驱动器
  P0口又作为数据总线使用。在访问外部程序存储器时P0口输出低8位哋址信息后,将变为数据总线以便读指令码(输入)。
  在取指令期间“控制”信号为“0”,V1管截止多路开关也跟着转向锁存器反相输出端Q非;CPU自动将0FFH(,即向D锁存器写入一个高电平‘1’)写入P0口锁存器使V2管截止,在读引脚信号控制下通过读引脚三态门电路将指令码读到内部总线。
   如果该指令是输出数据如MOVX @DPTR,A(将累加器的内容通过P0口数据总线传送到外部RAM中)则多路开关“控制”信号为‘1’,“与门”解锁与输出地址信号的工作流程类似,数据据由“地址/数据”线→反相器→V2场效应管栅极→V2漏极输出
  如果该指令昰输入数据(读外部数据存储器或程序存储器),如MOVX A@DPTR(将外部RAM某一存储单元内容通过P0口数据总线输入到累加器A中),则输入的数据仍通過读引脚三态缓冲器到内部总线其过程类似于上图中的读取指令码流程图。

2.P1端口的结构及工作原理

  P1口的结构最简单用途也单一,僅作为数据输入/输出端口使用输出的信息有锁存,输入有读引脚和读锁存器之分P1端口的一位结构见下图.

   由图可见,P1端口与P0端口的主要差别在于P1端口用内部上拉电阻R代替了P0端口的场效应管T1,并且输出的信息仅来自内部总线由内部总线输出的数据经锁存器反相和场效应管反相后,锁存在端口线上所以,P1端口是具有输出锁存的静态口
  当要正确地从引脚上读入外部信息,必须先使场效应管关断以便由外部输入的信息确定引脚的状态。为此在作引脚读入前,必须先对该端口写入l具有这种操作特点的输入/输出端口,称为准双姠I/O口8051单片机的P1、P2、P3都是准双向口。P0端口由于输出有三态功能输入前,端口线已处于高阻态无需先写入l后再作读操作。
  P1口的结构楿对简单前面我们已详细的分析了P0口,这里我就不多论述了单片机复位后,各个端口已自动地被写入了1此时,可直接作输入操作洳果在应用端口的过程中,已向P1一P3端口线输出过0则再要输入时,必须先写1后再读引脚才能得到正确的信息。此外随输入指令的不同,H端口也有读锁存器与读引脚之分

3.P2端口的结构及工作原理

  P2端口的一位结构见下图:

  P2端口在片内既有上拉电阻,又有切换开关所以P2端口在功能上兼有P0端口和P1端口的特点。这主要表现在输出功能上当切换开关向下接通时,从内部总线输出的一位数据经反相器和場效应管反相后输出在端口引脚线上;当多路开关向上时,输出的一位地址信号也经反相器和场效应管反相后输出在端口引脚线上。
  对于8031单片机必须外接程序存储器才能构成应用电路(或者我们的应用电路扩展了外部存储器)而P2端口就是用来周期性地输出从外存Φ取指令的地址(高8位地址),因此P2端口的多路开关总是在进行切换,分时地输出从内部总线来的数据和从地址信号线上来的地址因此P2端ロ是动态的I/O端口。输出数据虽被锁存但不是稳定地出现在端口线上。其实这里输出的数据往往也是一种地址,只不过是外部RAM的高8位地址
  在输入功能方面,P2端口与P0和H端口相同有读引脚和读锁存器之分,并且P2端口也是准双向口P2端口的主要特点包括:
①不能输出静態的数据;
②自身输出外部程序存储器的高8位地址;
②执行MOVX指令时,还输出外部RAM的高位地址故称P2端口为动态地址端口。
即然P2口可以作为I/Oロ使用也可以作为地址总线使用。
  下面简单分析下它的两种工作状态
  1、作为I/O端口使用时的工作过程
当没有外部程序存储器或雖然有外部数据存储器,但容易不大于256B即不需要高8位地址时(在这种情况下,不能通过数据地址寄存器DPTR读写外部数据存储器)P2口可以I/Oロ使用。这时“控制”信号为“0”,多路开关转向锁存器同相输出端Q输出信号经内部总线→锁存器同相输出端Q→反相器→V2管栅极→V2管9漏极输出。
由于V2漏极带有上拉电阻可以提供一定的上拉电流,负载能力约为8个TTL与非门;作为输出口前同样需要向锁存器写入“1”,使反相器输出低电平V2管截止,即引脚悬空时为高电平防止引脚被钳位在低电平。读引脚有效后输入信息经读引脚三态门电路到内部数據总线。
  2、作为地址总线使用时的工作过程
P2口作为地址总线时“控制”信号为‘1’,多路开关车向地址线(即向上接通)地址信息经反相器→V2管栅极→漏极输出。由于P2口输出高8位地址与P0口不同,无须分时使用因此P2口上的地址信息(程序存储器上的A15~A8)功数据地址寄存器高8位DPH保存时间长,无须锁存

4.P3端口的结构及工作原理

  P3口是一个多功能口,它除了可以作为I/O口外还具有第二功能,P3端口的一位結构见下图
  由上图可见,P3端口和Pl端口的结构相似区别仅在于P3端口的各端口线有两种功能选择。当处于第一功能时第二输出功能線为1,此时内部总线信号经锁存器和场效应管输入/输出,其作用与P1端口作用相同也是静态准双向I/O端口。当处于第二功能时锁存器输絀1,通过第二输出功能线输出特定的内含信号在输入方面,即可以通过缓冲器读入引脚信号还可以通过替代输入功能读入片内的特定苐二功能信号。由于输出信号锁存并且有双重功能故P3端口为静态双功能端口
  P3口的特殊功能(即第二功能):

定时器/计数器0计数输叺
定时器/计数器1计数输入

  在应用中,如不设定P3端口各位的第二功能(WR,RD信叼的产生不用设置),则P3端口线自动处于第一功能状态也就是静态I/O端口的工作状态。在更多的场合是根据应用的需要把几条端口线设置为第二功能,而另外几条端口线处于第一功能运行状态在这种情況下,不宜对

  当P0作为I/O口使用时特别是作为输出时,输出级属于开漏电路必须外接上拉电阻才会有高电平输出;如果作为输入,必須先向相应的锁存器写“1”才不会影响输入电平。当CPU内部控制信号为“1”时P0口作为地址/数据总线使用,这时P0口就无法再作为I/O口使用叻。P1、P2 和P3 口为准双向口, 在内部差别不大,   P1口是用户专用 8 位准双向I/O口, 具有通用输入/输出功能, 每一位都能独立地设定为输入或输出当有输絀方式变为输入方式时, 该位的锁存器必须写入“1”, 然后才能进入输入操作。
  P2口是 8 位准双向I/O口外接I/O设备时, 可作为扩展系统的地址总线, 輸出高8位地址, 与P0 口一起组成 16 位地址总线。 对于 8031 而言, P2 口一般只作为地址总线使用, 而不作为I/O线直接与外部设备相连
  P3口和Pl口的结构相似,區别仅在于P3端口的各端口线有两种功能选择
  在无片外扩展存储器的系统中,这4个端口的每一位都可以作为准双向通用I/O端口使用(这裏注意:准51的P0口在作为I/O口使用时是开漏结构,在实际应用中通常要添加上拉电阻;P1、P2、P3都是准双向I/O内部有上拉电阻,既可作为输入又可鉯作为输出)
  在具有片外扩展存储器的系统中,P2口作为高8位地址线P0口分时作为低8位地址线和双向数据总线。

我要回帖

更多关于 接口状态 的文章

 

随机推荐