近年来,PC机作为通用机型,基于底层结构的控制系统设计、汇编语言的编程等优势逐渐让位于单片机;另一方面,单片机的技术和性能不断提高,其开发手段、控制功能等功能不断完善,单片机更适于面向控制对象的设计和编程,从单片机入手学习微型计算机原理,正在逐步成为学习计算机原理的更好途径。
1.1.4微型计算机的软件系统
只有硬件构成的计算机也称为裸机,没有系统程序的支持,裸机是无法工作的。例如常见的PC机,使用时必须首先开机进入系统,执行系统程序,包括开机存储器自检、接口自检、外设自检等,这些功能没有程序的运行是无法完成的。开机过程结束后,才能接受用户通过键盘或者鼠标发出的命令,进一步执行用户要执行的程序。用户的程序一般事先放在硬盘里,硬盘是程序存储器,在断电状态下,保存在里面的程序和数据等信息不会丢失,只是在需要运行的时候,系统程序将需要执行的程序从硬盘里面找到,放进内存,然后才运行用户的程序。内存是数据存储器,在断电状态下,不能保存里面的信息,所以在用户程序运行或者修改结束后,需要关闭用户程序时,系统程序会将内存中的信息重新写回到硬盘中保存。
同样,对于单片机而言,没有软件的支持,单片机也不能完成控制和检测任务。在单片机应用系统中,可以有操作系统(此时一般称为嵌入式操作系统)的支持,也可以没有操作系统的支持。无论有没有操作系统,用户所编写的应用程序经过编译后都保存在程序存储器中(目前,一般都保存在单片机内部集成的Flash存储器中),执行时,由单片机内部的控制器控制程序的执行。
对于普通的个人计算机来讲,用户的开发任务主要集中在程序设计方面,硬件设计较少。开发应用系统时,一般采用可视化的集成开发环境,常见的有Visual C++,Eclipse,Net Beans,Power Builder等。
用户在开发单片机应用系统的过程中,往往需要对硬件和软件进行反复多次的调试。调试时,使用集成开发环境对用户系统进行仿真运行,根据系统的仿真运行状态对电路进行硬件和软件的修改调试,直到满足用户要求为止。对硬件电路来说,某些硬件电路的设计缺陷可以在仿真调试中发现并改正;对软件来说,可以进行某些程序模块的编写和调试,特别是可以对那些与硬件关系不大的程序模块进行模拟调试,这对系统的开发带来了很大的方便,可以加快项目的开发过程,如数据运算、逻辑关系测试等。目前,许多集成开发环境具有模拟调试功能,如**的Keil u Vision集成环境、飞思卡尔公司的CodeWarrior、IAR Systems公司的IAR集成开发环境等。
具有仿真调试功能的集成开发环境种类繁多,程序设计人员的编程风格也不尽相同,应用程序的设计因系统而异,因人而异。尽管如此,**的应用程序还是有其共同特点和规律的。设计人员在进行程序设计时应考虑以下几个方面:
①模块化、结构化的程序设计。根据系统功能要求,将软件分成若干个相对独立的模块,实现各功能程序的模块化、子程序化。根据模块之间的联系和时间上的关系,设计出合理的软件总体结构,使其清晰、简洁、流程合理。这样,既便于调试,又便于移植、修改。
……