现在的位置: 首页 > 综合 > 正文

准双向口和双向口的区别

2013年03月12日 ⁄ 综合 ⁄ 共 1471字 ⁄ 字号 评论关闭
转自:http://chenlxlcm.blog.163.com/blog/static/257510212010914105037477/

1:准双向一般只能用于数字输入输出,输入时为弱上拉状态(约50K上拉),端口只有两种状态:高或低
2:双向除用于数字输入输出外还可用于模拟输入输出,模拟输入时端口通过方向控制设置成为高阻输入状态。双向端口有三种状态:高、低或高阻。
3:初始状态和复位状态下准双向口为1,双向口为高阻状态.有带些比较器的单片机,比较器的输入端只能做在双向口,不能做在准双向口.所以软件设计的第一步就是对 I/O 口的设置.

标准51内核单片机的IO口,P0口则为双向三态输入输出口,P1\P2\P3是准双向IO口,没有方向控制,做输入时需要先往端口数据寄存器写1才行(也可看作此时为输出,端口输出高电平)。
博主:感觉看了还是很清楚的。
转自:http://bbs.ednchina.com/BLOG_ARTICLE_204660.HTM

 在最初的51系列单片机中

P0口:双向8位三态I/O口

P1口:准双向8位I/O口

P2口:准双向8位I/O口

P3口:准双向8位I/O口

这里特别要主要准双向与双向三态I/O的区别:

P1口,P2口,P3口是3个8位准双向的I/O口,各口线在片内均有固定的上拉电阻,当这三个准双向I/O口作输入口使用时,要想该口先写1,另外准双向I/O口无高阻的“浮空”状态。

而双向口P0口线内无固定上拉电阻,由两个MOS管串接,既可开漏输出(开漏输出,本博客有解释)有可处于高阻的“浮空”状态,故称为双向三态I/O口。

"准"就是"基本上"的意思.
    P0口是双向指的是它被用作地址/数据端口时,只有在这个时候,P0口才处于两个开关管推挽状态,当两个开关管都关闭时,才会出现高阻状态.
当P0口用于一般I/O口时,内部接Vcc的那个开关管是与引脚(端口)脱离联系的,这个时候,只有拉地的那个开关管其作用,P0口作为输出,是必须外接上拉电阻的,不然就无法输出高电平;如果P0口作为输入,则必须先对端口写1,使拉地的开关管断开,这个时候,如果不接上拉电阻,则是高阻状态,就是一个双向口,如果接上拉电阻,则本身输出高电平,对输入信号的逻辑无影响(注意是对逻辑无影响,对实际参数有无影响我不确定,但是我认为是有的).
双向与准双向,根本原则是双向包含了高阻这个状态,而不在于是否需要先写1或者不写,P1~P3口因为有内部上拉电阻,因此无论如何不是双向;P0口内部无上拉电阻,在处于数据/地址功能时,自动完成3态的转换,是双向,处于一般I/O口时,如果不接外部上拉,而且先向端口写了1,那么就处于高阻状态,此时,它也是一个人为的双向口,这与它处于地址/数据功能时的自动双向有区别,以及与P1~P3处于输入时输出锁存器为1是有区别的。

博主:这个写的也不错。。。。。。



 简单说:
(1) P0口无固定上拉电阻。P1,P2,P3有。
(2) 就是P0口作为输入输出口时,为了能让内部1能正确输出,要接上拉电阻(如果不接的话,内部D=1的时候,Q非=0,V1被截止,V1,V2都处于截止状态,不能正确反映1,所以需要上拉电阻。),在读取输入的时候,因为此时P0口是作为一个准双向口,所以得先向外写1,不然的话,如果锁存器曾经锁存过0,则V1被导通,PO.x被钳制在低电平,不能正确反映输入。
(3)P0口作为地址/数据口的时候,由于访问外部存储器期间,CPU会自动向PO口的锁存器写入0FFH,对用户而言,PO口此时才是真正的三态双向口。
      

抱歉!评论已关闭.