基于状态机的按键扫描的实现一般的按键输入软件接口程序非常简单(共5页).doc
《基于状态机的按键扫描的实现一般的按键输入软件接口程序非常简单(共5页).doc》由会员分享,可在线阅读,更多相关《基于状态机的按键扫描的实现一般的按键输入软件接口程序非常简单(共5页).doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上基于状态机的按键扫描的实现 一般的按键输入软件接口程序非常简单,在程序中一旦检测到按键输入口为低电平(有时可能为高),便采用软件延时的方法来进行消抖,然后再次检测按键输入,如果再次确认为低电平则表示有按键按下,转入执行按键处理程序。如果延时后检测的电平为高电平则放弃本次按键检测,重新开始一次按键检测过程。在简单的系统中这种方法比较可以用,但是在复杂的系统实时性要求较高的系统中这种方法的CPU利用率比较低,造成资源的浪费。另外,由于在不同的产品系统中对按键功能的定义和使用方式也会不同,而且是多变的,加上在测试和按键处理的同时,MCU还要同时处理其他的任务(如显示、计算、
2、计时等),因此编写键盘和按键接口的处理程序需要掌握有效的分析方法,具备较高的软件设计能力和程序编写的技巧。而采用状态机的方法是一种比较好的方法。何为状态机 关于状态机的一个极度确切的描述是它是一个有向图形,由一组节点和一组相应的转移函数组成,状态机通过响应一系列事件而“运行”。每个事件都在属于“当前”节点的转移函数的控制范围内,其中函数的范围是节点的一个子集。函数返回“下一个”(也许是同一个)节点。这些节点中至少有一个必须是终态。当到达终态,状态机停止。状态机是一种概念性机器,它能采取某种操作来响应一个外部事件。具体采取的操作不仅能取决于接收到的事件,还能取决于各个事件的相对发生顺序。之所以能
3、做到这一点,是因为机器能跟踪一个内部状态,它会在收到事件后进行更新。为一个事件而响应的行动不仅取决于事件本身,还取决于机器的内部状态。另外,采取 的行动还会决定并更新机器的状态。这样一来,任何逻辑都可建模成一系列事件/状态组合。状态机是软件编程中的一个重要概念。比如在一个按键命令解析程序中,就可以看做状态机,其过程如下:本来在A状态下,触发一个按键后切换到B,再触发另一个键后就切换到C状态,或者返回A状态。这是最简单的例子。其他的很多的程序都可以当做状态机来处理。状态机可归纳为4个要素,即现态、条件、动作、次态。这样的归纳,主要是出于对状态机内在因果关系的考虑。“现态”和“条件”是因,“动作”
4、和“次态”是果。详细如下:现态:是指当前所处的状态。条件:又称为“事件”。当一个条件满足,将会触发一个动作,或者执行一次状态的迁移。动作:条件满足后执行动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变为新的“现态”了。按键的状态机实现一个按键从键按下到松开的过程如下如所示。从图中可以看出,按键的按下和松开的过程都有抖动的干扰问题,因此要将它们消除。 可将将按键抽象为4个状态:(1) 未按下,假定为S0(2) 确认有键按下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 状态机 按键 扫描 实现 一般 输入 软件 接口 程序 非常 简单
限制150内