打印
[AVR单片机]

就是加上长按键之后,功能就不正常了,求教!!!

[复制链接]
556|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jazzyfox|  楼主 | 2016-6-22 15:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TE, ST, state, IO, se


void key_scan(){
        if (longkey_fg==0)
        {
                if ( _ION(KEYIN)==0&&work_states==0)
                {
                        if (++keyon1_num>=5)
                        {
                                if (_ION(KEYIN)==0&&work_states==0) {                                                // 第一次按Key键则全功率输出
                                        highhot_out();
                                        work_states=1;
                                        keyon1_num=0;
                                }
                        }
                }
                else if ( _ION(KEYIN)==1&&work_states==1)
                {
                        if (++keyoff1_num>=5)
                        {
                                if (_ION(KEYIN)==1&&work_states==1) {                                // 第一次释放,置第一次释放标志
                                        work_states=2;
                                        keyoff1_num=0;
                                }
                        }
                }
               
                else if ( _ION(KEYIN)==0&&work_states==2)
                {
                        if (++keyon2_num>=5)
                        {
                                if (_ION(KEYIN)==0&&work_states==2) {                                // 第二次按Key键则低热
                                        hotlow_out();
                                        work_states=3;
                                        keyon2_num=0;
                                }
                        }
                }


                else if ( (work_states==3)&&(_ION(KEYIN)==1))
                {
                        if (++keyoff2_num>=5)
                        {
                                if ((work_states==3)&&(_ION(KEYIN)==1)) {                                //  第2次松开后,置第二次松开标志
                                        work_states=4;
                                        keyoff2_num=0;
                                }
                        }
                }
               
                else if ((work_states==4)&&(_ION(KEYIN)==0))
                {
                        if (++keyon3_num>=5)
                        {
                                if ((work_states==4)&&(_ION(KEYIN)==0)) {                        // 第3次按Key键,则关闭
                                        //        close_out();
                                        work_states=5;
                                        keyon3_num=0;
                                }
                        }
                }
               
                else if ((work_states==5)&&( _ION(KEYIN)==1))
                {
                        if (++keyoff3_num>=5){
                                if ((work_states==5)&&( _ION(KEYIN)==1)) {                                //  第3次松开后,置清除所有标志
                                        close_out();
                                        work_states=0;
                                        keyoff3_num=0;
                                }
                        }
                }
        }
        
        if (_ION(KEYIN)==0)    //长按键显示,问题就出在这里,基本上就是加上了,工作逻辑就不对了
        {
                if (work_states!=0)
                {
                        if (_ION(KEYIN)==0)
                        {
                          longkey_num++;
                                if(longkey_num>=500){
                                        longkey_fg=1;   
                                        ad_value=ADConvert();
                                        Display_Voltage(ad_value);  //采样,显示电压
                                        longkey_num=0;
                                }
                        }
                }
        }
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

1020

帖子

5

粉丝