矩阵键盘 多键组合 c语言,矩阵键盘多个按键同时按下的问题

你看看这段程序怎么样?我自己写的。

#include

#define KEY P1

//按键码,按键之间按位或运算

#define KEY1  0x11

#define KEY2  0x12

#define KEY3  0x14

#define KEY4  0x18

#define KEY5  0x21

#define KEY6  0x22

#define KEY7  0x24

#define KEY8  0x28

#define KEY9  0x41

#define KEY10 0x42

#define KEY11 0x44

#define KEY12 0x48

#define KEY13 0x81

#define KEY14 0x82

#define KEY15 0x84

#define KEY16 0x88

void Delay10ms(u8 c)//延时10ms

{

u8 a,b;

for( ; c>0; c--)

for(b=38; b>0; b--)

for(a=130; a>0; a--);

}

u8 GetKeyboard()//获取矩阵键盘按键值,支持多按键

{

u8 key,i;

key = 0xFF;

for(i=KEY_Delay; i>0; i--)//按键延时 KEY_Delay*10ms

{

KEY = 0x0F;

if(KEY == 0x0F) break;

if(KEY != (key & 0x0F))

{

Delay10ms(1);//消抖

if(KEY != (key & 0x0F))

key &= (KEY | 0xF0);

}

KEY = 0xF0;

if(KEY == 0xF0) break;

if(KEY != (key & 0xF0))

{

Delay10ms(1);//消抖

if(KEY != (key & 0xF0))

key &= (KEY | 0x0F);

}

Delay10ms(1);

}

return (~key);

}

本于技术交流原则。请不要用该代码用于商业用途.

另外,本人现在穷的揭不开锅了,借贴求职

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值