[RISC-V MCU 应用开发]

单片机IO口详解(转载)

[复制链接]
1425|1
手机看帖
扫描二维码
随时随地手机跟帖
928919540|  楼主 | 2022-1-25 13:35 | 显示全部楼层 |阅读模式
AC, AD, IO, AI, 89c51
本帖最后由 928919540 于 2022-1-25 13:37 编辑

一、三态

单片机IO的三态是指:高电平(1)、低电平(0)、高组态(Z)。


二、高阻态

高阻i是一种电路状态.既不是高电平,也不是低电平,以高阻态对下级电路输出,下级电路什么影响也没有.高阻态的IO电平高低,随下级电路变化而变,下级为高,它就是高,下级是低它就是低.可以看成是悬空状态.

所以,高阻状态的作用就是你不会影响其他,这在总线通讯中特别重要

像通用的51单片机,IO口都有这样的标注(下图是CMS5880的IO引脚配置截图)
2358861ef8c1a13cad.png

当你设置成输入时,此时引脚状态就是高组态。有些单片机规格书翻译不太准确,

应该要翻译成:0=  引脚被配置为输入(高阻抗)
翻译成“高阻抗”应该是比较准确的,
翻译成“三态”容易引起误解


三、IO模式的内部结构

现在我们拿我们入门学得at89c51来分析其引脚端口结构。

1.P0口双向八位三态IO

P0口大家肯定不陌生,想当初第一次画最小系统板,在P0口接上拉电阻,从而点灯点不亮。那为什P0口要加上拉电阻呢?
4899361ef8c55c67a4.png

这是P0口内部结构图,首先P0口的上面那个三极管D0是在进扩展存储器或扩展总线时使用MOVX指令时才会控制它的导通和截止,在不用此指令时都是截止的。也就是我们平常使用如:P0_1=0 P0_1=1这些语句时控制的都是下面那个三极管D1。

当P0=0时,等效图是中间的,三极管D1导通,P0点的电位为0。

而当P0=1时,等效图是右边的,三极管D1截止,而上面的三极管D0始终是截止的,这样P0点就等效于悬空了,所以要外接上拉电阻,才能有高电平。

所以,当你置1时,由于内部没有上拉电阻,所以为高组态,不能正常输出高、低(高组态输出的电平不确定)


2.P1口准双向IO

内带上拉电阻
9417561ef8c73bc868.png

当P1=0时,三极管D导通,见中间的等效图

当发出P1=1的指令后,三极管D截止,见右边等效

那为什么叫准双向IO,因为当IO口要设置为输入时,需要先想该端口写“1”,单片机才能正确读取外部的高低电平。

也就是要现有个准备过程,所以叫“准双向3”.P2 P3也是。

双向口与准双向口的区别主要是:准双向口I/O口操作时做数据输入时需要对其置1,否则若前一位为低电平,后一位输入的电平为高则MOS管拉不起来导致出错。而双向口则不需要做此动作,因为双向口有悬浮态。
准双向口就是做输入用的时候要有向锁存器写1的这个准备动作,所以叫准双向口。
真正的双向口不需要任何预操作可直接读入读出。
1:准双向一般只能用于数字输入输出,输入时为弱上拉状态(约50K上拉),端口只有两种状态:高或低。
2:双向除用于数字输入输出外还可用于模拟输入输出,模拟输入时端口通过方向控制设置成为高阻输入状态。双向端口有三种状态:高、低或高阻


使用特权

评论回复

相关帖子

豌豆爹| | 2022-2-9 15:10 | 显示全部楼层
学习学习基础知识

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

78

帖子

2

粉丝