打印
[Atmel]

使用TINY13A做的控制,奇怪了,怎么运行的就是逻辑不对,...

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

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;
                                }
                        }
                }
        }
}

相关帖子

沙发
dirtwillfly| | 2016-6-23 08:14 | 只看该作者
建议画一画状态转移的逻辑图

使用特权

评论回复
板凳
jazzyfox|  楼主 | 2016-6-25 10:07 | 只看该作者
其实,就是按一下,全功率,再按一下,半功率输出,按第三次关闭,长按,测电压,送显示,可是就是逻辑不对,头疼

使用特权

评论回复
地板
jazzyfox|  楼主 | 2016-6-30 14:18 | 只看该作者
看来还是我自己来搞定,比较合适

使用特权

评论回复
5
jazzyfox|  楼主 | 2016-6-30 14:18 | 只看该作者
dirtwillfly 发表于 2016-6-23 08:14
建议画一画状态转移的逻辑图

是的,你说的对,这个就是个状态机程序,必须这么干才行

使用特权

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

本版积分规则

26

主题

1020

帖子

5

粉丝