
/********************独立按键程序*****************/
uchar key_can; //按键值
void key() //独立按键程序
{ static uchar key_new = 0 ,key_l; (这两个变量不懂什么意思,特别是key_l)
key_can = 20; //按键值还原(20随便取得嘛?)
P3 = 0x0f; //行
if((P3 & 0x0f) != 0x0f) //按键按下
{
delay_1ms(1); //按键消抖动
if(((P3 & 0x0f) != 0x0f) && (key_new == 1))// (这个也不懂)
{
//确认是按键按下
key_new = 0; //(??)
key_l = (P3 | 0xf0); //矩阵键盘扫描 (这部分具体怎么来的)
P3 = key_l; switch(P3)
{ case 0xee: key_can = 1; break; //得到按键值
case 0xde: key_can = 2; break; //得到按键值
case 0xbe: key_can = 3; break; //得到按键值
case 0x7e: key_can = 14; break; //得到按键值
case 0xed: key_can = 4; break; //得到按键值
case 0xdd: key_can = 5; break; //得到按键值
case 0xbd: key_can = 6; break; //得到按键值
case 0x7d: key_can = 12; break; //得到按键值
case 0xeb: key_can = 7; break; //得到按键值
case 0xdb: key_can = 8; break; //得到按键值
case 0xbb: key_can = 9; break; //得到按键值
case 0x7b: key_can = 13; break; //得到按键值
case 0xe7: key_can = 0; break; //得到按键值
case 0xd7: key_can = 10; break; //得到按键值
case 0xb7: key_can = 11; break; //得到按键值
case 0x77: key_can = 15; break; //得到按键值
}
beep = 0; //蜂鸣器叫一声
delay_1ms(70);
beep = 1;
}
}
else
key_new = 1;
}