单片机 关于阵列键盘的问题
答案:2 悬赏:0 手机版
解决时间 2021-03-22 03:33
- 提问者网友:佞臣
- 2021-03-21 04:43
rt 如果我设 key=P1 则如果key=0xf0 那p1.0到p1.7是不是0000 1111?
最佳答案
- 五星知识达人网友:孤独的牧羊人
- 2021-03-21 06:03
是的,从P1.7-P1.0是从高位到低位的顺序
全部回答
- 1楼网友:酒安江南
- 2021-03-21 07:11
整理一下格式,发现,这程序还是很容易理解的:
uchar getkey()
{
uchar x,val,i,anl,key_get;
pa8155 = 0x00;
x = pc8155;
x = ~x;
x = x & 0x0f;
if(x != 0) {
x = kbscan();
if(x != 0) {
val = 0xfe;
anl = 0;
for(i = 0; i < 6; i++) {
pa8155 = val;
x = pc8155;
x = ~x;
x = x & 0x0f;
if ((x&0x01) == 1) { key_get = 0x00 + anl; break; }
else if((x&0x02) == 2) { key_get = 0x08 + anl; break; }
else if((x&0x04) == 4) { key_get = 0x10 + anl; break; }
else if((x&0x08) == 8) { key_get = 0x18 + anl; break; }
anl = anl + 1;
val = val << 1;
val = val + 1;
}
}
else { key_get = 0x99; }
}
return key_get;
}
void chargekey(uchar key)
{
switch(key) { case 31: flag = !flag; break; }
if(!flag) {
switch(key) {
case 8: if(hour < 23) hour++; else hour = 0; delay(100); break;
case 9: if(hour > 0) hour--; else hour = 23; delay(100); break;
case 10: if(minute < 59) min++; else minute = 0; delay(100); break;
case 11: if(minute > 0) min--; else minute = 59; delay(100); break;
case 12: if(second < 59) sec++; else second = 0; delay(100); break;
case 13: if(second > 0) sec--; else second = 59; delay(100); break;
}
}
}
楼主再看看,不懂可追问。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯