batcd 发表于 2026-5-31 03:36:59

我想开机上电的时候根据引脚电平状态切换按键

#include <reg52.h>

// 版本1引脚
sbit KEY_A1 = P3^5;
sbit KEY_B1 = P3^4;

// 版本0引脚
sbit KEY_A0 = P3^4;
sbit KEY_B0 = P3^5;

// 版本检测脚
sbit VERSION_PIN = P1^0;

// 按键函数
bit KeyA_V1(void){return KEY_A1;}
bit KeyA_V0(void){return KEY_A0;}
bit KeyB_V1(void){return KEY_B1;}
bit KeyB_V0(void){return KEY_B0;}

// 函数指针(动态绑定)
bit (*KEY_A)(void);
bit (*KEY_B)(void);

// 初始化:上电绑定一次
void Init_Key(void)
{
    if(VERSION_PIN)
    {
      KEY_A = KeyA_V1;
      KEY_B = KeyB_V1;
    }
    else
    {
      KEY_A = KeyA_V0;
      KEY_B = KeyB_V0;
    }
}

// 主程序
void main(void)
{
    Init_Key();
    while(1)
    {
      if(KEY_A() == 0){} // 按键A
      if(KEY_B() == 0){} // 按键B
    }
}如题:我想开机上电的时候根据引脚电平状态切换按键,不知道这样能不能行,有大佬这样搞过的吗?发帖如果板块不对请管理移动谢谢

wulin 发表于 2026-5-31 08:09:00

楼主所述的引脚电平状态通常适用于拨码开关。按键有常态和暂态,不适合这样编程。拨码开关通常设置后不随便变更才需要作加电时识别。

xiaobendan 发表于 2026-5-31 08:10:17

看起来应该是好使的

狂热主宰 发表于 2026-5-31 08:19:04

可能设置参数记录按键功能
根据引脚电平切换容易

狂热主宰 发表于 2026-5-31 08:22:08

wulin 发表于 2026-5-31 08:09
楼主所述的引脚电平状态通常适用于拨码开关。按键有常态和暂态,不适合这样编程。拨码开关通常设置后不随便 ...

通过函数指针切换
让按键链接相应功能

batcd 发表于 2026-5-31 16:22:18

谢谢大佬们指点,因为我是有2个模块他的脚位正好是相反的,我现在是烧录2个程序我想的是如果一个引脚的短接如果能解决就更完美了程序通用性更高一些
页: [1]
查看完整版本: 我想开机上电的时候根据引脚电平状态切换按键