您现在正在浏览:首页 > 职教文章 > 职教论文 > 单片机程序的状态机模型

单片机程序的状态机模型

日期: 2012/1/14 浏览: 5 来源: 学海网收集整理 作者: 佚名

  收稿日期 :2004 - 02 - 11

作者简介 :管庶安(1956 - ) ,男 ,湖北省武汉市人 ,副教授。

文章编号 :1009 - 4881 (2004) 02 - 0001 - 02

单片机程序的状态机模型

管庶安

(武汉工业学院 计算机与信息工程系 ,湖北 武汉 430023)

摘  要 :为单片机程序建立状态机模型 ,研究用此模型描述程序行为的完整性 ,讨论此模型的

源代码实现方式。

关键词 :单片机程序 ; 状态集 ; 事件集 ; 输出集 ; 状态机 ; 代码实现

中图分类号 : TP 315. 1       文献标识码 :A

0  引言

由于没有操作系统的支持 ,设计一个较为复杂

的单片机实用程序 ,尤其是汇编程序 ,如果采用面向

过程的方法 ,必然会引入大量的标志位 ,以实现各个

模块之间的联系。随之而来的是将会出现大量、多

层的判断、转移语句 ,以控制程序的走向。可以说程

序的流向在很大程度上由大量的标志位来控制 ,而

众多的标志位之间往往处于一种离散状态 ,程序员

不得不花费大量的精力来协调各标志位 ,导致程序

的可读性变差。面向过程的方法要求程序跟随过程

走 ,直至该过程完成。因而很难满足多个过程并发

执行的实时性。本文从宏观上考察一个单片机程序 ,

用一个状态机描述其行为。基于状态机的严谨和科

学性 ,使程序的规划上升到全局的、系统的层次 ,符

合“自顶向下 ,逐步求精”的原则。经作者大量实践

表明 ,这一方法从根本上统一和协调了大量离散的

标志位及其联系。因此 ,程序的可读性大大加强 ,易

于代码实现 ;有效地防止了某些重要细节的遗漏 ,便

于容错设计 ;显著地提高了程序的可靠性。

1  程序的状态机模型

定义 1  设一个运行中的程序可能处于的状态有

l 个,记为 S [0] , S [1] , ?S [ l ]。定义状态集 S 为 :

S = { S [ i ]| i = 0 ?l } 。

程序运行时 ,在实时事件的触发下 ,将从某一状

态转移到另一状态。容易证明 :没有触发 ,就不会发

生状态转移。因为一个不接受、处理实时事件的程

序是毫无意义的。

定义 2  设全部实时事件共有 m 个 , 记为

ε[0 ] , ε[1 ] , ?ε[ m ] 。定义事件集 E 为 :

E = {ε[ j ]| j = 0 ?m} 。

当状态转移发生时 ,可能需要执行某一动作 ,称

为输出。输出是程序设计的目的所在。

定义 3  设全部输出有 n 个 , 记为 P [ 0 ] ,

P[1 ] , ?P[ n ] 。特别地 ,定义 P[0 ]为空输出 ,即

不执行任何动作。定义输出集 P 为 :

P = { P[ k ]| k = 0 ?n } 。

考虑 S、E、P 的笛卡尔积 D :

D = S ×E ×P = { D [ x ]| D [ x ] = ( S [ i ] ,

ε[ j ] , P[ k ]) , i = 0 ?l , j = 0 ?m , k = 0 ?n }

D[ x ]表明 ,在当前状态 S [ i ]下 ,若发生事件

ε[ j ] ,程序应该执行输出 P[ k ] 。

定义 4  状态机 M 的定义 :状态机为由 D 到 S

的一个关系 ,记为 M :

M AD ×S ;

若元素 M′∈M , D′∈D , S′∈S ,则 M′= ( D′,

S′) = ( ( S [ i ] , ε[ j ] , P[ k ]) , S′) 表示 :在当前

状态 S [ i ]下 , 若发生事件ε[ j ] , 程序执行输出

P[ k ]后转移到新状态 S′。

基于笛卡尔积 D 的完整性 ,一个实际程序的任

何行为都可以作为集合 M 中的元素加以收集。因

此 ,状态机 M 可以完整地描述一个程序的行为。

状态机 M 可以用状态图直观地加以描述。图

第 23 卷第 2 期

2004 年 6 月

武  汉  工  业  学  院  学  报

Journal  of  Wuhan  Polytechnic  University

Vol. 23No. 2

Jun. 2004

1 描述了一个具有 4 个状态 , 3 个实时事件 , 4 个执

行动作的程序的状态机 ,其中 P[0 ]为无动作。从图

中可以看出 ,当处于 S [0 ]状态时 ,仅响应事件ε[2 ]

的触发、执行动作 P[3 ] 、并转到状态 S [1 ] ;在任何

状态下 , 如果有事件 ε[ 0 ]触发 , 一律转到状态 S

[0 ] ,等等。图中ε后的方括号中如出现用逗号分隔

的几个数字 ,表示发生对应的事件之一。

图 1  用状态图描述状态机

2  构建程序的数据结构

2. 1  状态机的主、子结构

如果一个程序较复杂 ,势必涉及到较多的状态 ,

这会导致集合 D 中的元素急剧增加。解决这一问

题的策略是 ,如有需要 ,则某一状态为一子状态机 ,

按树型结构组织主、子状态机 ,如图 2 所示。

图 2  状态机的树型结构

2. 2  实时事件集合 E 的组织与访问

对于运行的程序而言 ,事件具有突发性。事件的

采集方式有硬件中断和定时查询。硬件中断有外部

中断、定时器中断、串行通信中断 ;定时查询用于捕捉

非硬件中断方式输入的事件 ,它以一个定时器作为时

间基准 ,等间隔采样输入事件。由于定时器也按中断

方式工作 ,从而保证了采集事件的实时性。事件集合

E 的存储结构为 FIFO 队列。根据事件的紧急程度建

立优先级别不同的多个队列 ,仅当优先级较高的队列

为空时才访问优先级较低的队列。

3  基于状态机的单片机程序实现

实质上 ,基于状态机的单片机程序设计方法 ,是

一种面向数据的方法。状态和事件都是用数据的形

式表示的 ,这些数据的取值决定了程序的走向。

主程序的任务是不停地监视事件队列 ,一旦非

空 ,应立即调用相应事件的处理子程序。该事件处

理完毕 , 令 其 出 队 , 再 转 入 主 程 序 的 入 口 点 , 用

MCS51 汇编语言的形式描述如下 :

 MAIN :    MOV  A ,事件队列的头部元素

CJNE  A ,空 ,EVEN T 0

SJ MP  MAIN

 EVEN T 0 : CJNE  A , # EVEN T 0 , EVEN T

1

LCALL  处理事件 0

SJ MP  EVEN T-QU IT

 EVEN T 1 : CJNE  A , # EVENT 1 ,EVENT 2

LCALL  处理事件 1

SJ MP  EVEN T-QU IT

 EVEN T 2 : ?

 EVEN T-QU IT : 事件队列的头部元素出队

 SJ MP  MAIN

在各事件处理子程序中 ,应判断当前所处的状

态 ,并结合本事件确定当前要执行的动作 ,调用相应

的动作执行子程序。再根据状态机所示 ,把当前状

态修改为新状态 ,完成状态的转移。下面是事件 X

的处理子程序 :

DO- EVENT- X: MOV  A ,当前状态

CJNE A , # STATE 0 ,IS- STATE 1

LCALL  事件 X、状态 0 时的操作

SJMP  DONE

IS- STATE 1 : CJNE  A , # STATE 1 ,IS- STATE 2

LCALL  事件 X、状态 1 时的操作

SJMP  DONE

IS- STATE2 : ?

DONE : RET

关于事件的采集、分类入队 ,都是在中断服务程

序中进行的 ,主程序和各事件处理子程序中毋需

关心。

参考文献 :

[1 ]  乔维声. 离散数学[ M ]. 西安 :西安电子科技大

学出版社 ,1999.

[2 ]  邓良松 ,刘海岩 ,陆丽娜. 软件工程 [ M ]. 西

安 :西安电子科技大学出版社 ,2002.

(下转第 9 页)

2 武  汉  工  业  学  院  学  报 2004 年

图 3  初始化流程

5  结论

上述在介绍 TMS320C6000 系列基本性能基础

上 ,详细分析了其 SPI 接口通信原理 ,并给出了 C6000

初始化流程图及程序供读者参考。该方案在不具有

SPI 接口的单片机组成的智能化仪表和测控系统中 ,

对于速度要求不高、掉电后保存少量系统参数和低功

耗的场合 ,使用 SPI 总线 ,无疑会增加应用系统接口

器件的种类 ,增强应用系统的性能。

参考文献 :

[1 ]  李方慧. TMS3206000 系列 DSPS 原理与应用

[ M ]. 北京 :电子工业出版社 ,2003. 411 - 436.

[2 ]  李哲英. DSP 基础理论与应用技术[ M ]. 北京 :

北京航空航天大学出版社 ,2002. 123 - 146.

[3 ]  张雄伟. DSP 芯片的原理与开发应用[ M ]. 北

京 :电子工业出版社 ,2000. 15 - 30.

THE DESIGN Of ASYNCHRONOUS SERIAL

COMMUNICATION FOR TMS 320C6000

CHEN Ming - yi

(Department of Electrical and Information Engineering , Wuhan Polytechnic University ,Wuhan 430023 ,China)

Abstract : The characteristics of TMS320c6000 device is introduced ,communictionsprinciple of its SPI module is

analysed , examples of interface circuit are given , and the cofiguration program of McBSP is presented.

Keywords :SPI ; TMS320C6000 ;DSP ;McBSP(Multi - channel Buffered Serial Port)

(上接第 2 页)

THE STATE MACHINE MODEL FOR

MICROCONTROLLER PROGRAMMING

GUA N S hu - an

(Department of Computer and Information Engineering ,Wuhan Polytechnic University ,Wuhan 430023 ,China)

Abstract : Through the establishment of the model of the state machine for microcontroller programming ,this

paper researches on the maturity of the description of the characteristic of the program behavior with this model

and its realization in the form of source code.

Key Words : microcontroller programming ; state set ; event set ; output set ; state machine ; source code

realization

92 期 陈明意 : TMS320C6000 系列 DSP 串行通信接口设计


单片机程序的状态机模型.pdf

返回顶部