打印

谁有状态机按键的参考程序

[复制链接]
1313|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
guoyt|  楼主 | 2022-12-10 13:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
谁有状态机按键的参考程序

使用特权

评论回复
沙发
LLGTR| | 2022-12-25 09:45 | 只看该作者
是按键的状态机程序?

使用特权

评论回复
板凳
V853| | 2022-12-25 09:45 | 只看该作者
这个估计不好搞,还得根据你的程序情况来。

使用特权

评论回复
地板
朝生| | 2022-12-25 09:45 | 只看该作者
基本都要加延时消抖的。

使用特权

评论回复
5
软核硬核| | 2022-12-25 09:46 | 只看该作者
有状态机也得加延时吧?

使用特权

评论回复
6
Henryko| | 2022-12-26 10:24 | 只看该作者
这个延时是没办法去掉的吧

使用特权

评论回复
7
Stahan| | 2022-12-26 11:17 | 只看该作者
基本上都需要用到延时吧

使用特权

评论回复
8
MessageRing| | 2023-1-19 21:03 | 只看该作者
基本都要加延时消抖的

使用特权

评论回复
9
Stahan| | 2023-2-8 21:41 | 只看该作者
有状态机也得加延时

使用特权

评论回复
10
xlqeft| | 2023-2-9 11:05 | 只看该作者
定时器4MS 一个周期.不停的扫描.这个不知道是不是你说的所谓的状态机
void KEY_SCAN(void)
{
        if(!f_key_press)
        {
                if(P_KEY){press_cnt=0;}
                press_cnt++;
                if(press_cnt>=10)
                {
                        press_cnt=0;
                        f_key_press=1;
                        f_key_ctrl=1;
                }
        }
        else
        {
                if(!P_KEY){press_cnt=0;}
                press_cnt++;
                if(press_cnt>=10)
                {
                        press_cnt=0;
                        f_key_press=0;
                        if(F_WORK_ON&&f_key_ctrl)                                //开机的情况和长按同时在的情况才表示短按
                        {
                               
                        }
                        f_key_ctrl=0;
                }
        }
        //长按
        if(f_key_ctrl)
        {
                ctrl_cnt++;
                if(ctrl_cnt>=375)                                                        //长按1.5S
                {
                        ctrl_cnt=0;
                        f_key_ctrl=0;
                        if(!F_WORK_ON)
                        {
                                if(BAT_STEP!=0)                                                //非低电压的情况才能开机
                                {
                                        F_WORK_ON=1;
                                        WORK_NUM=0;
                                }
                                else
                                {
                                        F_WORK_ON=0;
                                        F_BAT_ERRO=1;
                                }
                        }
                        else
                        {
                                F_WORK_ON=0;
                        }
                }
        }
        else
        {
                ctrl_cnt=0;
        }
}

使用特权

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

本版积分规则

1018

主题

9067

帖子

3

粉丝