说到微控制器编程,我们必须谈论状态机。
作为软件编程的主要框架,状态机已经以多种语言使用,包括C语言。
在清晰有效的程序中,必须有一个状态机。
出现。
灵活的应用程序状态机不仅使程序更高效,而且具有良好的可读性和可伸缩性。
状态无处不在,状态中有状态,只要您掌握了这种思维并将其养成编程习惯,我相信您会受益匪浅。
状态机可以归纳为4个元素,即当前状态,条件,动作和第二状态。
这种归纳主要是基于对状态机内部因果关系的考虑。
“当前状态”指的是“当前状态”。
和“条件”是原因,而“动作”则是以及“第二状态”是结果。
具体解释如下:①当前状态:指当前状态。
②条件:也称为“事件”。
当满足条件时,将触发操作或执行状态转换。
③动作:满足条件后执行的动作。
执行动作后,可以将其迁移到新状态,也可以保持原始状态。
该动作是不必要的。
满足条件后,您也可以直接移至新状态,而无需执行任何操作。
④第二种状态:满足条件后要转移到的新状态。
所述“第二状态”指的是第二状态。
相对于“当前状态”。
一旦“第二状态”出现,则进入第二状态。
当激活“激活状态”时,它转换成新的“当前状态”。
如果我们进一步归纳和统一“现状”,那么,和“第二状态”,而忽略了“动作”。
(降级处理),只剩下两个最关键的元素,即:状态和转换条件。
有很多表达状态机的方法。
我们可以用文本,图形或表格的形式表示状态机。
举一个简单的例子:就密钥处理而言,击键本身也可以看作是状态机。
一个小的按键动作包括:释放,摇动,关闭,摇动和重新释放状态。
当我们开放思想并将状态机引入程序时,我们将找到一个有效的捷径来处理问题。
有时,考虑状态机的思想比考虑控制过程的思想更有效。
这样,状态机具有更实用的功能。
废话不多,实践是检验真理的唯一标准。
有些人可能认为状态机使问题复杂化。
实际上,完成软件设计的人已经在不可见地使用状态机。
这是几个状态机的摘要。
第一种类型:开关盒结构状态机switch()。
情况1:。
如果(不重复状态1)。
进入1状态之前需要做的准备。
进入1状态的过程。
如果(不重复状态1)。
离开状态的过程1. case2 :。
....但是,这种方法不能有效地预定义所有状态,也不能合理地定义这些状态之间的切换过程。
没有关于“状态”的合理定义。
本身。
这几乎是一种面向过程的方式。
这种方法很简单,最容易为人们接受。
缺点是没有“状态”的定义和分配功能,这导致状态混乱,状态处理中的重复代码甚至不一致。
根据OO的概念,状态描述是固有的,它应该是一个实体。
状态机的第二种类型:ifelse语句结构状态机这种状态机相对灵活,但是对于某些大型项目,系统软件设计会相对复杂。
以上两个状态机是每个人接触最多的状态机,并且它们也是经常使用的,因此在这里我不会谈论它们。
以下重点介绍第三种状态机。
状态机的第三种类型:消息触发状态机。
这种状态机的实现方式很多,形式多样,但是状态机的四个要素与当前状态,条件,动作和次要状态是密不可分的。
下面描述消息触发类型的状态机。
基于消息驱动状态机机制的原理:触发消息后,系统服务功能立即在状态下搜索消息和消息处理功能对,并在找到消息后执行消息处理功能。
步骤:1.添加消息和消息映射... BEGIN_MESSAGE_ MAP(名称,计数):状态机名称,消息数ADD_NEW_MSG_ITEM(消息,OnMsg):消息和消息处理功能END_ME