把上拉电阻去掉,IO要能够改变配置
uint32_t key_value=0;
K1 输出高电平;
K2-K6 配置下拉输入;
//扫描 K2 K3 K4
如果 K2为高电平 key_value|=(1<<0);
如果 K3为高电平 key_value|=(1<<1);
如果 K4为高电平 key_value|=(1<<2);
Key2 输出高电平;
K1,K3-K6 配置下拉输入;
//扫描 K1 K3 K4
如果 K1为高电平 key_value|=(1<<3);
如果 K3为高电平 key_value|=(1<<4);
如果 K4为高电平 key_value|=(1<<5);
Key3 输出高电平;
K1 K2,K4-K6 配置下拉输入;
//扫描 K1 K2 K4
如果 K1为高电平 key_value|=(1<<6);
如果 K3为高电平 key_value|=(1<<7);
如果 K4为高电平 key_value|=(1<<8);
Key4 输出高电平;
K1-K3,K5-K6 配置下拉输入;
//扫描 K1-K3
如果 K1为高电平 key_value|=(1<<9);
如果 K2为高电平 key_value|=(1<<10);
如果 K3为高电平 key_value|=(1<<11);
Key5 输出高电平;
K1-K4,K6 配置下拉输入;
//扫描 K1-K4,K6
如果 K1为高电平 key_value|=(1<<12);
如果 K2为高电平 key_value|=(1<<13);
如果 K3为高电平 key_value|=(1<<14);
如果 K4为高电平 key_value|=(1<<15);
Key6 输出高电平;
K1-K5 配置下拉输入;
//扫描 K1-K5
如果 K1为高电平 key_value|=(1<<16);
如果 K2为高电平 key_value|=(1<<17);
如果 K3为高电平 key_value|=(1<<18);
如果 K4为高电平 key_value|=(1<<19);
return(key_value);
少于两个键按下可以识别,三个或三个以上还没去做分析 |