什么是准双向口,双向口?
来源:互联网 发布:如何恢复视力知乎 编辑:程序博客网 时间:2024/04/30 09:38
C51的说明书上说:”Because Ports 1, 2, and 3 have fixed internal pullups, they are sometimes called quasi-bidirectional
ports. When configured as inputs, they pull high and source current (IIL) when externally pulled low.
hand, is considered truly bidirectional, because it floats when configured as an input. "
翻译是:因为P1、2、3有固定的内部上拉电阻,所以有时称它们为准双向口。当用做输入时被拉高,低则要靠外部电路拉低。而P0则是真双向口,因为作为输入时它是悬浮的(因为没有上拉电阻)。
不是很清晰易懂.
我很纳闷,这么重要的一个问题,为什么教科书、老师都没有好好的讲清楚,包括我自己经历的也是这样.我也是一直被这个问题捆饶了很久
.
我说说我的看法:
像上面说的一样,"准"就是"基本上"的意思.
其实重点在P0口.
P0口是双向指的是它被用作地址/数据端口时,只有在这个时候,P0口才处于两个开关管推挽状态,当两个开关管都关闭时,才会出现高阻状态.
当P0口用于一般I/O口时,内部接Vcc的那个开关管是与引脚(端口)脱离联系的,这个时候,只有拉地的那个开关管起作用,P0口作为输出,是必须外接上拉电阻的,不然就无法输出高电平;如果P0口作为输入,则必须先对端口写1,使拉地的开关管断开,这个时候,如果不接上拉电阻,则是高阻状态,就是一个双向口,如果接上拉电阻,则本身输出高电平,对输入信号的逻辑无影响(注意是对逻辑无影响,对实际参数有无影响我不确定,但是我认为是有的).
双向与准双向,根本原则是双向包含了高阻这个状态,而不在于是否需要先写1或者不写,P1~P3口因为有内部上拉电阻,因此无论如何不是双向;P0口内部无上拉电阻,在处于数据/地址功能时,自动完成3态的转换,是双向,处于一般I/O口时,如果不接外部上拉,而且先向端口写了1,那么就处于高阻状态,此时,它也是一个人为的双向口,这与它处于地址/数据功能时的自动双向有区别,以及与P1~P3处于输入时输出锁存器为1是有区别的
单片机的P0~P3端口进行输入时为什么要设置为1?
给锁存器写1,那么锁存器的反向端就输出0,那么和它相接的MOS管也就在截状态,也就是呈高阻态,这样P0口上数据就会从读引脚的三态缓冲器上正确的输入,如果不写1,那么锁存器上次锁存的可能为0,那么反向端有可能出现1,这样和反向端相接的MOS管就倒通,也就是直接拉到地,那么不管你P0口上输入什么信号都会拉成低电平,输入就错了.
为什么我输入没设置1,还是正确的呢?
一般情况下,单片机复位后P0-P3端口默认值为1,如果仅作为输入,中途不改变,无需我们先设置1
双向口与准双向口的区别主要是:准双向口I/O口操作时做数据输入时需要对其置1, 是扯淡!!!!
- 什么是准双向口,双向口?
- 什么是准双向口,双向口?
- 双向口 与 准双向口 区别
- 单片机双向口与准双向口
- 单片机双向口与准双向口
- 准双向口
- 准双向口和双向口的区别
- 双向口和准双向口操作的不同!
- 单片机准双向口IO详解
- FPGA学习之inout双向口
- 图像配准----双向匹配
- 集电极开路,漏极开路,推挽,上拉电阻,弱上拉,三态门,准双向口
- 双向排序
- 双向链表实列
- 双向容器
- 双向冒泡
- 双向可控硅
- 双向排序
- Android WIFI源码思路(对文章进行一些修改,以适于Android4.0版本)
- 怎么停止长高
- Android系统init.rc分析
- 为什么网站在百度排名会下降呢?
- java开发环境搭建
- 什么是准双向口,双向口?
- 黑马程序员------java基础加强中反射
- 创建支持Java Servlet3.0的Maven Webapp项目
- Java学习笔记(十六)
- 深入探索Windows 7下User Account Control
- 无聊写排序之 ---- 归并排序(MergeSort) 非递归实现
- 如何异步调用一个java方法,
- SIFT特征提取
- hdu4606 Occupy Citie 简单计算几何,最小路径覆盖