专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

怎样分析单片机程序

作者:佚名   来源:本站原创   点击数:  更新时间:2012年04月17日   【字体:

            要:分析单片机程序是为编写程序做准备,包括对硬件电路和软件功能的分析,提出了实用的分析方法,并总结出分析程序的一般步骤和应注意的问题。

    设计单片机程序不是从零开始,而是先对已有的相关程序进行阅读分析。分析程序是设计、修改、优化、维护的重要步骤。因此,掌握单片机程序的分析方法是非常必要的。

    1 详细阅读设备使用说明书

    可投产(使用)的单片机系统都附有使用说明书(手册),它介绍了该产品的(工作原理)技术指标、使用步骤、操作方法和注意事项,同时还有系统的有关状态、显示、报警等信息。这为阅读程序、划分模块分析功能提供了极大的帮助。若有该系统,应对其反复操作,熟悉使用步骤和操作方法。操作时应全面详细,确保程序和外围电路的每一部分都执行过。

   2 了解单片机芯片型号及功能

   目前,具有代表性的单片计算机有:8位单片机,即51系列;16位单片机,即96系列;32位嵌入式微处理器,即X86结构的i386EX系列;超低功耗i486系列和RISC结构的i960系列等。由于MCS—51系列单片机具有集成度高,处理功能强,可*性好,价格低廉等优点,它在智能仪器仪表、控制工程、测试技术等领域得到了广泛的应用。繁多的单片机品种,使阅读者必须首先知道该电路中具体使用了哪一种单片机芯片,弄清其引脚功能、存储器结构、指令系统等。

   3 分析掌握外围电路各部分的作用

   在单片机应用系统中,硬件是基础,软件的功能是对硬件进行合理调配和使用。在控制系统的开发中,软件和硬件设计基本上是同步进行的。

    3.1 单片机常用的外围电路

    单片机常用的外围电路包括程序扩展电路、内存扩展电路、并行口扩展电路、Watchdog电路、串行通讯电平转换电路、LED(LCD)数码显示电路、键盘电路、A/D转换电路、D/A转化电路、指示灯电路等,同时还必须明确该电路的实现方式。单片机外围电路简图见图1。

    3.2 其他电路及连线

    为了阻抗匹配,增设驱动电路,驱动大电流电路时采用的光电隔离电路,CMOS电路多余输入端的处理(接正电源或接地),地线系统(系统地,机壳地或屏蔽地,数字地,模拟地)的安排,信号线包括读、写信号线、片选信号线、时钟信号线、读选通信号(PSEN)、地址锁存信号(ALE)、复位信号等的连接及I/O地址的分配,掌握这些对程序的阅读至关重要。

    4 阅读分析程序

    4.1 单片机程序所用语言

    由于汇编语言精炼高效,小型的单片机程序常采用汇编语言。而C语言既有高级语言的各种特点,又可对硬件进行操作,进行结构化程序设计。对MCS—51单片机,目前采用比较多的有ASM51,C51等。此外,还有汇编语言与BASIC语言混编的单片机程序。

    4.2 单片机程序的基本结构与组成

    在整个单片机程序中初始化、自检部分安排在单片机程序的开始,随后便是主(监控)程序,各模块和子程序,此外还有字形表及数据表等。

     4.2.1 传统的程序结构

     单片机程序一般采用模块化设计。其中心思想是将一个功能较多、程序量较大的程序整体按其功能划分成若干个相对独立的程序段。通常把控制单片机应用系统工作的整个程序称为监控程序。监控程序按模块分为监控主程序和命令处理子程序。命令处理子程序完成各种命令所规定的具体操作,它按各种命令再分为不同的子程序模块。它的编程方法与功能要求与系统硬件密切相关,没有通用的方法。而监控主程序是接受和分析来自键盘的命令,进而把控制转到相应的处理子程序的入口,起引导作用。

     在一键多义的情况下,监控主程序要确定控制的转向,除了要知道当前按键外,还得明确系统目前的“状况”,即“状态”。可用状态表法设计监控主程序,其核心是设计一张状态表,规定应用系统在某一状态下各按键的含义,包括应执行哪一个命令处理子程序和完成状态的正确变迁。状态表的格式见表1。

    设计时,在内存开辟一个现态单元记忆当前的状态。当有键按下时,监控主程序根据当前按键的编码和现态这两个关键字去查阅状态表,从而确定系统该执行哪一个处理子程序及系统的下一个状态是什么,立即修改现态单元的内容,以便有新的按键时系统能做出正确的响应。在每个状态下并非所有的按键都有定义,即有空键。

    当某个中断发生时,中断服务程序设置相应的标志,而主程序不断地判断这些标志,以决定启动哪一个处理程序。相应的处理程序处理完相关的任务后,清除此标志,然后把控制权交还给主程序。对于延时或定时处理,可用一个定时器来完成。

    4.2.2 基于时间片的单片机程序

    在单片机实时控制系统中引入了现代操作系统的多任务思想,采用时间片轮转调度算法对传统单片机编程思想进行了改进,并应用在分布式系统中,结构清晰、调度灵活,适用于定时要求复杂、实时性要求强的系统。

    4.3 阅读程序并画出程序流程图

    程序流程图(简称框图)是用来描述程序处理过程的工具,推理过程清晰、直观、逻辑性强,可用于刻画程序的控制流逻辑,为程序测试和理解提供了一种重要的辅助手段。

    只有分析者对程序进行多次扫描,画出每个模块的详细流程图,才能明确各个模块的任务和相互联系及资源分配和整个程序的设计思路,各程序模块的入口、出口和对CPU内部寄存器的占用情况。还有CPU对启动A/D转换要发什么控制信号;端口地址是什么;CPU用什么方法得知A/D转换结束,以便输入转换结果;采样周期多长等。这是分析和设计程序最重要的一步,也是逻辑分析和优化的基础。单片机常用功能模块有:定时、数据采集、数字采集、数字滤波、标度变换、控制算法、显示、报警、打印等。

    4.4 算法分析

    算法是为解决某一特定问题而采取的确定的有限的步骤,是求解某一问题所使用的一组定义明确的规则,在实际应用中又称为方法、方式、体制等。对有些较复杂的算法,最好用画流程图的方式来分析,这样思路清晰,简洁直观。

     单片机控制系统程序设计中的重要内容,是根据被控制对象的特性,合理选择算法,以达到所要求的控制精度和指标。例如数据采集时进行数字滤波处理,常用的数字滤波方式有:程序判断滤波、中位置滤波、算术平均滤波、递推平均滤波法、防脉冲干扰平均值滤波、一阶滞后滤波等。因此,在阅读程序前,必须对该问题的解决方法有一定的了解,才能确定具体使用了哪一种算法。

     4.5 资源分配

     确定资源分配,包括ROM、定时器/计时器、RAM、中断源等。其中最关键的是片内RAM的分配,如00H~2FH工作寄存器,常用作指针、计数器、循环变量等;20H~2FH具有位寻址功能,用来存放各种标志位、逻辑变量、状态变量。对RAM应列出一张RAM资源详细分配表,以备阅读查用。在数据存储器中,安排好采样数据区、处理结果数据区、显示和打印数据区、标志区等。该分配表可手动画出,而用Excel表则更方便。

    4.6 标志位

    单片机有丰富的位操作指令和位存储资源。一类是为I/O操作服务的,如监测到的各种逻辑信息可存入位资源中,随时供程序使用。另一类是为程序本身服务,表明系统的各种状态特点,传递各模块之间的控制信息,控制程序流向等,这一部分称为软件标志。阅读程序时,对每个位资源必须进行详细记录,绘出软件标志的使用说明书。需要说明的项目有:名称和位地址:该软件标志在程序中的代号和存放的位单元。意义:说明逻辑1和逻辑0代表的状态或功能。对全局定义的软件标志,它有唯一的定义,对于局部定义的软件标志,必须注明其有效范围。生命周期:分析每个软件标志初始化的状态,程序运行时发生变化的条件和时刻,并进行记录。用户:对软件标志进行读操作的状态或模块称为该软件标志的用户。软件标志的使用有两种,一种是非破坏性的,只读不写;另一种是破坏性使用,这种软件标志多为某种申请标志,响应后立即清除,可避免重复响应。同一标志位在不同的状态下可有不同的含义。多位标志表示多个状态,这样节省标志位。

    4.7 抗干扰处理

    由于单片机工作环境比较恶劣和复杂,往往会影响系统的可*性、安全性。这些干扰有供电系统干扰、过程通道干扰、空间干扰等,会导致数据采集误差加大、控制状态失灵、数据受干扰发生改变、程序运行失常。

    为保证单片机控制系统长期稳定运行,必须对各种干扰进行处理,包括必要的硬件电路,如硬件看门狗技术;软件抗干扰技术,如输入通道抗干扰技术、数字滤波、RAM数据冗余技术、软件陷阱等。软件和硬件抗干扰技术结合,这样才能达到最佳效果。

    5 结语

     程序设计是创造性的工作,而程序分析往往是为创造性的工作做准备。阅读程序是从已有的程序开始,分析其硬件、软件功能,对其消化、吸收,才能对程序进行修改、维护、优化程序,从而扩大系统的适应范围,提高技术指标和性能参数。

关闭窗口

相关文章