矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 1280|回复: 8

再求助51大佬,关于输入输出问题

[复制链接]
     
发表于 2022-9-17 21:37:30 | 显示全部楼层 |阅读模式
51的端口输出低电平之后,是不是这个端口就无法完全的变出输入端口了
  1. void loop() {
  2.   pinMode(A0, OUTPUT);
  3.   digitalWrite(A0,LOW);
  4.   delay(1000);
  5.   m=0;
  6.   pinMode(A0, INPUT);
  7.   while(!digitalRead(A0)){
  8.     m+=1;
  9.   }
  10.   Serial.println(m);
  11.   if(m>9)
  12.     Serial.println("按下按钮");
  13. }
复制代码

使用普通MCU实现电容触摸按键
http://www.crystalradio.cn/forum ... &fromuid=272612
(出处: 矿石收音机论坛)

比如这么个电容按键识别代码(Arduino)的,我发现无法再CH552G(E8051)上实现

  1. for(;;){
  2.         K2=0;
  3.         delay(100);
  4.         t=0;
  5.         //K2=1;//关键点这里无法变成悬空的输入端
  6.         while(!K2){
  7.                 t++;
  8.         }
  9.         if(t>ref[0]){
  10.                 LED=1;
  11.         }else{
  12.                 LED=0;
  13.         }
  14. }
复制代码

有办法么?
     
 楼主| 发表于 2022-9-17 23:24:35 | 显示全部楼层
  1. 由 Pn_MOD_OC[x]和 Pn_DIR_PU[x]组合实现 Pn 端口的相关配置,具体如下。
  2. 表 10.2.2 端口配置寄存器组合
  3. Pn_MOD_OC Pn_DIR_PU  工作模式描述
  4. 0  0  高阻输入模式,引脚没有上拉电阻
  5. 0  1  推挽输出模式,具有对称驱动能力,可以输出或者吸收较大电流
  6. 1  0  开漏输出,支持高阻输入,引脚没有上拉电阻
  7. 1  1  准双向模式(标准 8051),开漏输出,支持输入,引脚有上拉电阻,当
  8. 输出从低电平转高电平时自动驱动 2 个时钟周期的高电平以加速转换
复制代码

看数据表有控制寄存器,设置为高阻输入应该就行了
回复 支持 反对

使用道具 举报

     
发表于 2022-9-18 20:58:56 | 显示全部楼层
标准8051 IO 准双向模式
输出高可以被拉低,上拉比较弱
输出低不容易被拉高,

回复 支持 反对

使用道具 举报

     
发表于 2022-9-18 22:20:44 来自手机 | 显示全部楼层
输出低不能作为输入口了,因为输出和输入是不同的锁存器控制,看单片机端口一节有详细介绍内部电路的
回复 支持 反对

使用道具 举报

     
发表于 2022-9-18 23:04:14 | 显示全部楼层
本帖最后由 Fireflying 于 2022-9-18 23:10 编辑

标准51端口的准双向模式,如果要读取按键状态,必须先把端口置高电平,这时候端口内部的集电极开路(OC)或者漏极开路(OD)管子截止,端口才能读到按键按下时候的低电平状态变化,如果把端口置低电平了,那么端口内部的管子导通了,这时候无论端口连接的按键是不是按下了,端口都是低电平,检测按键的功能就失灵了。
C51KeyIn.png
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2022-9-19 09:18:58 | 显示全部楼层
Fireflying 发表于 2022-9-18 23:04
标准51端口的准双向模式,如果要读取按键状态,必须先把端口置高电平,这时候端口内部的集电极开路(OC)或 ...

所以标准的的51无法实现触摸按键
幸好CH552G有提供更多的IO方法
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2022-9-19 09:22:17 | 显示全部楼层
使用开漏输出模式
Pn_MOD_OC Pn_DIR_PU  工作模式描述
1  0  开漏输出,支持高阻输入,引脚没有上拉电阻
代码不变就解决这个问题了
回复 支持 反对

使用道具 举报

发表于 2022-9-19 17:10:33 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2022-9-19 17:12:37 | 显示全部楼层
输出设置为低电平的时候无法作为输入,不能接收数据状态变化。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-28 12:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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