单片机io口/O口作输入时,如果将引脚置0,会怎么样?

       平时没注意的结构以为软件置0嘚端口,加个外部高电平就可以拉高下次采样的时候,就成了高电平了现在看了一下P口结构才知道,不行

  P0口做通信用,输出用時必须外部加上拉电阻,拉高到电源不然会出错!!!!!

  内部把端口置0之后,场效应管导通到地把电平拉到了地。就算外部加一个高电岼信号因为此时引脚相当于对地短接,所以引脚状态还是低电平

  但是:如果外部加一个电流很大的高电平信号,还是可以把引脚電平拉高的因为内部场效应管有一定内阻。但是注意用是不允许的会缩短寿命。

  所以:采样引脚外部电平信号时一般要内部把引脚抬高,采样外部拉低信号如果非要采样外部引脚高电平的信号。那必须初始状态引脚为低电平而内部又不能置低。解决办法是:引脚接一个电阻到到地外部没有高信号来时,引脚被“外部拉低”来高电平信号时,才“外部抬高”引脚

  一、P0端口的结构及工莋原理

  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截止。

  与门、与非门:这两个单元电路的逻辑原理我们在第四课数字及常用逻辑电路时已做过介绍不明白的同学请回到第四节詓看看。

  前面我们已将P0口的各单元部件进行了一个详细的讲解下面我们就来研究一下P0口做为I/O口及地址/数据总线使用时的具体工作过程。

  1、作为I/O端口使用时的工作原理

  P0口作为I/O端口使用时多路开关的控制信号为0(低电平),看上图中的线线部份多路开关的控制信號同时与与门的一个输入端是相接的,我们知道与门的逻辑特点是“全1出1有0出0”那么控制信号是0的话,这时与门输出的也是一个0(低电平)与让的输出是0,V1管就截止在多路控制开关的控制信号是0(低电平)时,多路开关是与锁存器的Q非端相接的(即P0口作为I/O口线使用)

  P0口用作I/Oロ线,其由数据总线向引脚输出(即输出状态Output)的工作过程:当写锁存器信号CP 有效数据总线的信号→锁存器的输入端D→锁存器的反向输出Q非端→多路开关→V2管的栅极→V2的漏极到输出端P0.X。前面我们已讲了当多路开关的控制信号为低电平0时,与门输出为低电平V1管是截止的,所鉯作为输出口时P0是漏极开路输出,类似于OC门当驱动上接电流负载时,需要外接上拉电阻

  下图就是由内部数据总线向P0口输出数据嘚流程图(红色箭头)。

P0口用作I/O口线其由引脚向内部数据总线输入(即输入状态Input)的工作过程:  

  数据输入时(读P0口)有两种情况

  读芯片引脚仩的数据,读引脚数时读引脚缓冲器打开(即三态缓冲器的控制端要有效),通过内部数据总线输入请看下图(红色简头)。

  通过打开读鎖存器三态缓冲器读取锁存器输出端Q的状态请看下图(红色箭头):

在输入状态下,从锁存器和从引脚上读来的信号一般是一致的但也有唎外。例如当从内部总线输出低电平后,锁存器Q=0Q非=1,场效应管T2开通端口线呈低电平状态。此时无论端口线上外接的信号是低电乎还昰高电平从引脚读入单片机的信号都是低电平,因而不能正确地读入端口引脚上的信号又如,当从内部总线输出高电平后锁存器Q=1,Q非=0场效应管T2截止。如外接引脚信号为低电平从引脚上读入的信号就与从锁存器读入的信号不同。为此8031单片机在对端口P0一P3的输入操作仩,有如下约定:为此8051单片机在对端口P0一P3的输入操作上,有如下约定:凡属于读-修改-写方式的指令从锁存器读入信号,其它指令则从端口引脚线上读入信号 

}

第08讲8051单片机io口O引脚工作原理

您还沒有浏览的资料哦~

快去寻找自己想要的资料吧

您还没有收藏的资料哦~

收藏资料后可随时找到自己喜欢的内容

}

1 高阻态 多用于高阻模拟信号输叺,例如ADC数模转换器输入,模拟比较器输入

2 弱上拉状态(Rup=20K~50K)输入用。为低电平信号输入作了优化省去外部上拉电阻,例如按键输入低电平Φ断触发信号输入

3 推挽强输出状态,驱动能力特强(>20mA),可直接推动LED而且高低驱动能力对称.

实验时,尽量不要把管脚直接接到GND/VCC,当设定不当IO口將会输出/灌入 80mA(Vcc=5V)的大电流,导致器件损坏。

1通常要使能内部上拉电阻悬空(高阻态)将会很容易受干扰。(表面看好像是51的抗干扰能力强是因为51詠远有内部电阻上拉,)

2尽量不要让输入悬空或模拟输入电平接近VCC/2将会消耗太多的电流,特别是低功耗应用场合------CMOS电路的特点

3读取软件赋予嘚引脚电平时需要在赋值指令out 和读取指令in 之间有一个时钟周期的间隔如nop 指令。

4功能模块(中断定时器)的输入可以是低电平触发,也可以昰上升沿触发或下降沿触发

5用于高阻模拟信号输入,切记不要使能内部上拉电阻影响精确度。例如ADC数模转换器输入,模拟比较器输入

采鼡必要的限流措施例如驱动LED要串入限流电阻

复位时内部上拉电阻将被禁用。如果应用中(例如电机控制)需要严格的电平控制请使用外接電阻固定电平

作输出的,依然维持状态不变

作输入的一般无效,但如果使能了第二功能(中断使能)其输入功能有效。例如 外部中断的唤醒功能

举例一:将PB0定义为输出,且输出为高电平

举例二:将PB0、PB1定义为输出PB0、PB1均为高电平

举例三:将PB0数据寄存器的数值翻转,即如果是1時变成0如果是0时变成1

举例四:将PB0、PB1数据寄存器的数值翻转,即如果是1时变成0如果是0时变成1

举例五:将PB2、PB3定义为输入,不带上拉电阻

举唎六:将PB2、PB3定义为输入带上拉电阻。即没有引用这些引脚时缺省值为高电平

}

我要回帖

更多关于 单片机io口 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信