您现在的位置: 主页 > MCU > 单片机技术应用 > 8条口线24按键的C51源程序 -
本文所属标签:
为本文创立个标签吧:

8条口线24按键的C51源程序 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-07 

[导读]//键盘扫描处理,无按键返回0,有按键返回键值,键值对应于keycode[]下标值。8条(以P2为例)口线24按键
//键盘码也可定义为局部数组变量
unsigned char code keycode[]=
{0x00,0xee,0xde,0xbe,0xed,0xdd,0xbd,0xeb,0

//键盘扫描处理,无按键返回0,有按键返回键值,键值对应于keycode[]下标值。8条(以P2为例)口线24按键
//键盘码也可定义为局部数组变量
unsigned char code keycode[]=
{0x00,0xee,0xde,0xbe,0xed,0xdd,0xbd,0xeb,0xdb,0xbb,0xd7,0xe7,0xb7,0x7b,0x7d,0x7e,0x77,

0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0x7f,0xbf};

本文引用地址: http://www.21ic.com/app/mcu/201808/787323.htm

unsigned char keyread(void)
{ unsigned char i,j,x,k1,k2;
P2=0xff;
if(P2!=0xff)
{k1=P2;
delay();
P2=0xff;
if(P2!=0xff)
{for(P2=0xff;P2!=0xff;P2=0xff)
x=k1;}
}
else{x=0;
}
//以上判断接地按键
//以下判断交叉按键(反转法)
if(x==0)
{P2=0x0f;
if(P2!=0x0f)
{delay();
P2=0x0f;
if(P2!=0x0f)
{k1=P2;
P2=0xf0;
if(P2!=0xf0)
{k2=P2;
for(P2=0xf0;P2!=0xf0;P2=0xf0)
x=k1^k2;}
}
}
else{x=0;} }
if(x==0){i=0;}
else{i=j=0xff;
do{i++;j++;
if(keycode[i]==x){j=24;}
else if(j==24){i=0;}else{;} }

while(j!=24);}

return(i);
}

void delay()//延时
{ unsigned char b;
for (b=0;b<=0xff;b++)
{
for (b=0;b<=0xff;b++)
{;}
}
}



              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > 8条口线24按键的C51源程序 -
 

"8条口线24按键的C51源程序 -"的相关文章

网站地图

围观()