论状态机与模块化--深圳市新元素邓林生一、状态机与单片机编程状态机在单片机编程中是一个新兴名词,很多老鸟都号称自己编的程序是状态机
那么,状态机到底是什么
网上搜索一下,对它的定义一大把,有我看得懂的,也有我看不懂的,我们这里不深究它的定义,知道怎么用它就行了
简单地说,状态机又称之为有限状态机,状态机系统有N个(有限个)状态,任一时刻,系统都工作于其中的一个状态,当有输入(激励)时,系统执行某些动作,并切换到下一状态
听起来似懂非懂的,但是这跟我们的程序又有神马关系呢
广义地说,任何一个程序都是一个状态机,因为它总是要记住一些状态,然后根据输入进行输出
但是很显然地,我们现在要说的状态机不是指随随便便的一个程序,而是指某一类程序,也就是狭义上的状态机编程
我们知道,我们的单片机程序分成两类:带操作系统的、前后台的
就我们的采集器来说,前后台系统用得比较多,也就是大家常说的裸奔啦
前后台系统从系统构架上来说,可以分成两类:顺序机、状态机
顺序机就是最传统的前后台编程方式,其模型如下:SysInit();//系统初始化
PreStatus1();//前置状态1
PreStatus2();//前置状态2
……//前置状态3—N
While(1){Status1();//状态1
Status2();//状态2
……//状态3—N
}其中,任何一个状态的模型如下:PreHandler1();//前置处理1
PreHandler2();//前置处理2
……//前置处理3—N
While(1){Handler1();//处理1
Handler2();//处理2
……//处理3—N
}好像顺序机里面也很很多状态哦,但是,即使它有再多的状态,它也只能是一个顺序机,而不是状态机
顺序机依靠函数调用的位置来决定状态执行的前后顺序,一个状态执行完,下一个调用的函数就是下一个状态
顺序机的好处是思