单片机应用系统结构化程序设计方法与实现
第3l卷第1期2010年3月
内蒙古农业大学学报
of
Inner
Mongolia
Agricultural
University
V01.31No.1
Joumal
Mar.2010
单片机应用系统结构化程序设计方法与实现+
曲
辉,李海军,昊利斌,张海军
(内蒙古农业大学机电工程学院,呼和浩特010018)
摘要:本文提出了单片机应用系统结构化程序设计的基本思想、设计要求及特点,分析了结构化程序模块的3种基本程序结构,并结合MCS一51系列单片机指令系统给出了实现方法,阐述了单片机应用系统结构化程序设计的具体方法、步骤、设计要求及设计中要注意的问题。
关键词:单片机;结构化程序设计;功能模块;中图分类号:TP273
文献标识码:A
算法
文章编号:1009—3575(2010)01-0158一04
THESTRUCTURIZATIONDESIGNPROGRAMMETHODAND
REALIZATlONINSINGLE—CHIPAPPLICATIONSYSTEMS
QU
(Mechanical
Hui,LI
Hai-jun,WU
Li—bin,ZHANG
Hai-jun
andElectricalEngineeringCollege,InnerMongoliaAgriculturalUniversity,Huhhot010018)
Abstract:Thispaperputsforwardthebasicthought,designrequirementsandcharacteristicofthestrueturizationdesignprograminSingle—chipapplicationsystems;ThreebasicProgramstructurizafionofstmeturizationProgrammodulewereanalyzed,andtherealiza-
tionmethodaccording
to
MCS-51single—chip
was
gived;Concretemethod,step,designrequirementsandattentiveproblemofthe
stmeturizationdesignprograminSingle—chipApplicationsystemswerestated.
Keywords:Single—chip;strueturizatlondesignprogram;functionmodule;algorithm
即自顶向下,采用模块化技术,分而治之,将复杂系
引言
目前,单片机的应用领域遍及各行各业,大到航
统按功能分解为若干模块进行分析与设计。模块是结构化编程的基本单位,计算方法(简称为算法)是程序设计的核心‘21,采用结构化程序设计可以有效地提高软件质量及程序运行的可靠性。
天飞机、导弹武器,小到家用电器、通信业、智能仪器仪表等领域,单片机都可以大显其能…。单片机应用系统软件设计质量是关系到系统功能、系统质量特性的关键因素,因此采用合理的结构化程序设计方法尤为重要。
结构化程序设计方法的基本思想是:从代表目标系统整体功能的单个处理着手,自顶向下不断地把复杂的处理分解为子处理,这样一层一层地分解下去,直到仅剩下若干个容易实现的子处理为止。
1
结构化程序设计要求及特点
结构化程序设计要求:程序组成结构化、功能模
块化、运行流程化,三者是相辅相成的。①程序组成结构化要求各个程序模块均由3种基本类型的算法结构组成,即顺序结构、分支选择结构和循环结构。②功能模块化设计主要是开发可重用、可移植的标
・
收稿日期:2,009—12—15
作者简介:曲辉(1975一).女.讲师,从事农业电气化与自动化教学的研究.
万方数据
第1期
曲辉等:单片机应用系统结构化程序设计方法与实现
159
准功能程序模块,以简化程序设计,提高软件复用率,从而有效降低错误发生的几率。可以将处理特定任务的模块程序设计成子程序或中断服务子程
序,各个功能模块具有确定功能,处理特定任务,解
决专门问题。③运行流程化设计主要是为了明确构
成整个程序的各个模块之间的上下级关系,着重于
软件的框架结构设计和处理各部分、各模块之间的
相互关系。可以按照总体规划,由若干软件设计人员分别编程设计各功能模块,再依据软件结构和程序流程,由若干功能模块组成结构化程序,实现应用程序整体功能,解决复杂的实际问题[3J。
结构化程序具有结构清晰、逻辑性强、易于维
护、便于共享、运行稳定、可靠性高等特点。按照结构化程序设计要求编程,有助于规范软件设计人员
的编程工作,提高软件设计人员的编程效率和编程
水平。3种基本程序结构及实现方法
在程序设计中,设计人员可能会遇到各种各样
繁杂的程序,但不论程序如何复杂,它们都可以像堆积木一样由基本程序结构组合而成[‘】。这些基本结构包括:顺序结构、分支选择结构、循环结构,由这3种基本结构组成的功能模块,能实现各种程序算法,顺序结构
顺序结构程序是指1种元分支的直线程序,即军军
卤
卤
图1逐条顺序结构
图2逐段顺序结构
Fig.1itemsequencemlxlctum
Fig.2
section∞啡啾structure
万方数据
2.2分支选择结构
在分支选择结构程序中,CPU执行转移指令,依
据条件(或转移目的地址)执行对应分支程序段。分
支选择结构分为二分支选择结构和多分支选择结构。
2.2.1
二分支选择结构在二分支选择结构程序
中,CPU执行条件转移指令,判断转移条件(条件可以是累加器的内容是否为零,两数是否相等,以及测试状态标志或位标志等等),当条件满足时,CPU执行程序段l;当条件不满足时,CPU执行程序段2,实现了二分支选择功能。条件转移类指令(MCS一51
系列单片机指令系统中,有Jz、州z、JC、JNC、JB、JNB
指令等)、比较不相等转移指令(CJNE指令)均可作为条件判断指令。二分支选择结构如图3所示。
图3二分支选择结构
Fig.3partialdichotomyselective
structure
2.2.2
多分支选择结构在多分支选择结构程序
中,CPU执行问接转移指令(JMP@A+DPTR),计算多分支转移目标地址,依据多分支转移目标地址,CPU执行对应分支程序段,实现了多分支选择功能。
2.3
循环结构
在循环结构程序中,CPU执行条件转移指令,依据条件决定是否继续执行循环体。循环结构分为当
型循环结构和直到型循环结构两种,下面分别介绍。
2.3.1
当型循环结构在当型循环结构程序中,
CPU首先执行条件转移指令,判断循环条件。当循
环条件满足时,CPU继续执行循环体程序;当循环条
件不满足时,CPU退出循环结构程序,接着执行后续
程序。当型循环结构如图4所示。
2.3.2
直到型循环结构在直到型循环结构程序
中,CPU首先执行循环体程序,再执行条件转移指令,判断循环条件。MCS一51系列单片机可使用循
环转移指令(DJNz指令)对循环次数减l,判断循环
次数是否为0,当循环结束的条件不满足时,CPU继
2
解决复杂实际问题。
2.1
按先后顺序,CPU逐条执行指令或逐段执行程序段。顺序结构分为逐条顺序结构和逐段顺序结构2种。逐条顺序结构如图1所示,逐段顺序结构如图2所示。
160
内蒙古农续执行循环体程序;当循环结束的条件满足时,CPU退出循环结构程序,接着执行后续程序。直到型循环结构如图5所示‘51。
图4当型循环结构图5直到型循环结构
Fig.4whencirculatory
Fig.5untilcirculatory
structure
structure
3
结构化程序设计过程
3.1任务确定
根据系统软、硬件的功能分工,确定出软件应完成什么功能。作为实现控制功能的软件应明确控制对象、控制信号及控制时序;作为实现处理功能的软件应明确输入是什么、要做什么样的处理(即处理算法)、产生何种输出。并针对可能出现的由干扰引起的错误进行容错设计,给出错误处理方案,以达到提高软件可靠性的目的,比如1种最简单的错误处理就是软件引导重新启动系统∞】。明确所设计的用户程序应达到的精度、速度指标,比如程序中数据字长选择几位,每段程序及整个程序的运行时间是多少。对于过程控制,速度指标是主要的;对于事务处理,精度指标显得更加重要。
经过全面、深入、准确地分析所要解决的实际问题,搞清实际问题所涉及的应用环境、应用对象、应用过程、应用要求,从整体上得出结构化程序设计所要达到的目标及系统所要实现的功能、完成的具体任务、产品的形式,并对开发研制的必要性及可实现性给出明确的结论,最后形成需求及可行性分析报系统方案设计是系统实现的基础主要内容包括:①制订出单片机结构化程序设计的总体规划。总体规划中应确定设计原则、设计目标、设计任务、万方数据
业大学学报
2010免
程设计和通信协议设计等。3.3确定算法,建立模型
系统方案设计确定了软件结构的所有功能模块,某些功能模块涉及处理复杂实际问题,对复杂实际问题找出合理的计算方法并建立数学模型,为后续算法设计提供依据。
设计时,有时可能有几种不同的算法,在编写程序之前,先要对不同的算法进行分析、比较,找出最适宜的算法"】。建立的数学模型应明确功能模块的输入数据、暂存数据、输出数据、数据关系等。对于
单片机结构化程序设计,应统筹规划内部RAM、确定数据类型、定义程序变量、合理分配存储单元,为后续算法设计打好基础。
3.4
算法设计
在建立了特定功能模块的数学模型、规划了特
定功能模块的数据结构之后,应对数学模型进行结
构化算法设计,结构化算法设计的原则如下:(1)自顶向下、逐步求精。基于需求分析制订出总体规划,依据总体规划完成总体设计,按照总体设计自顶向下对总任务逐层分解细化,直到每个子任务仅处理1个特定问题。(2)模块化设计。实际操作中,模块划分的好坏,直接影响实时监控程序对模块的管理效率。模块不宜过长,功能要相对独立旧J。(3)模块功能化设计。每个功能模块仅处理1个特定子任务;功能模块由顺序、分支选择和循环3种基本结构组成;功能模块可独立编程、独立编译、独立调试;功能模块可被上层功能模块调用。3.5编写程序
按照总体结构规划,对软件结构中各层功能模块应分别进行编程。首先对建有数学模型、设有算法的功能模块绘制程序流程图。通常实时监控程序依据调度算法编写流程图;控制模块依据控制时序编写流程图;处理模块依据处理算法编写流程图;抗干扰模块依据抗干扰措施(如滤波算法)或出错处理办法编写流程图。在流程图编写时,要明确规定数据来源、流向及存储位置。
然后依据程序流程图所表示的算法和步骤编写程序,将所有程序流程图的每一步用相应的指令来实现,就得到了应用系统的全部程序。在这一步,设计人员应在掌握程序设计的基本方法和技巧的基础上,注意所编程序的可读性和正确性,并养成在程序的适当位置上加上注释的好习惯。告。
3.2系统方案设计
设计方式、设计进度和设计协作。②确定出单片机结构化程序设计的具体技术方案。包括系统性能设计、功能设计、工作原理设计、软件结构设计、程序流
3.6程序编译
第1期曲辉等:单片机应用系统结构化程序设计方法与实现
161
利用仿真开发调试工具软件,对各层功能模块
源程序分别编译,检查程序语法。若发现语法错误,应修改源程序重新编译,直到所有功能模块源程序
编译通过为止。然后基于总体设计,参照软件结构
图及程序流程图,将各层功能模块集成到一起,形成
一个完整应用程序,并进行统一编译。若发现语法
错误,应修改应用程序重新编译,直到应用程序编译通过为止。3.7程序调试
软件调试的一般方法是先独立后联机、先分块后组合、先单步后连续。
利用仿真开发调试工具软件,首先对各层功能模块分别进行调试,检查各功能模块的功能是否正确。若发现功能逻辑错误,应修改程序错误后再调试,直到所有功能模块调试通过为止[9】。然后对应用程序进行统调,检查应用程序的总体功能是否正确。若发现功能逻辑错误,应跟踪查找错误原因,确定引起错误的位置,修改程序错误后重新调试,直到应用程序调试通过为止。
单片机应用系统中的软件与硬件是密切相关、
相辅相成的,将两者完全孤立开来调试是不可能的。然而,并不是用户程序的全部都完全依赖于硬件,当软件对被测参数进行加工处理或作某项事务处理
时,往往与硬件无关,这样就形成与硬件无关和依赖于硬件的两大类用户程序块,这一戈4分工作在软件总体设计时就应充分的考虑。当与硬件无关程序块
全部调试完成且用户系统的硬件调试也已完成后,可将仿真器与主机、用户系统连接起来,进行系统联调。在系统联调中,先对依赖于硬件的程序块进行调试,调试成功后,再进行两大程序块的有机组合及总调试。3.8文档整理
应用程序调试通过后,应对应用程序进行测试,
测试通过后,应整理出应用程序的整套技术文档。
技术文档包括系统需求分析报告、可行性分析报告、
总体规划设计报告、源程序文件和使用说明等。
万方数据
4
结束语
综上所述,结构化编程的基本思想就是把大的
程序划分为若干个相对独立、功能简单的程序模块。
它以过程为中心,强调功能和模块化,通过一系列过程的调用和处理完成相应的任务n01。本文探讨了
单片机应用系统结构化程序设计相关问题,对于本文所述功能模块,软件设计人员应结合实际、准确理解、整体考虑、总体设计、按功能分层次设计好各层功能模块,最终编写出合理的、完成软件功能的程序及相应的软件设计说明书。参考文献:
[1]
周美娟,肖来胜.单片机技术及系统设计(M】.北京:清华大学出版社,2007.[2]
符于江.程序设计中结构化方法和面向对象方法的比较(J].电脑知识与技术,2008.21:451—452.[3]
贾庆忠,刘永善,刘藻珍.弹载嵌入武系统软件可靠性设计[J].微计算机信息,2007.23,9—2:12—14.[4]
胡学海.单片机原理及应用系统设计(M].北京:电子工业出版社。2005.[5]
张毅坤,陈善久,裘雪红.单片微型计算机原理及应用(M].西安:西安电子科技大学出版社,1998.[6]
丁健,张林.嵌入武系统软件抗干扰技术[J]合肥学院学报(自然科学版),2006.12,16—4:46-49.[7]
张毅刚,彭喜元,董继成.单片机原理及应用[M].北京:高等教育出版社,2003.[8]
AnointPA.DistributedAdaptableSoftwareArchitecture
DerivedFromComponentModel(J).Computer
Standards&Interfaces。Special
issueIAdaptable
Software
Arehitee—
turea,2003.
[9]
佥伟,黄晓民,李国臣,等.浅论虚拟实验室在单片机理论教学中的优势[J]现代农业科学,2008.12,15—
12:159—160.
[10][美]TammyNoergaard著,马洪兵,谷源涛译.嵌入式系统硬件与软件架构(M).北京:人民邮电出版社,
2008.
单片机应用系统结构化程序设计方法与实现
作者:作者单位:刊名:英文刊名:年,卷(期):
曲辉, 李海军, 吴利斌, 张海军, QU Hui, LI Hai-jun, WU Li-bin, ZHANG Hai-jun
内蒙古农业大学机电工程学院,呼和浩特,010015
内蒙古农业大学学报(自然科学版)
JOURNAL OF INNER MONGOLIA AGRICULTURAL UNIVERSITY(NATURAL SCIENCE EDITION)2010,31(1)
参考文献(10条)
1.金伟;黄晓民;李国臣 浅论虚拟实验室在单片机理论教学中的优势 2008
2.Anoint P A Distributed Adaptable Software Architecture Derived From Component Model 20033.张毅刚;彭喜元;董继成 单片机原理及应用 2003
4.Tammy Noergaard;马洪兵;谷源涛 嵌入式系统硬件与软件架构 20085.丁健;张林 嵌入武系统软件抗干扰技术 2006
6.张毅坤;陈善久;裘雪红 单片微型计算机原理及应用 19987.胡学海 单片机原理及应用系统设计 2005
8.贾庆忠;刘永善;刘藻珍 弹载嵌入式系统软件可靠性设计[期刊论文]-微计算机信息 2007(26)9.符于江 程序设计中结构化方法和面向对象方法的比较[期刊论文]-电脑知识与技术 2008(21)10.周美娟;肖来胜 单片机技术及系统设计 2007
本文链接:http://d.g.wanfangdata.com.cn/Periodical_nmgnydxxb201001031.aspx