理论教育 软件设计:化整为零,单片机应用汇编语言

软件设计:化整为零,单片机应用汇编语言

时间:2023-11-05 理论教育 版权反馈
【摘要】:答案是否定的,在这种情况下一般都需把程序分成若干个功能独立的模块,这也是软件设计中常用的方法,即俗称的化整为零的方法。值得一提的是,现行大多数的单片机都具有查表指令,这给软件设计提供了技术支持。过去单片机应用软件以汇编语言为主,因为它简洁、直观、紧凑,使设计人员乐于接受。

软件设计:化整为零,单片机应用汇编语言

1.系统资源

单片机应用系统的开发中,软件的设计是最复杂和困难的,大部分情况下工作量都较大,特别是对那些控制系统比较复杂的情况。如果是机电一体化的设计人员,往往需要同时考虑单片机的软硬件资源分配。在考虑一个应用工程项目时就需要先分析该系统完成的任务,明确软硬件哪个承担哪些工作。实际上这种情况很多,比如一些任务可以用软件完成,也可以用硬件完成,此时还需考虑采用软件或硬件的优势,一般均以最优的方案为首选,定义各输入输出(I/O)的功能、数据的传输交换形式、与外部设备接口及它们的地址分配、程序存储器和数据存储器的使用区域、主程序和子程序使用的空间、显示(如有的话)等数据暂存区的选择、堆栈区的开辟等因素。

2.程序结构

一个优秀的单片机程序设计人员,设计的软件程序结构是合理、紧凑和高效的。同一任务,有时用主程序完成是合理的,但有时需子程序执行效率更高,占用CPU资源最少。对一些要求不高的中断任务或单片机的速度足够高,则可以使用程序扫描查询,也可以用中断申请执行,这也要具体的问题具体分析。对于多中断系统,当它们存在矛盾时,需区分轻重缓急、主要和次要,区别对待,并适当地给予不同的中断优先级别。

在单片机的软件设计中,任务可能很多,程序量很大,是否就意味着程序也按部就班地编写下去呢?答案是否定的,在这种情况下一般都需把程序分成若干个功能独立的模块,这也是软件设计中常用的方法,即俗称的化整为零的方法。理论和实践都证明,这种方法是行之有效的。这样可以分阶段地对单个模块进行设计和调试,一般情况下单个模块利用仿真工具即可调试好,最后再将它们有机地联系起来,构成一个完整的控制程序,并对它们进行联合调试即可。

对于复杂的多任务实时控制系统,要处理的数据非常庞大,同时又要求对多个控制对象进行实时控制,要求对各控制对象的实时数据进行快速的处理和响应,这对系统的实时性、并行性提出了更高的要求。这种情况下一般要求采用实时任务操作系统。并要求这个系统具备优良的实时控制能力。

3.数学模型

一个控制系统的研制,明确了各部分需要完成的任务后,此时摆在设计人员面前的就是需要协调解决的问题了。这时设计人员必须进一步分析各输入输出变量的数学关系,即建立数学模型。这个步骤对一般较复杂的控制系统是必不可少的,而且不同的控制系统,它们的数学模型也不尽相同。

在很多控制系统中,都需要对外部的数据进行采集取样、处理加工、补偿校正和控制输出。外部数据可能是数字量也可能是模拟量。对于输入模拟量时,通过传感器件进行采样,由单片机进行分析处理后输出。输出的方式很多,可以显示、打印或终端控制。从模拟量的采样到输出的诸多环节,这些信号都可能会失真,即产生非线性误差,这些都需要单片机进行补偿、校正,才能保证输出量达到所要求的误差范围。(www.daowen.com)

现阶段8位单片机仍是主流。对于复杂参数的计算,例如,非线性数据、对数、指数、三角函数、微积分运算,如使用PC机(32位)的软件编程相对简单,并且具有大量的应用软件可以利用。但单片机要用汇编语言完成这样的运算,程序结构是很复杂的,程序编写也较困难,甚至难以建立数学模型,解决这个问题,常用的方法多采用查表法去实现。查表法即事先将测试和计算的数据按一定规律编制成表格,并存于存储器中,CPU根据被测参数值和近似值查出最终所需的结果。查表法是一种行之有效的方法,它可对输入参数进行补偿校正、计算和转换,程序编制简单,是将复杂的数值运算简化为简单的数据输出的好办法,常被设计人员采用。

值得一提的是,现行大多数的单片机都具有查表指令,这给软件设计提供了技术支持。

4.程序流程

较复杂的控制系统一般都需要绘制一份程序流程图,可以说它是程序编制的纲领性文件,可以有效地指导程序的编写。当然,程序设计开始流程图不可能尽善尽美,在编制过程中仍需进行修改和完善。认真地绘制程序流程图,可以起到事半功倍的效果。

流程图就是根据系统功能的要求及操作过程,列出主要的各功能模块。复杂程序流向多变,需要在初始化时设置各种标志,根据这些标志控制程序的流向。当系统中各功能模块的状态改变时,只需修改相应的标志即可,无需具体地管理状态变化对其他模块的影响。这些需要在绘制流程图时,清晰地标识出程序流程中各标志的功能。

5.编制程序

上述的工作完成后,就可以开始编制程序了。程序编写时,首先需对用到的参数进行定义,与标号的定义一样,使用的字符必须易于理解,可以使用英文单词汉语拼音的缩写形式,这对今后自己的辨读和排错都是有好处的。然后初始化各特殊功能寄存器的状态,定义中断口的地址区,安排数据存储区,根据系统的具体情况,估算中断、子程序的使用情况,预留出堆栈区和需要的数据缓存区,接下来就可以编写程序了。

过去单片机应用软件以汇编语言为主,因为它简洁、直观、紧凑,使设计人员乐于接受。而现在高级语言在单片机应用软件设计中发挥了越来越重要的角色,性能也越来越好,C语言已成为现代单片机应用系统开发中效常用的高级语言。但不管使用何种语言,最终还是需要翻译成机器语言,调试正常后,通过烧录器固化到单片机或片外程序存储器中。至此,程序编写即告完成。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈