这单就你提出来的问题来说,上面提到的状态机原理就好了。
其实这个问题,你需要更多理一下整个逻辑状态的变化,看需要多少变量来存储对应信息。
从你的表述来说有
1. 按钮按下和释放状态(按下为1,释放为0)
2. 灯的状态(亮为1,灭为0)
3. 计数器
灯的状态最多在计数器工作的10s内可能是亮的,所以对应的状态变化是
当
按钮按下,且灯为灭时, 灯转为亮,且开始计数
如果计数到10s对应数字,灯自动转换为灭,计数器复位且停止计数。
如果在计数中再按下按钮,则强制让灯为灭,计数器复位且停止计数。
1-初始化定时器
2-在判断到按下的瞬间,判断标志位,如果标志位为许可状态(标志位自己设定一个)启用定时器,并把标志位设定为不允许状态
3-定时器达到后(10s)重新把标志位变成许可状态
在一个定时周期内,测到两次按下就是双击,一次就是单击了。
在定时器中断中查询按下次数与按下时间间隔