能不能给写一个AVR单片机2*4的键盘扫描程序
uintCheckKey(void){KeyValue=0;uinttemp=0;PORTE=0XEF;DDRE=0XF0;temp=PINE;temp&=0xCF;if...
uint CheckKey(void)
{
KeyValue=0;
uint temp=0;
PORTE=0XEF;
DDRE=0XF0;
temp=PINE;
temp&=0xCF;
if(temp|=0xCF)
{
Delay(10);
temp=PINE;
if(temp==0xee)
KeyValue|=Key_S1;Delay(10);
if(temp==0xed)
KeyValue|=Key_S4;Delay(10);
if(temp==0xeb)
KeyValue|=Key_S6;Delay(10);
if(temp==0xe7)
KeyValue|=Key_S8;Delay(10);
}
PORTE=0XDF;
DDRE=0XF0;
temp=PINE;
temp&=0xcf;
if(temp|=0xcf)
{
Delay(10);
temp=PINE;
if(temp==0xde)
KeyValue|=Key_S3;Delay(10);
if(temp==0xdd)
KeyValue|=Key_S5;Delay(10);
if(temp==0xdb)
KeyValue|=Key_S7;Delay(10);
if(temp==0xd7)
KeyValue|=Key_S9;Delay(10);
}
Delay(10);
if((PINE&0x40)==0) KeyValue|=Key_S18;
Delay(10);
if((PINE&0x80)==0) KeyValue|=Key_S19;
看一下哪儿有问题,同时按S1和S6的时候不行 展开
{
KeyValue=0;
uint temp=0;
PORTE=0XEF;
DDRE=0XF0;
temp=PINE;
temp&=0xCF;
if(temp|=0xCF)
{
Delay(10);
temp=PINE;
if(temp==0xee)
KeyValue|=Key_S1;Delay(10);
if(temp==0xed)
KeyValue|=Key_S4;Delay(10);
if(temp==0xeb)
KeyValue|=Key_S6;Delay(10);
if(temp==0xe7)
KeyValue|=Key_S8;Delay(10);
}
PORTE=0XDF;
DDRE=0XF0;
temp=PINE;
temp&=0xcf;
if(temp|=0xcf)
{
Delay(10);
temp=PINE;
if(temp==0xde)
KeyValue|=Key_S3;Delay(10);
if(temp==0xdd)
KeyValue|=Key_S5;Delay(10);
if(temp==0xdb)
KeyValue|=Key_S7;Delay(10);
if(temp==0xd7)
KeyValue|=Key_S9;Delay(10);
}
Delay(10);
if((PINE&0x40)==0) KeyValue|=Key_S18;
Delay(10);
if((PINE&0x80)==0) KeyValue|=Key_S19;
看一下哪儿有问题,同时按S1和S6的时候不行 展开
2个回答
展开全部
这个程序组合键不好处理啊!!
if(temp==0xde)
KeyValue|=Key_S3;Delay(10);
if(temp==0xdd)
KeyValue|=Key_S5;Delay(10);
if(temp==0xdb)
KeyValue|=Key_S7;Delay(10);
if(temp==0xd7)
KeyValue|=Key_S9;Delay(10);
再在下面if组合键的键值呗!!这样可以了,
if(temp==0xde)
KeyValue|=Key_S3;Delay(10);
if(temp==0xdd)
KeyValue|=Key_S5;Delay(10);
if(temp==0xdb)
KeyValue|=Key_S7;Delay(10);
if(temp==0xd7)
KeyValue|=Key_S9;Delay(10);
再在下面if组合键的键值呗!!这样可以了,
来自:求助得到的回答
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询