首页 理论教育 单片机系统软件设计-基于汇编与C语言的单片机原理及应用

单片机系统软件设计-基于汇编与C语言的单片机原理及应用

时间:2023-10-23 理论教育 版权反馈
【摘要】:对于大多数简单的计算机硬件应用系统,通常采用顺序设计方法,这种系统软件由主程序和若干个专用服务子程序所构成。中断服务程序对实时事件请求作必要的处理,使系统能实时地、并行地完成各个操作。因此,在执行中断服务程序时,必须对原有程序状态进行保护。

单片机系统软件设计-基于汇编与C语言的单片机原理及应用

1.软件结构设计

合理的软件结构是设计出一个性能优良的应用程序的基础。

对于大多数简单的计算机硬件应用系统,通常采用顺序设计方法,这种系统软件由主程序和若干个专用服务子程序所构成。而为了保证程序的实时性,大量的专用服务子程序中都涉及了中断程序的设计。根据系统各个操作的性质,制定哪些操作由中断服务程序完成,哪些操作由主程序完成,并制定各个中断的优先级

中断服务程序对实时事件请求作必要的处理,使系统能实时地、并行地完成各个操作。中断处理程序必须包括现场保护、中断服务、现场恢复、中断返回等4个部分。中断的发生是随机的,它可能在任意地方打断主程序的运行,无法预知这时主程序执行的状态。因此,在执行中断服务程序时,必须对原有程序状态进行保护。现场保护的内容应是中断服务程序所使用的有关资源(如PSW、ACC、DPTR等)。中断服务程序是中断处理程序的主体,它由中断所要完成的功能所确定,如输入输出一个数据等。现场恢复与现场保护相对应,恢复被保护的有关寄存器状态,中断返回使CPU回到被该中断所打断的地方继续执行原来的程序。主程序是一个顺序执行的无限循环的程序,不停地顺序查询各种软件标志,以完成对日常事务的处理。图4-15、图4-16分别给出了中断程序结构、主程序结构流程框图。

图4-15 中断程序的结构

图4-16 主程序的结构

主程序和中断服务程序间的信息交换一般采用数据缓冲器和软件标志位(置位或清“0”位寻址区的某一位)方法。例如定时中断到1秒后置位标志SS(假设(20H).0),以通知主程序对日历时钟进行计数,主程序查询到SS=1时,清“0”该标志并完成时钟计数。又如:A/D中断服务程序在读取一个完整数据时将数据存入缓冲器,并置位标志以通知主程序对数据进行处理。再如:若要打印,主程序判断到打印机空闲时,将数据装配到打印机缓冲器,启动打印机并允许打印中断。但因中断服务程序将一个个数据输出打印,应在完成后关闭打印机中断,并置位打印机结束标志,以通知主程序打印机已空。

因此顺序程序设计方法容易理解和掌握,也能满足大多数简单的应用系统对软件的功能要求,因此是一种使用很广的方法。顺序程序设计的缺点是软件的结构不够清晰、软件的修改扩充比较困难、实时性能差。这时因为当功能复杂的时候,执行中断服务程序要花较多的时间,CPU执行中断程序时不响应低级或同级的中断,这可能导致某些实时中断请求得不到及时响应,甚至会丢失中断信息。如果多采用一些缓冲器和标志,让大多数工作由主程序完成,中断服务程序只完成一些必须的操作,从而缩短中断服务程序的执行时间,这在一定程度上能提高系统的实时性,但众多的软件标志会使结构杂乱,容易发生错误,给调试带来困难。对复杂的应用系统,可采用实时多任务操作系统。

2.程序设计方法

(1)自顶向下模块化设计方法。随着计算机应用日益广泛,软件的规模和复杂性也不断的增加,给软件设计、调试和维护带来很多困难。自顶向下的模块化设计方法能有效解决这个问题。程序结构自顶向下模块化程序设计方法就是把一个大程序划分成一些较小的部分,每一个功能独立的部分用一个程序模块来实现。分解模块的原则是简单性、独立性和完整性,即:

1)模块具有单一的入口和出口。

2)模块不宜过大,应让模块具有单一功能。

3)模块和外接联系仅限于入口参数和出口参数,内部结构和外界无关。

这样各个模块分别进行设计和调试就比较容易实现。(www.xing528.com)

(2)逐步求精设计方法。模块设计采用逐步求精设计方法,先设计出一个粗的操作步骤,只说明先做什么后做什么,而不回答如何做。进而对每个步骤细化,回答如何做的问题,每一个越来越细,直至可以编写程序时为止。

(3)结构化程序设计方法。按顺序结构、选择结构、循环结构模式编写程序。

3.算法数据结构

算法和数据结构有密切的关系。明确了算法才能设计出好的数据结构,反之选择好的算法又依赖于数据结构。

算法就是求解问题的方法,一个算法由一系列求解步骤完成。正确的算法要求组成算法的规则和步骤的含义是唯一确定的,没有二义性,指定的操作步骤有严格的次序,并在执行有限步骤以后给出问题的结果。

求解同一个问题可能有多种算法,选择算法的标准是可靠性、简单性、易理解性以及代码效率和执行速度。

描述算法的工具之一是流程图又称流程框图,它是算法的图形描述,具有直观、易理解的优点。前面章节中许多程序算法都用流程图表示。流程图可以作为编写程序的依据,也是程序员之间进行交流的工具。流程图也是由粗到细,逐步细化,足够明确后就可以编写程序。

数据结构是指数据对象、相互关系和构造方法。不过计算机硬件中数据结构一般比较简单,多数只采用整型数据,少数采用浮点型或构造型数据。

4.程序设计语言选择和编写程序

计算机硬件中常用的程序设计语言为汇编语言和C51语言。对于熟悉指令系统并且有经验的程序员,喜欢用汇编语言编写程序,根据流程图可以编写出高指令的程序。对指令系统不熟悉的程序员,喜欢用C51语言编写程序,用C51编写的结构化程序易读易理解,容易维护和移植。因此程序设计语言的选择是因人而异的。

汇编语言编写程序对硬件操作很方便,编写的程序代码短,但是使用起来不方便,可读性和可移植性较差,同时汇编语言程序的设计周期长,调试和排错也较难。为了能提高编程的效率和应用程序的效率,改善程序的可读性和可移植性,最好是采用高级语言来进行应用系统和应用程序设计。而C51语言既有高级语言使用方便的特点,也具有汇编语言直接对硬件进行操作的特点,因而在现在计算机硬件系统设计中,往往用C51语言来进行开发和设计,特别是在计算机硬件应用系统的开发过程中。

学习一种编程语言,最重要的是建立一个练习环境,边学边练才能学好。本章所介绍的KeilμVision软件是目前最流行开发MCS-51系列单片机的软件,Keil提供了包括C51编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境μVision将这些部分组合在一起

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

我要反馈