void main()
{
for(;;)
{
keyscan();
if(1 == key_deal(keyvalue))
{
led1 = 0;
}
if(4 == key_deal(keyvalue))
{
led1 = 1;
}
}
}
void keyscan()
{
uchar temp;
P3 = 0xf0;
temp=(P3 & 0xf0);
if(temp != 0xf0)// ÅжÏÊÇ·ñÓа´¼ü°´ÏÂ
{
delay(5);// Ïû¶¶
temp=P3 & 0xf0;
if(temp != 0xf0)// ÔÙ´ÎÅжϣ¬È·¶¨ÊÇ·ñÕæµÄÓа´¼ü°´ÏÂ
{
P3 = temp | 0x0f;//°Ñ¸ßËÄλµÄÖµ¸³¸øP3£¬´Ó¶ø¿ÉÒԵõ½Ò»¸ö°ËλµÄ¼üÖµÂë
keyvalue = P3;// »ñÈ¡¼üÖµÂë
while((P3 = temp | 0x0f) == keyvalue);//ËÉÊÖ¼ì²â
}
}
}
uchar key_deal(uchar temp)//
{
uchar num = 0;
switch(temp)
{
case 0xee : num = 1;
break;
case 0xed : num = 5;
break;
case 0xeb : num = 9;
break;
case 0xe7 : num = 13;
break;
case 0xde : num = 2;
break;
case 0xdd : num = 6;
break;
case 0xdb : num = 10;
break;
case 0xd7 : num = 14;
break;
case 0xbe : num = 3;
break;
case 0xbd : num = 7;
break;
case 0xbb : num = 11;
break;
case 0xb7 : num = 15;
break;
case 0x7e : num = 4;
break;
case 0x7d : num = 8;
break;
case 0x7b : num = 12;
break;
case 0x77 : num = 16;
break;
default : ;
}
return num;
}
|