在进行应用系统的总体设计时,软件设计和硬件设计应统一考虑,相结合进行。当系统的电路设计定型后,软件的任务也就明确了 ,系统中的软件是根据系统功能要求设计的。
一般地讲,软件的功能可分为两大类。一类是执行软件,它能完成各种实质性的功能,如测量,计算,显示,打印,输出控制等;另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度角色。由于应用系统种类繁多,程序编制者风格不一,因此应用软件因系统而异。尽管如此,作为优秀的系统软件还是有其共同特点和其规律的。设计人员在进行程序设计时应从以下几个方面加以考虑:
根据软件功能要求,将系统软件分成若干个相对独立的部分,根据它们之间的联系和时间上的关系,设计出合理的软件总体结构,使其清晰,简洁,流程合理。培养结构化程序设计风格,各功能程序实行模块化,子程序化。既便于调试,连接,又便于移植,修改。
建立正确的数学模型。即根据功能要求,描述出各个输入和输出变量之间的数学关系,它是关系到系统性功能好坏的重要因素。
为提高软件设计的总体效率,以简明,直观的方法对任务进行描述,在编写应用软件之前,应绘制出程序流程图。这不仅是程序设计的一个重要组成部分,而且是决定成败的关键部分。从某种意义上讲,多花一份时间来设计程序流程图,就可节约几倍源程序编译调试时间。
要合理分配系统资源,包括ROM,RAM,定时器/计数器,中断源等。其中最关键的是片内RAM分配。对8031来讲,片内RAM指00H-7FH单元,这128个字节的功能不完全相同,分配时应充分发挥其特长,做到物尽其用。
例如:在工作寄存器的8个单元中,R0和R1具有指针功能,是编程的重要角色,避免作为它用,20H—2FH这16个具有寻址功能,用来存放各种标志位。逻辑变量,状态变量等。
设置堆栈区时应事先估算出子程序和中断嵌套的级数及程序中堆栈操作指令使用情况,其大小应留有余量。若系统扩展了RAM存储器,应把使用频率最高的数据缓冲器安排在片内RAM中,以提高处理速度,当RAM资源规划好后,应列出一张RAM资源详细分配表,以备编程查用方便。注意在程序的有关位置处写上功能注 释,提高程序的可读性。
加强软件抗干扰设计,它是提高计算机应用系统可靠性的有力措施。
通过编辑软件编辑出的原程序,必须用编译程序汇编后生成目标代码。如果原程序有语法错误则返回编译过程,修改原文件再继续编译,直到无语法错误为止。这之后就是利用目标码进行程序调试了,在运行中发现设计上的错误再重新修改源程序,如此反复直到成功。
一个单片机应用系统经过总体设计,硬件设计,软件设计,制板,元器件安装后,在系统的程序存储器中放入编制好的应用程序,系统即可运行。但一次性成功几乎是不可能的,多少会出现一些硬件,软件上的错误。这就需要通过调试来发现错误并加以改正。由于单片机在执行程序时是无法控制的,为了能调试程序,检查硬件,软件运行状态,就必须借助某种开发工具模拟用户实际的单片机,并且能随时观察运行的中间过程而不改变运行中原有的数据性能和结果,从而进行模仿现场的真实调试。完成这一模仿工作的开发工具就是单片机仿真器。