4x4矩阵键盘c语言程序

uchar ScanKey(void) //矩阵键盘 {

uchar Tmp,Tmp2,KeyNum;//定义变量 P1=0xf0; //屏蔽低四位 if(P1!=0xf0) //行扫描 {

delay(10); //延时去抖 if(P1!=0xf0) //确定按键按下 {

Tmp=P1; //取出P1口高四位数据 P1 =0x0F; //屏蔽高四位 _nop_();_nop_();_nop_();_nop_();//延时 Tmp2=P1; //取出P1口低四位

Tmp=Tmp+Tmp2; //将取出的高四位,低四位组合,得到键值 while(P1!=0x0F) ; //松手检测 switch(Tmp&0x0F) //判断行号 {

case 0x0E:KeyNum=0;break; case 0x0D:KeyNum=4;break; case 0x0B:KeyNum=8;break; case 0x07:KeyNum=12;break; }

switch(Tmp&0xf0) //判断列号,并与行号相加,获得键值 {

case 0xE0:KeyNum+=1;break; case 0xD0:KeyNum+=2;break; case 0xB0:KeyNum+=3;break; case 0x70:KeyNum+=4;break; }

return KeyNum; //输出键值 } }

return 0; //无按键按下返回0, }

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4