找回密码
 立即注册
查看: 325|回复: 7

小白提问

[复制链接]
已绑定手机

1

主题

6

回帖

37

积分

新手上路

积分
37
发表于 2024-12-23 17:26:28 | 显示全部楼层 |阅读模式

为什么我将单片机引脚配置成准双向口,如何读取引脚电平,读出来的电平一直都是1高电平呢,明明用万用表测量那个管脚都已经是低电平了

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-12-23 17:40:29 | 显示全部楼层
IO上电复位为1,双向口悬空读就是1,没毛病,外部下拉才能读到0
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-12-23 17:41:14 | 显示全部楼层

建议直接使用这个
截图202412231740574189.jpg
DebugLab
回复 支持 反对

使用道具 举报 送花

已绑定手机

1

主题

6

回帖

37

积分

新手上路

积分
37
发表于 2024-12-23 18:28:26 | 显示全部楼层
Debu*** 发表于 2024-12-23 17:41
建议直接使用这个

我试过这个了,就是配置完之后,P1.7引脚就一直是高电平1,拨动编码器,读出来的电平依旧没变

点评

电路连接不对或读的方法不对  详情 回复 发表于 2024-12-23 18:40
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-12-23 18:40:03 | 显示全部楼层
dbfz*** 发表于 2024-12-23 18:28
我试过这个了,就是配置完之后,P1.7引脚就一直是高电平1,拨动编码器,读出来的电平依旧没变
...

电路连接不对或读的方法不对
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

积分
2544
发表于 2024-12-23 19:51:08 | 显示全部楼层

先写1再读

回复 支持 反对

使用道具 举报 送花

已绑定手机

1

主题

6

回帖

37

积分

新手上路

积分
37
发表于 2024-12-23 20:06:03 | 显示全部楼层
Debu*** 发表于 2024-12-23 18:40
电路连接不对或读的方法不对

#include <STC8H.H>
#include        "STC8G_H_GPIO.h"
        
sbit xd1 = P1^7;
sbit xd2 = P2^4;
sbit xd3 = P3^4;
sbit xd4 = P2^3;
        
void GPIO_Config()
{
    GPIO_InitTypeDef GPIO_InitStructure;

    GPIO_InitStructure.Pin = GPIO_Pin_7;
    GPIO_InitStructure.Mode = GPIO_PullUp;
    GPIO_Inilize(GPIO_P1, &GPIO_InitStructure);

    GPIO_InitStructure.Pin = GPIO_Pin_3 | GPIO_Pin_4;
    GPIO_InitStructure.Mode = GPIO_PullUp;
    GPIO_Inilize(GPIO_P2, &GPIO_InitStructure);

    GPIO_InitStructure.Pin = GPIO_Pin_4;
    GPIO_InitStructure.Mode = GPIO_PullUp;
    GPIO_Inilize(GPIO_P3, &GPIO_InitStructure);
        
}

void main()
{
                unsigned char pinStatus = 0;
    GPIO_Config();


    while (1)
    {
        // 读取P1.7引脚电平,存到pinStatus最低位(第0位)
        pinStatus &= ~0x01;
        if (xd1 == 1)
        {
            pinStatus |= 0x01;
        }

        // 读取P2.4引脚电平,存到pinStatus第1位
        pinStatus &= ~0x02;
        if (xd2 == 1)
        {
            pinStatus |= 0x02;
        }

        // 读取P3.4引脚电平,存到pinStatus第2位
        pinStatus &= ~0x04;
        if (xd3 == 1)
        {
            pinStatus |= 0x04;
        }

        // 读取P2.3引脚电平,存到pinStatus第3位
        pinStatus &= ~0x08;
        if (xd4 == 1)
        {
            pinStatus |= 0x08;
        }

    }
}
回复 支持 反对

使用道具 举报 送花

已绑定手机

1

主题

6

回帖

37

积分

新手上路

积分
37
发表于 2024-12-23 20:07:14 | 显示全部楼层
dbfz*** 发表于 2024-12-23 20:06
#include
#include        "STC8G_H_GPIO.h"
        

我是这样写的
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 13:10 , Processed in 0.228174 second(s), 100 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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