初级会员
- 积分
- 115
- 金钱
- 115
- 注册时间
- 2015-7-25
- 在线时间
- 9 小时
|
1金钱
void main()
{
P0 = 0xFF;
while(1)
{
Keys_Scan();
if (keyNo == 0xFF) {delay_ms(10);continue;}
P0 = SEG_CODE[keyNo];Beep();
while (Keys_Scan(), keyNo != 0xFF);
}
}
void Keys_Scan()
{
P1=0x0F;delay_ms(1);
// if(P1=0x0F){keyNo=0xFF;return;} //无按键按下时提前返回
//按键后00001111将变成0000XXXX,X中1个为0,3个为1
//下面判断按键发生在0~3列中的那一列
switch(P1)
{
case 0x0E:keyNo = 0; break;
case 0x0D:keyNo = 1; break;
case 0x0B:keyNo = 2; break;
case 0x07:keyNo = 3; break;
default: keyNo = 0xFF;return;
}
P1 = 0xF0; delay_ms(1);
//判断按键发生在哪一行并且加上列号确定准确的位置
switch (P1)
{
case 0xE0: keyNo +=0; break;
case 0xD0: keyNo +=4; break;
case 0xB0: keyNo +=8; break;
case 0x70: keyNo +=12;break;
default: keyNo = 0xFF;
}
}
|
最佳答案
查看完整内容[请看2#楼]
你有仔细看if(P1=0x0F){keyNo=0xFF;return;}这一句吗?你有学过C吗?if(P1=0x0F)是什么意思?
if(P1=0x0F)永远是成立的,所以永远不会执行这之后的代码
|