找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7009|回复: 8
打印 上一主题 下一主题
收起左侧

51单片机读i/o口前为什么要先输入高电平?

[复制链接]
跳转到指定楼层
楼主
ID:613277 发表于 2019-10-8 22:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:235200 发表于 2019-10-9 07:31 | 只看该作者
因为单片机IO口数据出进是两条通道,输出时门是趟开的,输入时需把另一通首的门打开才可以进去,打开门的方式是先向端口输出高电平(使端口场效应管关断)
回复

使用道具 举报

板凳
ID:65956 发表于 2019-10-9 08:14 | 只看该作者
没这回事吧,读IO口状态就是读就好了,没有必要先输入高电平,如果输入了那还读他作什么,因为你已经知道它是高电平了
回复

使用道具 举报

地板
ID:94031 发表于 2019-10-9 08:28 | 只看该作者
这是51单片机i/o口结构决定的。
回复

使用道具 举报

5#
ID:620877 发表于 2019-10-9 09:13 | 只看该作者
必须先输出高电平,把输出驱动电路的场效应管截止,使口线引脚被内部的上拉电阻拉为高电平。其后,若输入为高,则引脚维持高电平;若输入为低,引脚被下拉为低电平。读引脚才能保证正确。
回复

使用道具 举报

6#
ID:123289 发表于 2019-10-9 16:09 | 只看该作者
51的IO口是复用的(输入输出),
如果输出=1,这时你输入=0,1会被拉成0,这样读到的是0。不错。
如果输出=0,这时你输入=1,1是出不来的,会被原来的0拉低,这样读至的只能是0。出错了。

评分

参与人数 1黑币 +9 收起 理由
laopihappy123 + 9 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

7#
ID:524818 发表于 2019-10-11 12:14 | 只看该作者
4楼正解:
必须先输出高电平,把输出驱动电路的场效应管截止,使口线引脚被内部的上拉电阻拉为高电平。其后,若输入为高,则引脚维持高电平;若输入为低,引脚被下拉为低电平。读引脚才能保证正确
回复

使用道具 举报

8#
ID:405193 发表于 2019-10-11 18:17 | 只看该作者
我也谢谢各位师傅,我也发现这个问题,在STC单片机里,IO口设置双向模式,开始赋值低电平0无效,设置成推挽模式就可以,开始设置低电平O就有效。现在明白了,谢谢大家。
回复

使用道具 举报

9#
ID:622801 发表于 2019-10-12 11:51 | 只看该作者
通常作输入时,要选置1,但单片机上电后,默认的是置1的,只要你不是做出其它用,再做输入,就不用置1了。但为保险起见,多置一次1,没有关系。      作输出时,不用管它,直接用就行了。    当然这是基本的51,有的增强型的,就不一定了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表