软件所要完成的任务已在总体设计时规定,在具体软件设计时,要结合硬件结构,进一步明确软件所承担的一个个任务细节,确定具体实施的方法,合理分配资源。
1 程序设计技术
合理的软件结构是设计一个性能优良的单片机应用系统软件的基础。在程序设计中,应培养结构化程序设计风格,各功能程序实行模块化、子程序化。一般有以下两种设计方法。
a.模块程序设计
模块程序设计是单片机应用中常用的一种程序设计技术。它是把一个较长的程序分解为若干个功能相对独立的较小的程序模块,各个程序模块分别设计、编程和调试,最后由各个调试好的模块组成一个大的程序。
优点是单个功能明确的程序模块的设计和调试比较方便,容易完成,一个模块可以为多个程序所共享。其缺点是各个模块的连接有时有一定难度。
b.自顶向下的程序设计
自顶向下程序设计时,先从主程序开始设计,从属程序或子程序用符号来代替。主程序编好后再编制各从属程序和子程序,最后完成整个系统软件的设计。
优点是比较符合于人们的日常思维,设计、调试和连接同时按一个线索进行,程序错误可以较早的发现。缺点是上一级的程序错误将对整个程序产生影响,一处修改可能引起对整个程序的全面修改。
2 程序设计
在选择好软件结构和所采用的程序设计技术后,便可着手进行程序设计,将设计任务转化为具体的程序。
a.建立数学模型
根据设计任务,描述出各输入变量和各输出变量之间的数学关系,此过程即为建立数学模型。数学模型随系统任务的不同而不同,其正确度是系统性能好坏的决定性因素之一。
b.绘制程序流程图
通常在编写程序之前先绘制程序流程图,以提高软件设计的总体效率。程序流程图以简明直观的方式对任务进行描述,并很容易由此编写出程序,故对初学者来说尤为适用。 在设计过程中,先画出简单的功能性流程图(粗框图),然后对功能流程图进行细化和具体化,对存储器、寄存器、标志位等工作单元作具体的分配和说明,将功能流程图中每一个粗框的操作转变为具体的存储器单元、工作寄存器或I/O口的操作,从而给出详细的程序流程图(细框图)。
c.程序的编制
在完成程序流程图设计以后,便可以编写程序。程序设计语言对程序设计的影响较大。汇编语言是最为常用的单片机程序语言,用汇编语言编写程序代码精简,直接面向硬件电路进行设计,速度快,但进行大量数据运算时,编写难度将大大增加,不易阅读和调试。在有大量数据运算时可采用C语言(如MCS-51的C51)或PL/M语言。 编写程序时,应注意系统硬件资源的合理分配与使用,子程序的入/出口参数的设置与传递。采用合理的数据结构、控制算法,以满足系统要求的精度。
在存储空间分配时,应将使用频率最高的数据缓冲器设在内部RAM;标志应设置在片内RAM位操作区(20H~2FH)中;指定用户堆栈区,栈区的大小应留有余量;余下部分作为数据缓冲区。 在编写程序过程中,根据流程图逐条用符号指令来描述,即得汇编语言源程序。应按MCS-51汇编语言的标准符号和格式书写,在完成系统功能的同时应注意保证设计的可靠性,如数字滤波、软件陷阱、保护等。必要时可作若干功能性注释,提高程序的可读性。
3 程序设计
各程序模块编辑之后,需进行汇编或编译、调试,当满足设计要求后,将各程序模块按照软件结构设计的要求连接起来,即为软件装配,从而完成软件设计。在软件装配时,应注意软件接口。
|