基于有限状态机的单片机编程设计的研究论文_章泽东 章昕熠 方丹青

基于有限状态机的单片机编程设计的研究论文_章泽东 章昕熠 方丹青

(浙江师范大学)

摘要:随着计算机技术、互联网技术和单片机技术的兴起与发展,单片机控制对于实时性的要求日趋变高。本文基于在有限状态机的思想下,结合时间片轮巡法,介绍一种新的模块化编程思想,这种模式不仅能提高单片机处理的实时性,更能使模块之间相互独立,使得程序易于维护和更新。

关键词:单片机编程;有限状态机;多任务

引言

随着科技的不断发展,社会进入智能化时代,智能化产品、技术层出不穷,融入到人们的工作与生活当中。这些智能设备的设计通常离不开各类单片机的软硬件技术,单片机软硬件的设计能力是智能化设计的基础。单片机技术的发展极其迅猛,功能越来越强,速度越来越快。在单片机的学习过程中很多人会发现软件编程能力的提高却往往会遇到困难。原因在于,真正的单片机实用系统通常任务越来越多,速度要求越来越快,任务的并发、阻塞等问题非常复杂。这些问题,如果是计算机专业的人,相对来说有计算机专业课基础可以帮助解决。但是,对于这些非计算机专业的人来说,他们 一般只能编写前后台结构的程序,也就是大循环加中断这种结构。涉及到任务的并发及阻塞等复杂一些的程序,有时连程序框图都没法画出来,这种情况用前后台程序很难解决。让他们学习一些计算机软件设计的专业课程既不现实也不容易,如果采用实时操作系统来编程就更难了。而有限状态机的程序设计方法,非常适合非计算机电类专业人学习运用。此方法功能强大、有效易懂,能解决多任务的并发、阻塞及软件漏洞等问题。

一、有限状态机介绍

在数字系统设计中,有限状态机是一种用来进行对象行为建模的工具,其作用主要是用描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件等。在计算机科学中,有限状态机被广泛用于建模应用、硬件电路系统设计、软件工程、编译器、网络协议、和计算与语言的研究。有限状态机简称就是状态机,由于一般的状态机的状态都是离散和可举的,即为有限的,所以后面的介绍都不加有限二字。状态机表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。通俗的描述来讲,状态机就是定义了一套状态変更的流程:状态机包含一个状态集合,定义当状态机处于某一个状态的时候它所能接收的事件以及可执行的行为,执行完成后的状态机所处的状态。所以状态机会包含以下几个重要的元素:

State:状态。一个标准的状态机最少包含两个状态:初始和终态。初态是指状态机初始化后所处的状态,因而终态顾名思义就是状态机结束时所处的状态。其他的状态都是一些流转中停留的状态。标准的状态机还会涉及到一些中间态,存在中间态的状态机流程就会比较复杂(然而一般看来,用处也不是特别大,而且可以通过其他方式实现),所以在目标实现的状态机里一般不会引入这个概念。

Event:事件。还有一种描述叫Trigger,表达的意思都是一样的,就是指要执行某个操作的触发器或口令:当状态机处于某个状态时,只有在外界告诉状态机要做什么事情的时候,状态机才会去执行具体的行为,来完成外界想要它完成的操作。比如外出吃饭,客人说“点菜”之后,服务员才会拿着工作纪要本过来记录你要吃的菜,客人所说的那句“点菜”,在整个过程中就相当于Event。

Action:行为。状态变更所要执行的具体行为。

期刊文章分类查询,尽在期刊图书馆还是拿上面点菜来作为讲解的例子,服务员拿小本记录你所要点的菜的过程就是Action

Transition:变更。一个状态接收一个事件执行了某些行为而到达了另外一个状态的过程就是一个Transition。定义Transition也就是在定义状态机的运转流程。

有限状态机在处理实时的、逻辑复杂的事件中很好地表现出了自身的优越性。

二、有限状态机编程优势

1.有限状态机(FSM)是基于所要的状态和事件的一种非常自然、实用的软件描述方法。该种方法通过状态转换图,可以直观地描述状态转换、触发事件以及要执行的操作,无需十分深厚的理论基础,更为适合编程初学者学习。

2.有限状态机可以较为有效地解决程序阻塞问题。程序阻塞的原因是因为程序中有等待、死循环或长延时程序。若将这一部分的等待时间用于执行其他任务,则理论上讲可以提高软件运行的效率。按照一般的编程思想编程,当任务A被执行时,任务B不能被插入,任务A被阻塞,因此就降低了软件操作的效率。若按照有限状态机的思想编程,将任务A划分为若干个部分,任务B划分为若干个部分,此时,任务A和任务B交互,如此便使得这两个模块具有更高的实时性。

3.有限状态机能够处理任务并发过程,是设计复杂系统的基础。随着系统的任务越来越多、功能越来越强,开发者可以根据实际情况建立多个有限状态机,结合时间片轮巡法,可编写出类操作系统的程序架构。

4.通过有限状态机,将一个复杂任务划分成多个状态,可以使程序清晰易懂,便于维护。

三、有限状态机编程架构搭建

1.主程序结构搭建

为使用时间片轮巡法,主程序通常只作初始化以及循环等待,并开启定时器产生一个5ms左右的中断,状态机的使用及切换都是在中断服务函数中来完成的。

2.中断程序结构搭建

中断程序中的状态机由主任务状态机和分任务状态机组成。每当程序进入中断后,主任务状态机首先根据上一任务标志位查询下一任务标志位,并且将任务标志位更新为下一任务标志位。

每一个任务都有一个独立的分任务状态机,程序根据更新的任务标志位进入对应的分任务状态机,每个模块的功能都将在分任务状态机中实现。进入分任务状态机后,分任务状态机根据上一分任务标志位判断是否满足进入下一分任务的条件。若满足,则立即进入下一分任务状态;若不满足,则在上一任务等待或根据需要跳转到其他任务状态。

四、结语

在单片机编程中使用有限状态机,基本可以解决程序的实时性处理、高效运行等问题,使程序执行时间与一般的判断语句相比至少减少了一半.并且编写思路更加清晰、编写过程更加简单、可修改性更强,是编写大型程序的较为有效方法之一。

参考文献

[1]郭兆正,于鹏,于震.基于有限状态机建模的单片机编程方法研究 [J].渤海大学学报(自然科学版 ),2016(03).

[2]雷贵.有限状态机在单片机编程中的应用[J].现代商贸工业,2013(22)

论文作者:章泽东 章昕熠 方丹青

论文发表刊物:《知识-力量》2019年2月上

论文发表时间:2018/12/11

标签:;  ;  ;  ;  ;  ;  ;  ;  

基于有限状态机的单片机编程设计的研究论文_章泽东 章昕熠 方丹青
下载Doc文档

猜你喜欢