能不能给写一个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的时候不行
展开
 我来答
百度网友13f6530
2014-06-26 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:89
采纳率:100%
帮助的人:59.9万
展开全部
你那个同时按测不到的,因为你中间用的是==,而不是&

if(temp==0xee) 改成if(!(temp&0x01))既可,下面的也是
追问
怎么1、4、6、8是按下以后低电平变成高电平,其他的都是高电平变成低电平
jmhyys
2014-06-26 · TA获得超过524个赞
知道小有建树答主
回答量:1052
采纳率:62%
帮助的人:285万
展开全部
  这个程序组合键不好处理啊!!
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组合键的键值呗!!这样可以了,
来自:求助得到的回答
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式