4.1.2 编写程序的方法和技巧

4.1.2 编写程序的方法和技巧

1.采用模块化程序设计方法

模块化程序设计是指在进行程序设计时,将一个大程序按照功能划分为若干小程序模块,每个小程序模块完成一个确定的功能,并在这些模块之间建立必要的联系,通过模块的互相协作完成整个功能的程序设计方法。单片机应用系统的程序一般由包含多个模块的主程序和各种子程序组成,每个程序模块都要完成一个明确的任务,实现某个具体的功能,如发送、接收、打印、显示、延时等。采用模块化的程序设计方法,就是将这些具有具体功能的程序进行设计并分别调试,最后将这些模块程序组合成整体程序并进行联调。

一般说来,模块化程序设计应该遵循以下几个主要原则:

(1)模块要独立。模块的独立性原则表现在模块可以完成独立的功能,与其他模块的联系应该尽可能简单,各个模块具有相对的独立性。

(2)模块规模要适当。模块的规模不能太大,也不能太小。如果模块的功能太强,可读性就会较差;若模块的功能太弱,就会有很多的接口。要掌握合理的模块设计方法,需要通过较多的程序设计来积累经验。

(3)分解模块时要注意层次。在进行多层次任务分解时,要注意对问题进行抽象化。在分解初期,可以只考虑大的模块,在分解中期,再逐步进行细化,分解成较小的模块进行设计。

采用模块化程序设计方法,把一个多功能的复杂程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试和程序的优化和分工,可提高程序的阅读性和可靠性,使程序的结构层次一目了然。模块化的程序设计方法是单片机应用系统程序设计的重要方法。

2.使用高效的程序结构

顺序结构是最简单的程序结构,也是最常用的程序结构,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。但是顺序结构只适用于功能简单的程序,如果程序要实现的功能比较复杂,顺序结构的程序往往无法胜任。这时,我们就要用到分支程序结构、循环程序结构和子程序结构。

(1)分支程序结构

顺序结构的程序的是按照指令在程序存储器中存放的顺序执行的,顺序结构的程序能够按照指令的先后顺序依次实现输入、输出和计算等功能,但不能按照不同的条件选择实现不同的功能,即不能先做判断再做选择。对于要先做判断再选择的问题要使用分支程序结构。分支程序结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支程序结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支程序结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做可以把程序设计分析与语言分开,使得问题简单化,易于理解。分支程序结构可以分成单分支、双分支和多分支等几种情况。

(2)循环程序结构

在程序设计中,经常需要控制一部分指令重复执行若干次,以便用简短的程序完成大量的处理任务,这种按某种控制规律重复执行的程序称为循环程序。循环程序结构是指在程序中需要反复执行某个功能而设置的一种程序结构,它包含三个要素:循环变量、循环体和循环终止条件。循环终止条件被用来判断是否继续执行循环。根据判断条件,循环结构又可细分为以下两种形式:先判断后执行的循环结构和先执行后判断的循环结构。使用循环结构不仅可以缩短程序长度,减少程序所占用的内存单元,而且可以使程序结构更加紧凑,可读性更强。

(3)子程序结构

在实际应用中,常常将那些需要多次使用、完成相同的运算或操作功能的程序段从整个程序中独立出来,单独编成一个程序段,需要时可以调用这些程序段,这样的程序称为子程序。主程序在执行过程中如果需要使用某一子程序,可以通过调用指令来调用该子程序,子程序执行完后又返回到主程序,继续执行后面的程序段。利用子程序可以使程序结构更加紧凑和简洁,使程序的阅读和调试更加方便。为了进一步简化程序,可以让子程序调用另一个子程序,这种程序结构称为子程序嵌套。

采用分支程序结构、循环程序结构和子程序结构可以缩短程序长度,减小内存空间的占用,并使程序结构清晰简洁。