找回密码
 立即注册
查看: 86|回复: 4

为什么51单片机读取端口时, 读取前必须先置1?

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:257
  • 最近打卡:2025-12-16 01:40:51
已绑定手机

46

主题

214

回帖

1711

积分

金牌会员

积分
1711
发表于 2025-11-25 16:39:26 | 显示全部楼层 |阅读模式
51单片机读取一组端口的状态时, 读取前必须先置1: P1 = 0xFF; 然后才能读取: port_status = P1; 这是因为51单片机采用准双向1/O结构,直接读取可能得到错误结果或损坏器件。

888.PNG
8位程序---换个STC32G.h头文件,换个C251编译器就直接到STC32的高度了;
          想回到8位机,则换个STC8H.h头文件,换个C51编译器就回到8位机了.
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:583
  • 最近打卡:2025-12-16 08:55:36

33

主题

2769

回帖

6230

积分

论坛元老

积分
6230
发表于 2025-11-25 16:59:20 | 显示全部楼层
准双向的结构原因,,你可以分析分析手册里面关于IO 的那部分看看
截图202511251659178272.jpg
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:645
  • 最近打卡:2025-12-16 08:20:22
已绑定手机

93

主题

6932

回帖

1万

积分

超级版主

积分
13007
发表于 2025-11-25 17:10:35 | 显示全部楼层
准双向是弱上拉强下拉,置0只能输出不能输入,置0并强行输入高电平可能导致IO烧毁
仅做输入可以设置为高阻,无上下拉,端口寄存器无影响
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:619
  • 最近打卡:2025-12-16 16:14:20
已绑定手机

44

主题

2573

回帖

2693

积分

荣誉版主

积分
2693
发表于 2025-11-25 23:54:31 | 显示全部楼层
传统51的IO只有准双向和开漏两种,意味着只要对IO赋值0必然输出低电平,对外部输入信号变化置若罔闻,所以要接收外部信号必须对IO赋值1,
只有增强型51支持将IO配置为高阻输入模式,此时输出寄存器的值不会控制IO电平,也就不会影响IO正常输入信号了。
睁开眼睛做场梦~~~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:262
  • 最近打卡:2025-12-16 06:37:15
已绑定手机

0

主题

9

回帖

52

积分

注册会员

积分
52
发表于 2025-11-26 06:38:42 | 显示全部楼层
知道了单片机原理才能更好的运用
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-12-16 17:51 , Processed in 0.122287 second(s), 61 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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