huangyewei 发表于 2013-8-1 20:09:57

麻烦各位帮我看一下m16的按键程序

按键是接了PORTA的第四位,有外加上拉电阻。
IO配置
PORTA = 0xFF;
DDRA= 0x00;
按键程序
void key_scan(void)
{
       unsigned char current_key,last_key;
       current_key=PINA&0x0f;
       if(current_key!=0x0f)
       {
                  if(last_key==0x0f)
                {
                    switch(current_key)
                   {
                          case 0x0e:          
                                if(set_voltage<=3590)        set_voltage+=10;
                                     else        set_voltage=3600;               
                                                            break;
                                 case 0x0d:           if(set_voltage>=3010)        set_voltage-=10;
                                     else                                set_voltage=3000;
                                                        break;
                        case 0x0b:           if(set_voltage<=3500)        set_voltage+=100;
                                                else                                set_voltage=3600;
                                                     break;
                        case 0x07:           if(set_voltage>=3100)        set_voltage-=100;
                                               else                                set_voltage=3000;
                                               break;
                                default:            break;
                        }
                                              
                }       
       }
       last_key=current_key;]
}
这个程序哪里出错了,麻烦各位大侠帮我找一下。

huangyewei 发表于 2013-8-1 20:10:55

上面打错字了,是‘按键是接了PORTA的低四位,有外加上拉电阻’

xiaowu191 发表于 2013-8-1 20:29:26

last_key 在这里是局部变量,不会保存上次的值;

//这样定义
static unsigned char last_key;

huangyewei 发表于 2013-8-5 10:24:59

xiaowu191 发表于 2013-8-1 20:29 static/image/common/back.gif
last_key 在这里是局部变量,不会保存上次的值;

//这样定义


一点即中!{:smile:} 谢啦!
页: [1]
查看完整版本: 麻烦各位帮我看一下m16的按键程序