程序如下,请大神们帮帮忙,C语言新手一枚。
出现问题:如果先按key1,则1、2两个灯都亮,再按key2和key3则都没反应;如果先按key2,一个灯亮,再按key3,另一个灯亮,再按key1,两灯都亮,但是再按其他的又没反映了。。。。总结一下就是:按了key1,再按其他就没反应,如果先按其他的,也只能轮回一次,不能重复按,例如按了key2.按key3,再按key2也不行了。。。不知道我表达明白没,请指教,谢谢
while(1)
{
if(KEY1==0)
{
LED1=0;
LED2=1;
}
else if(KEY2==0)
{
LED1=1;;
LED2=0;;
}
else if(KEY3==0)
{
LED1=0;
LED2=0;
}
else
{
LED1=1;
LED2=1;
}
}
首先我的芯片是atmega32,然后按键口初始化是输入,没有上拉,DDRA=0X00;PORTA=0X00; LED输出口初始化是输出高电平,DDRB=0XFF;PORTB=0XFF. 先假设我8个口都用了哈,然后按键检测是高电平有效,led灯亮是低电平有效,头文件里面我有宏定义。 想实现的功能是:按键是点动的,按完就松开的那种,但是灯的状态是一直都显示的,只有切换按键才改变状态,我实际程序不是用KEY 和 LED表示的,只是为了看起来方便才这么写