单片机的应用设计与调试_第1页
单片机的应用设计与调试_第2页
单片机的应用设计与调试_第3页
单片机的应用设计与调试_第4页
单片机的应用设计与调试_第5页
已阅读5页,还剩182页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1第13章

AT89S51单片机的应用设计与调试1成都理工大学工程技术学院自动化工程系单片机的应用设计与调试全文共187页,当前为第1页。22第13章目录13.1单片机应用系统的设计步骤13.2单片机应用系统设计

13.2.1硬件设计应考虑的问题

13.2.2典型的单片机应用系统

13.2.3系统设计中的地址空间分配与总线驱动

13.2.4AT89S51单片机的最小应用系统

13.2.5应用设计举例—水温测控系统的硬件设计

13.2.6软件设计考虑的问题

13.2.7软件的总体框架设计单片机的应用设计与调试全文共187页,当前为第2页。313.3单片机应用系统的仿真开发与调试

13.3.1仿真开发系统简介

13.3.2用户样机的仿真调试13.4单片机应用系统的抗干扰与可靠性设计

13.4.1AT89S51片内看门狗定时器的使用

13.4.2指令冗余和软件陷阱

13.4.3软件滤波

13.4.4开关量输入/输出软件抗干扰设计

13.4.5过程通道干扰的抑制措施--隔离单片机的应用设计与调试全文共187页,当前为第3页。4

13.4.6印刷电路板抗干扰布线的基本原则

13.4.7掉电保护设计和硬件“看门狗”13.5单片机应用系统的I/O功率驱动

13.5.1AT89S51与外围集成数字驱动电路的接口

13.5.2AT89S51与光电耦合器的接口

13.5.3AT89S51与集成功率电子开关输出接口单片机的应用设计与调试全文共187页,当前为第4页。5内容概要 本章介绍AT89S51单片机应用系统的设计。主要内容: 设计步骤和方法,硬件设计,程序的总体框架设计以及设计举例。此外,介绍目前仿真开发工具以及如何利用仿真开发工具对单片机应用系统进行开发调试。 最后介绍单片机应用系统的抗干扰和可靠性设计。单片机的应用设计与调试全文共187页,当前为第5页。613.1单片机应用系统的设计步骤 以单片机为核心,配以一定的外围电路和软件、能实现用户所要求的测控功能的系统。 设计工作,需经过深入细致需求分析,周密科学方案论证才能使系统设计工作顺利完成。需求分析包括:被测控参数的形式(电量、非电量、模拟量、数字量等)、被测控参数的范围、性能指标、系统功能、工作环境、显示、报警、打印要求等。 注意,方案确定时候,简单的方法往往可以解决大问题,切忌“简单的问题复杂化”。6单片机的应用设计与调试全文共187页,当前为第6页。7 一个应用系统设计,一般可分为4个阶段。(1)明确任务和需求分析以及拟定设计方案阶段 明确系统要完成的任务十分重要,是设计工作的基础以及系统设计方案正确性的保证。(2)硬件和软件设计阶段 根据拟定的方案,设计系统硬件电路。硬件设计的前提是必须能够完成系统的要求和保证可靠性。在硬件设计时,如能将硬件电路设计与软件设计结合起来考虑效果会更好。因为当有些问题在硬件电路中无法完成时,7单片机的应用设计与调试全文共187页,当前为第7页。8 当软件编写程序很麻烦时,通过稍改动硬件电路(或尽可能不改动)可能会使软件变得简单。 另外在要求系统实时性强、响应速度快的场合,往往必须用硬件代替软件来完成某些功能。可直接由软件来完成(如软件滤波、校准功能等)。 所以硬件设计时,最好与软件的设计结合起来,统一考虑,合理地安排软、硬件的比例,使系统具有最佳性价比。当硬件电路设计完成后,就可以进行硬件电路板绘制和焊接工作了。 接下来介绍软件设计。正确编程方法就是根据需求分8单片机的应用设计与调试全文共187页,当前为第8页。9析,先绘制出软件的流程图,该环节十分重要。流程图绘制往往不能一次成功,需多次修改。 绘制可由简到繁逐步细化,先绘制系统大体上需要执行的程序模块,然后将这些模块按照要求组合在一起(如主程序、子程序以及中断服务子程序等),在大方向没问题后,再将每个模块细化,最后形成流程图,程序编写速度就会很快,同时为后面的调试工作带来很多方便,如调试中某模块不正常,就可以通过流程图来查找问题的原因。一定要克服不绘制流程图直接在计算机上编写程序的习惯。9单片机的应用设计与调试全文共187页,当前为第9页。10 设计者也可在上述软硬件设计完成后,先使用单片机的EDA软件仿真开发工具Proteus,来进行仿真设计。 用软件仿真开发工具Proteus设计的系统与用户样机在硬件上无任何联系,是一种完全用软件手段来对单片机硬件电路和软件进行设计、开发与仿真调试的开发工具。如果先在软件仿真工具的软环境下进行系统设计并调试通过,虽然还不能完全说明实际系统就完全通过,但至少在逻辑上是行得通的。 软件仿真通过后,再进行软硬件设计与实现,可大大减少设计上所走的弯路。这也是目前世界上流行的一种开发方10单片机的应用设计与调试全文共187页,当前为第10页。11法。(3)硬件与软件联合调试阶段 下一步就是软硬件的联合调试。需通过硬件仿真开发工具来进行,具体的调试方法和过程,在本章后面介绍。所有软件和硬件电路全部调试通过,并不意味系统设计成功,还需通过运行来调整系统的运行状态,例如系统中的A/D转换结果是否正确,如果不正确,是否要调零和调整基准电压等。(4)资料与文件整理编制阶段 系统调试通过,就进入资料与文件整理编制阶段。11单片机的应用设计与调试全文共187页,当前为第11页。12 资料与文件包括:任务描述、设计的指导思想及设计方案论证、性能测定及现场试用报告与说明、使用指南、软件资料(流程图、子程序使用说明、地址分配、程序清单)、硬件资料(电原理图、元件布置图及接线图、接插件引脚图、线路板图、注意事项)。 文件不仅是设计工作的结果,而且是以后使用、维修以及进一步再设计的依据。因此,要精心编写,描述清楚,使数据及资料齐全。12单片机的应用设计与调试全文共187页,当前为第12页。1313.2单片机应用系统设计 介绍如何进行系统的设计。主要从硬件设计和软件设计两方面考虑。13.2.1硬件设计应考虑的问题 硬件设计时,应重点考虑以下问题。1.尽可能采用功能强的芯片 (1)单片机选型。单片机的集成度越来越高,许多外围部件都已集成在芯片内,有的单片机本身就是一个系统,这可省去许多外围部件的扩展工作,使设计工作简化。13单片机的应用设计与调试全文共187页,当前为第13页。14 第1章已介绍较为流行的各种单片机,根据需求,选择合适机型。 例如,目前市场上较为流行的美国Cygnal公司的C8051F0208位单片机,片内集成有8通道A/D、两路D/A、两路电压比较器,内置温度传感器、定时器、可编程数字交叉开关和64个通用I/O口、电源监测、看门狗、多种类型的串行总线(两个UART、SPI)等。用1片C8051F020单片机,就构成一个应用系统。再如,如系统需要较大的I/O驱动能力和较强的抗干扰能力,可考虑选用AVR单片机。14单片机的应用设计与调试全文共187页,当前为第14页。15 (2)优先选片内有闪存的产品。例如,使用ATMEL公司的AT89C5x系列产品,Philips公司的89C58(内有32KB的闪速存储器)等,可省去片外扩展程序存储器的工作,减少芯片数量,缩小系统体积。 (3)RAM容量的考虑。多数单片机片内的RAM单元有限,当需增强数据处理功能时,往往觉得不足,这就要求系统配置外部RAM,如6264、62256芯片等。如果处理的数据量大,需要更大的数据存储器空间,可采用数据存储器芯片DS12887,其容量为256KB,内有锂电池保护,保存数据可达10年以上。15单片机的应用设计与调试全文共187页,当前为第15页。16 (4)对I/O端口留有余地。在样机研制出来现场试用时,往往会发现一些被忽视的问题,而这些问题是不能单靠软件措施来解决的。如有新的信号需要采集,就必须增加输入检测端;有些物理量需要控制,就必须增加输出端。如果在硬件设计之初就多设计留有一些I/O端口,这些问题就会迎刃而解。 (5)预留A/D和D/A通道。与上述I/O端口同样原因,留出一些A/D和D/A通道将来可能会解决大问题。16单片机的应用设计与调试全文共187页,当前为第16页。172.以软代硬 原则上,只要软件能做到且能满足性能要求,就不用硬件。硬件多不但增加成本,而且系统故障率也会提高。以软带硬的实质,是以时间换空间,软件执行过程需要消耗时间,因此带来的问题就是实时性下降。在实时性要求不高的场合,以软代硬是很合算的。3.工艺设计 包括机箱、面板、配线、接插件等。须考虑到安装、调试、维修方便。另外,硬件抗干扰措施(将在本章后面介绍)也须在硬件设计时一并考虑进去。17单片机的应用设计与调试全文共187页,当前为第17页。1813.2.2典型的单片机应用系统典型单片机应用系统框图如图13-1所示。

图13-1

单片机典型应用系统框图18单片机的应用设计与调试全文共187页,当前为第18页。19 主要由单片机基本部分、输入部分和输出部分组成。(1)单片机基本部分 由单片机及其扩展的外设及芯片,如键盘、显示器、打印机、数据存储器、程序存储器、数字I/O等组成。(2)输入部分 “测”的部分,被“测”的信号类型有:数字量、模拟量和开关量。模拟量输入检测的主要包括信号调理电路以及A/D转换器。A/D转换器中又包括多路切换、采样保持、A/D转换电路,目前都集成在A/D转换器芯片中,或直接集成在单片机片内。19单片机的应用设计与调试全文共187页,当前为第19页。20 连接传感器与A/D转换器之间的桥梁是信号调理电路,传感器输出的模拟信号要经信号调理电路对信号进行放大、滤波、隔离、量程调整等,变换成适合A/D转换的电压信号。信号放大通常由单片式仪表放大器承担。仪表放大器对信号进行放大比普通运算放大器具有更优异的性能。如何根据不同的传感器正确地选择仪表放大器来进行信号调理电路的设计,请读者参阅有关资料和文献。(3)输出部分 是应用系统“控”的部分,包括数字量、开关量控制信号的输出和模拟量控制信号(常用于伺服控制)的输出。20单片机的应用设计与调试全文共187页,当前为第20页。2113.2.3系统设计中的地址空间分配与总线驱动 一个AT89S51应用系统有时往往是多芯片系统,这时会遇到两个问题: 一是如何把64KB程序存储器和64KB数据存储器的空间分配给各个芯片; 二是如何实现AT89S51单片机对多片芯片的驱动。 本小节介绍单片机应用系统设计时经常遇到的地址空间分配和总线驱动问题,供设计参考。21单片机的应用设计与调试全文共187页,当前为第21页。221.地址空间分配 扩展多片芯片的应用系统,首先应考虑如何把64KB程序存储器和64KB数据存储器的空间分配给各个芯片。 第8章已介绍地址空间分配的两种方法:线选法和译码法。下面通过一个例子来说明如何解决这个问题。

图13-2所示为一个全地址译码的系统实例。图中所示的AT89S51单片机扩展的各器件芯片所对应的地址见表13-1。22单片机的应用设计与调试全文共187页,当前为第22页。2323图13-2

全地址译码的系统实例单片机的应用设计与调试全文共187页,当前为第23页。2424单片机的应用设计与调试全文共187页,当前为第24页。25 因6264、2764都是8KB,故需要13条低位地址线(A12~A0)进行片内寻址,低8位地址线A7~A0经8D锁存器74LS373输出(图中没有画出),其他3条高位地址线A15~A13经3线-8线译码器74LS138译码后作为外围芯片的片选线。图中尚剩余3条地址选择线

,还可扩展3片存储器芯片或外围I/O接口芯片。2.总线驱动 扩展多片芯片时,注意AT89S51单片机4个并行双向口的P0~P3口的驱动能力。下面首先讨论这个问题。25单片机的应用设计与调试全文共187页,当前为第25页。26 AT89S51的P0、P2口通常作为总线端口,当扩展芯片较多,可能造成负载过重,致使驱动能力不够,通常要附加总线驱动器或其他驱动电路。因此在多芯片应用系统设计中首先要估计总线的负载情况,以确定是否需要对总线的驱动能力进行扩展。

图13-3为AT89S51单片机总线驱动扩展原理图。P2口需单向驱动,常见的单向总线驱动器为74LS244。

图13-4为74LS244引脚图和逻辑图。8个三态驱动器分成两组,分别由1和2控制。26单片机的应用设计与调试全文共187页,当前为第26页。2727图13-3AT89S51单片机总线驱动扩展原理图单片机的应用设计与调试全文共187页,当前为第27页。28 P0口作为数据总线,双向传输,其驱动器应为双向驱动、三态输出,由两个控制端来控制数传方向。如图13-3所示,数据输出允许控制端DBEO有效时,数据总线输入为高阻状态,输出为开通状态;数据输入允许控制端DBEI有效时,则状态与上相反。 常见双向驱动器为74LS245,图13-5为引脚图和逻辑图。驱动方向由

、DIR两个控制端控制,控制端控制驱动器有效或高阻态,在控制端有效(=0)时,DIR控制端控制驱动器的驱动方向,DIR=0时驱动方向为从B至A,DIR=1时则相反。28单片机的应用设计与调试全文共187页,当前为第28页。29

图13-6所示为AT89S51系统总线驱动扩展电路图。P0口的双向驱动采用74LS245,如图13-6(a)所示;P2口的单向驱动器采用74LS244,如图13-6(b)所示。

图13-4

单向驱动器74LS244引脚图和逻辑图29单片机的应用设计与调试全文共187页,当前为第29页。3030图13-574LS245的引脚图和逻辑图单片机的应用设计与调试全文共187页,当前为第30页。3131图13-6AT89S51单片机应用系统中的总线驱动扩展电路图单片机的应用设计与调试全文共187页,当前为第31页。32 P0口双向驱动器74LS245的

接地,保证芯片一直处于工作状态,而输入/输出的方向控制由单片机的数据存储器的“读”控制引脚(

)和程序存储器的取指控制引脚(

)通过与门控制DIR引脚实现。无论是“读”数据存储器中数据(

有效)还是从程序存储器中取指令(

有效),都能保证对P0口的输入驱动; 除此以外的时间(

及均无效),保证对P0口的输出驱动。对于P2口,因为只用作单向的地址输出,故74LS244的驱动门控制端1、2接地。32单片机的应用设计与调试全文共187页,当前为第32页。3313.2.4AT89S51单片机的最小应用系统 AT89S51内部有4KB闪速存储器,本身就是一个数字量输入/输出的最小应用系统。 在构建AT89S51单片机最小应用系统时,AT89S51单片机需要外接时钟电路和复位电路即可,如图13-7所示。 注意,本最小应用系统只能作为小型的数字量的测控单元。33单片机的应用设计与调试全文共187页,当前为第33页。34图13-7AT89S51单片机构成的最小应用系统单片机的应用设计与调试全文共187页,当前为第34页。3513.2.5应用设计举例—水温测控系统的硬件设计 水温测控是经常遇到的测控对象之一。下面介绍AT89S51为核心的水温测控系统的设计。采用3位LED显示器显示水温度,温度控制采用改进的PID数字控制算法。该系统具有如下基本功能:(1)温度控制的范围为25℃~50℃,最小分辨率为0.1℃;(2)偏差≤0.6℃,静态误差≤0.4℃;(3)实时显示当前的温度值;(4)命令按键4个:复位键、功能转换键、加1键和减1键。35单片机的应用设计与调试全文共187页,当前为第35页。361.硬件电路设计 从功能模块上来划分有:主机电路;数据采集电路;键盘、显示电路;控制执行电路。(1)硬件功能结构框图。

图13-8

硬件功能结构框图 硬件功能结构框图如图13-8所示。36单片机的应用设计与调试全文共187页,当前为第36页。37(2)数据采集电路的设计 主机采用AT89S51单片机,系统时钟采用12MHz,内部含有4KB的闪烁存储器,无须外扩程序存储器。 本系统需实时采集水温数据,然后经过A/D转换为数字信号,存入AT89S51单片机的内部数据存储器,送显示器显示,并与设定值进行比较,经过PID算法得到控制量并由单片机输出去控制电炉加热或开动风扇进行降温。37单片机的应用设计与调试全文共187页,当前为第37页。38 数据采集电路主要由温度传感器、信号调理、A/D转换器等组成,具体电路如图13-9。 温度传感器采用常见的二端式电流型集成温度传感器AD590。温度每变化1℃,其输出电流变化1µA,在25℃时,其输出电流为298.2µA。AD590具有较高精度和重复性,测温的范围为−55℃~+150℃,重复性优于0.1℃,通过激光平衡调整,校准精度可达0.5℃。由于AD590的上述特点,使其在温度测控领域中得到了广泛应用。38单片机的应用设计与调试全文共187页,当前为第38页。3939图13-9

数据采集电路图单片机的应用设计与调试全文共187页,当前为第39页。40 A/D转换器采用AD0809。考虑到水温信号为缓变信号,足以满足转换速度的要求,而且还可以根据需要扩展最多测量8路温度信号。如果对A/D转换器的转换精度要求更高,可采用12位的A/D转换器,如AD1674等。 放大电路采用低温稳定、高精度的普通运算放大器OP07,它将温度传感器的电压信号放大至A/D转换器,以便A/D转换器进行转换。40单片机的应用设计与调试全文共187页,当前为第40页。41(3)控制执行电路的设计 由单片机的输出开关量来控制风扇或电炉。采用光电耦合器进行强电和弱电的隔离,但还要考虑输出信号要对晶闸管进行触发,以便接通风扇或电炉电路,所以晶闸管选用既有光电隔离又有触发功能的MC3041(有关MC3041的介绍请见13.5节)。 电路中使用P1.0控制电炉的开关,使用P1.1控制风扇的开关,如图13-10所示。41单片机的应用设计与调试全文共187页,当前为第41页。4242图13-10单片机的控制执行电路单片机的应用设计与调试全文共187页,当前为第42页。43 此外,在设计中还要考虑当水温超出所能控制的上下限温度时,要有越限报警;当温度低于25℃时,黄色发光二极管亮,当温度高于50℃时红色发光二极管亮。(4)键盘与显示器电路的设计 键盘共有4个键(包括复位键K1),判断K2~K4键是否按下,可采用软件查询和中断的方法,当某个键按下时,低电平有效。 4个键K1~K4的功能定义见表13-2。43单片机的应用设计与调试全文共187页,当前为第43页。44

表13-2 K1~K4键的定义44按

键键

名功

能K1复位键使系统复位K2功能转换键此键按下,LED1亮,显示温度设定值,按键松开,LED1不亮,显示当前温度值K3加1键设定的温度值加1K4减1键设定的温度值减1单片机的应用设计与调试全文共187页,当前为第44页。45 按键K2与

(P3.2)相连,采用外部中断方式,且优先级定为高优先级。 K3和K4分别与P1.7和P1.6相连,采用软件查询方式,K1为复位键,与RC构成复位电路。 显示电路利用串口来实现3位LED的共阳静态显示,显示内容为温度的十位、个位以及小数点后的一位。利用串行口扩展74LS164实现LED的共阳静态显示的工作原理及软件编程,请见10.3.1小节。45单片机的应用设计与调试全文共187页,当前为第45页。462.软件设计 采用模块化设计,由主程序模块、功能实现模块和运算控制模块3大模块组成。(1)主程序模块。流程如图13-11所示。先给定PID算法参数,然后循环显示当前温度,以等待中断,并且使键盘外部中断1(P3.2)为高优先级,以使主程序能实时响应K2按下的处理。设定时器T0为5s定时,无键按下时,应每隔5s响应一次,来采集温度传感器并经A/D转换的温度信号。设置定时器T1为嵌套在T0之中的定时中断,初值由PID算法子程序提供,以用来执行对电炉或风扇的控制。46单片机的应用设计与调试全文共187页,当前为第46页。4747图13-11

主程序流程图单片机的应用设计与调试全文共187页,当前为第47页。48(2)功能实现模块 主要由A/D转换、中断处理、键盘处理和显示子程序等组成。下面仅介绍几个中断处理子程序。 ①T1中断子程序。该中断是单片机内部5s定时中断,为低优先级,却是最重要的子程序。 在该中断响应中,单片机要完成如下工作:A/D转换和数据采集、数字滤波、判断是否超限、标度变换处理、显示当前温度、与设定值进行比较,调用PID算法子程序并输出控制信号等。48单片机的应用设计与调试全文共187页,当前为第48页。49 ②键盘中断子程序。作为高优先级的功能控制键,系统要实时准备响应该中断。在该中断的响应过程中,系统要显示上一次的温度设定值,并且可以通过K3、K4键来实现加1、减1的输入修改。鉴于所控制的温度的上下限,程序实现加1直到上限50,再加1则为下限25;减1到25时,再减1则为上限50。 ③T0中断子程序。T0定时中断嵌套在T1中断之中,为高优先级中断。T0的定时初值由PID算法子程序提供,T0的中断响应时间用于输出对电炉或风扇的控制信号。49单片机的应用设计与调试全文共187页,当前为第49页。50(3)运算控制模块 涉及标度变换、PID算法及算法调用的乘法子程序等。 ①标度变换子程序。该子程序的作用是将温度信号(00H~FFH)转换为对应的温度值,以便显示或与设定在相同量纲下的温度值进行比较。所用的线性标度变换式为

Tx

=

[(Tm

T0)

(Nx

N0)/(Nm

N0)]

+

T0式中,Tx为实际测量的温度值;Tm为50;T0为25;Nm为FEH;N0为01H。采用定点运算。50单片机的应用设计与调试全文共187页,当前为第50页。51 ②PID算法子程序。采用常用的位置型PID数字控制,且结合本系统进行算法改进,形成“变速积分PID-积分分离PID”控制相结合的自动识别控制算法。算法如下:

ui(n)

ur

=

e(n)式中,ui(n)为第n次温度采样值;ur为设定值。 若∣e(n)|≥,采用PD算法。 若∣e(n)∣<,采用PID算法。 该算法可大大减少超调,且可有效克服积分饱和的影响,使控制精度大大提高。51单片机的应用设计与调试全文共187页,当前为第51页。5213.2.6软件设计考虑的问题 在系统总体设计时,软件设计和硬件设计应统一考虑,相互结合进行。当系统的硬件电路设计定型后,软件的任务也就明确了。 一般来说,软件的功能分为两大类。一类是执行软件,能完成各种实质性的功能,如测量、计算、显示、打印、输出控制等;另一类是监控软件,专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度的角色。在进行程序设计时应从以下几个方面考虑。52单片机的应用设计与调试全文共187页,当前为第52页。53 (1)根据软件功能要求,将系统软件分成若干相对独立的部分,设计出合理的软件总体结构,使其清晰、简洁、流程合理。 (2)各功能程序实行模块化、子程序化。既便于调试、链接,又便于移植、修改。 (3)在编写应用软件之前,应绘制出程序流程图。多花一些时间来设计程序流程图,就可以节约几倍于源程序的编辑和调试时间。 (4)要合理分配系统资源,包括ROM、RAM、定时器/计数器、中断源等。其中最关键的是片内RAM分配。53单片机的应用设计与调试全文共187页,当前为第53页。54 片内RAM指00H~7FH单元,这128个字节的功能不完全相同,分配时应充分发挥其特长,物尽其用。 例如,工作寄存器的R0和R1具有指针功能,避免作为他用;20H~2FH16个字节有位寻址功能,存放各种标志位、逻辑变量、状态变量等;设置堆栈区时应先估算出子程序和中断嵌套深度及堆栈操作指令使用情况,大小应留有余量。若扩展RAM存储器,应把使用频率最高的数据缓冲器安排在片内RAM中,以提高处理速度。 当RAM资源规划好后,应列出一张详细的RAM资源分配表,以备编程时查用方便。54单片机的应用设计与调试全文共187页,当前为第54页。5513.2.7软件的总体框架设计 设计者在软件设计时,感觉比较困难的是如何进行系统软件的总体框架设计。下面举一个典型例子,供软件设计时参考。【例13-1】有一个AT89S51应用系统,假设5个中断源都已用到,应用系统的程序框架如下:

ORG 0000H ;系统程序入口 LJMPMAIN ;跳向主程序入口MAIN ORG 0003H ;外中断0中断向量入口 LJMPIINT0P ;跳向外中断0入口IINT0P ORG 000BH ;T0中断向量入口 LJMPIT0P ;跳向T0中断入口IT0P55单片机的应用设计与调试全文共187页,当前为第55页。56

ORG 0013H ;外中断0中断向量入口 LJMPIINT1P ;跳向外中断1入口IINT1P

ORG 001BH ;T1中断向量入口 LJMPIT1P ;跳向T1中断处理程序入口IT1P

ORG 0023H ;串行口中断向量入口 LJMPISIOP ;跳向串行口中断处理程序入口ISIOP

ORG 0040H ;主程序入口 MAIN:

…………

;对片内各功能部件以及扩展的各个 ;I/O接口芯片初始化 ;

MOVSP,#60H;对堆栈区进行初始化

主处理程序段(根据实际处理任务编写)

56单片机的应用设计与调试全文共187页,当前为第56页。57 …………

ORG xxxxH

IINT0P:外中断0中断处理

;外中断0中断处理入口 ………… RETI

ORG yyyyH

IT0P:

T0中断处理

;T0中断处理入口 ………… RETI

ORG zzzzH

IINT1P:外中断1中断处理

;外中断1中断处理入口 ………… RETI57单片机的应用设计与调试全文共187页,当前为第57页。58

ORG uuuuH

IT1P:

T1中断处理

;T1中断处理子程序IT0P入口 ………… RETI

ORG vvvvH

ISIOP:串行口中断处理 ;串行口中断处理子程序入口 ………… RETI END上述程序框架仅供参考,当然在实际中,5个中断源也未必全用。58单片机的应用设计与调试全文共187页,当前为第58页。5913.3单片机应用系统的仿真开发与调试 当用户样机完成硬件和软件设计,全部元器件安装完毕后,在用户样机的程序存储器中放入编写好的应用程序,系统即可运行。但应用程序运行一次性成功几乎是不可能的,多少会存在一些软件、硬件上的错误,需借助单片机的仿真开发工具进行调试,发现错误并加以改正。 AT89S51只是一个芯片,既没有键盘,又没有CRT、LED显示器,无法进行软件的开发(如编辑、汇编、调试程序等),必须借助某种开发工具(也称为仿真开发系统)所提供的开发手段。一般来说,仿真开发工具应具有如下最基本功能。59单片机的应用设计与调试全文共187页,当前为第59页。60 (1)用户样机程序的输入与修改。 (2)程序的运行、调试(单步运行、设置断点运行)、排错、状态查询等功能。 (3)用户样机硬件电路的诊断与检查。 (4)有较全的开发软件。用户可用汇编语言或C语言编制应用程序;由开发系统编译连接生成目标文件、可执行文件。配有反汇编软件,能将目标程序转换成汇编语言程序;有丰富的子程序可供用户选择调用。 (5)将调试正确的程序写入到程序存储器中。60单片机的应用设计与调试全文共187页,当前为第60页。61 介绍常用的仿真开发工具。13.3.1仿真开发系统简介 目前国内使用较多的仿真开发系统大致分为如下两类。1.通用机仿真开发系统 目前设计者使用最多的一类开发装置,是一种通过PC机的并行口、串行口或USB口,外加在线仿真器的仿真开发系统,如图13-12所示。 在线仿真器一侧与PC机的串口(或并口、USB口)相连。在线仿真器另一侧的仿真插头插入到用户样机的单片机插座上,对样机的单片机进行“仿真”。从仿真插头61单片机的应用设计与调试全文共187页,当前为第61页。6262图13-12

通用机仿真开发系统单片机的应用设计与调试全文共187页,当前为第62页。63 向在线仿真器看去,看到的就是一个“单片机”。这个“单片机”是用来“代替”用户样机上的单片机。但是这个“单片机”片内程序的运行是由PC机上的软件控制的。由于在线仿真器有PC机及其仿真开发软件的强大支持,可以在PC机的屏幕上观察用户程序的运行情况,可以采用单步、设断点等手段逐条跟踪用户程序并进行修改和调试,以及查找软、硬件故障。 在线仿真器除了“出借”单片机外,还“出借”存储器,即仿真RAM。就是说,在用户样机调试期间,仿真器把开发系统的一部分存储器“变换”成为用户样机的存储器。63单片机的应用设计与调试全文共187页,当前为第63页。64 这部分存储器与用户样机的程序存储器具有相同的存储空间,用来存放待调试的用户程序。 在调试用户程序时,仿真器的仿真插头必须插入用户样机空出的单片机插座中。当仿真开发系统与PC机联机后,用户可利用PC机上的仿真开发软件,在PC机上编辑、修改源程序,然后通过交叉汇编软件将其汇编成机器代码,传送到在线仿真器中的仿真RAM中。 这时用户可用单步、断点、跟踪、全速等方式运行用户程序,系统状态实时地显示在屏幕上。 程序调试通过,再使用编程器器,把调试完毕的程序64单片机的应用设计与调试全文共187页,当前为第64页。65 写入到单片机内的Flash存储器中或外扩的EPROM中。此类仿真开发系统是目前最流行的仿真开发工具。配置不同的仿真插头,可以仿真开发各种单片机。 通用机仿真开发系统中还有另一种仿真器:独立型仿真器。该类仿真器采用模块化结构,配有不同外设,如外存板、打印机、键盘/显示器等,用户可根据需要选用。在工业现场,往往没有PC机的支持,这时使用独立型仿真器也可进行仿真调试工作,只不过要输入机器码,稍显麻烦一些。65单片机的应用设计与调试全文共187页,当前为第65页。662.软件仿真开发工具Proteus 是一种完全用软件手段对单片机应用系统进行仿真开发的。软件仿真开发工具与用户样机在硬件上无任何联系。通常这种系统是由PC机上安装仿真开发工具软件构成,可进行应用系统的设计、仿真、开发与调试。 Proteus软件是英国LabCenterelectronics开发的EDA工具软件,它为各种实际的单片机系统开发提供了功能强大的EDA工具,已有近20年的历史。 它除了具有和其他EDA工具一样的原理编辑、印制电路板自动或人工布线及电路仿真功能外,最大特色是其对66单片机的应用设计与调试全文共187页,当前为第66页。67单片机硬件电路的仿真是交互的、可视化的。 通过Proteus软件的虚拟仿真技术,用户可以对基于单片机应用系统连同所有的外围接口、电子器件以及外部的测试仪器一起仿真。 针对单片机的应用,可直接在基于原理图的虚拟模型上进行编程,并实现源代码级的实时调试。Proteus软件具有如下特点。(1)能够对模拟电路、数字电路进行仿真。(2)除仿真51系列单片机外,Proteus软件还可仿真68000系列、AVR系列、PIC12-18系列等其他系列单片机。67单片机的应用设计与调试全文共187页,当前为第67页。68(3)具有硬件仿真开发系统中的全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态。(4)该软件提供各种单片机与丰富的外围接口芯片、存储器芯片组成的系统仿真、RS-232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能。(5)提供丰富的虚拟仪器,如示波器、逻辑分析仪、信号发生器等。利用虚拟仪器在仿真过程中可以测量系统外围电路的特性,设计者可充分利用Proteus软件提供的虚拟仪器,来进行系统的软件仿真测试与调试。总之,Proteus软件是一款功能强大的单片机软件仿真开发工具。68单片机的应用设计与调试全文共187页,当前为第68页。69 在使用Proteus软件进行仿真开发时,编译调试环境可选用KeilC51µVision3软件。该软件支持众多不同公司的MCS-51架构的芯片,集编辑、编译和程序仿真等于一体,同时还支持汇编和C语言的程序设计,界面友好易学,在调试程序、软件仿真方面有很强大的功能。

用Proteus软件调试不需任何硬件在线仿真器,也不需要用户硬件样机,直接就可以在PC机上开发和调试单片机软件。调试完毕的软件可以将机器代码固化,一般能直接投入运行。69单片机的应用设计与调试全文共187页,当前为第69页。70 尽管Proteus软件具有开发效率高,不需要附加的硬件开发装置成本。但是软件模拟器是使用纯软件来对用户系统仿真,对硬件电路的实时性还不能完全准确地模拟,不能进行用户样机硬件部分的诊断与实时在线仿真。 因此在系统开发中,一般是先用Proteus设计出系统的硬件电路,编写程序,然后在Proteus环境下仿真调试通过。然后依照仿真的结果,完成实际硬件设计。再将仿真通过的程序烧录到编程器中,然后安装到用户样机硬件板上去观察运行结果,如有问题,再连接硬件仿真器去分析、调试。70单片机的应用设计与调试全文共187页,当前为第70页。7113.3.2用户样机的仿真调试 介绍如何使用仿真开发工具进行汇编语言源程序编写、调试以及与用户样机硬件联调工作。1.用户样机的程序调试 用户源程序调试过程如图13-13所示,分以下4个步骤。(1)输入用户源程序。用户使用编辑软件WS,按照汇编语言源程序要求的格式、语法规定,把源程序输入到PC机中,并保存在磁盘上。71单片机的应用设计与调试全文共187页,当前为第71页。72图13-13

用户样机软件设计、调试的过程单片机的应用设计与调试全文共187页,当前为第72页。73(2)在PC机上,利用汇编程序对用户源程序进行汇编,直至语法错误全部纠正为止。如无语法错误,则进入下一个步骤。(3)动态在线调试。这一步对用户的源程序进行调试。上述的步骤(1)、步骤(2)是一个纯粹的软件运行过程,这一步,必须要有在线仿真器配合,才能对用户源程序进行调试。用户程序中分为与用户样机硬件无关以及与用户样机紧密相关的程序。73单片机的应用设计与调试全文共187页,当前为第73页。74 对于与用户样机硬件无关的程序,如计算程序,虽然没有语法错误,但可能存在逻辑错误,使计算结果不正确,此时必须借助于在线仿真器的动态在线调试手段,如单步运行、设置断点等,发现逻辑错误,然后返回到步骤(1)修改,直至逻辑错误纠正为止。 对于与用户样机硬件紧密相关的程序段(如接口驱动程序),一定要先把在线仿真器的仿真插头插入用户样机的单片机插座中(见图13-12),进行在线仿真调试,利用仿真开发系统提供单步、设置断点等调试手段来进行系统的调试。74单片机的应用设计与调试全文共187页,当前为第74页。75 部分程序段运行不正常,可能是软件逻辑上有问题,也可能是硬件有故障,必须先通过在线仿真调试程序提供的调试手段,把硬件故障排除以后,再与硬件配合,对用户程序进行动态在线调试。对于软件的逻辑错误,则返回到第一步进行修改,直至逻辑错误消除为止。在调试这类程序时,硬件调试与软件调试是不能完全分开的。许多硬件错误是通过软件的调试而发现和纠正的。(4)将调试完毕的用户程序通过编程写入器(也称烧写器),固化在程序存储器中。75单片机的应用设计与调试全文共187页,当前为第75页。762.用户样机的硬件调试 用户样机全部焊接完毕,就可对样机的硬件进行调试。首先进行静态调试,目的是排除明显的硬件故障。(1)静态调试 分两步: 第一步在样机加电之前,根据硬件设计图,用万用表等工具,仔细检查样机线路是否连接正确,并核对元器件型号、规格和安装是否符合要求,应特别注意电源系统的检查,防止电源的短路和极性错误,并重点检查系统总线(地址总线、数据总线、控制总线)是否存在相互之间短路或与其他信号线短路。76单片机的应用设计与调试全文共187页,当前为第76页。77 第二步加电后检查各芯片插座上有关引脚的电位,测量各点电平是否正常,尤其应注意AT89S51插座的各点电位,若有高压,与在线仿真器联机调试时,将会损坏在线仿真器。 具体步骤如下。 电源检查。当用户样机板连接或焊接完成之后,先不插主要元器件,通上电源。通常用+5V直流电源(这是TTL电源),用万用表电压挡测试各元器件插座上相应电源引脚电压数值是否正确,极性是否符合。如有错误,要及时检查、排除,以使每个电源引脚的数值都符合要求。77单片机的应用设计与调试全文共187页,当前为第77页。78 各元器件电源检查。断开电源,按正确的元器件方向插上元器件。最好是分别插入,分别通电,逐一检查每个元器件上的电源是否正确,直到最后全部插上元器件。通电后,每个元器件上电源值应正确无误。 检查相应芯片的逻辑关系。通常采用静态电平检查法,即在一个芯片信号输入端加入一个相应电平,检查输出电平是否正确。单片机系统大都是数字逻辑电路,使用电平检查法可首先检查出逻辑设计是否正确,选用的元器件是否符合要求,逻辑关系是否匹配,元器件连接关系是否符合要求等。78单片机的应用设计与调试全文共187页,当前为第78页。79(2)在线仿真与动态调试 用户样机中的硬件故障(如各个部件内部存在的故障和部件之间连接的逻辑错误)主要靠联机在线仿真来排除的。 在断电情况下,除单片机外,插上所有的元器件,并把在线仿真器的仿真插头插入样机上AT89S51单片机的插座(见图13-12),然后分别打开用户样机和仿真器电源后便可开始联机在线仿真调试。 前面已介绍,硬件调试和软件调试是不能完全分开的,许多硬件错误是在软件调试中发现和被纠正的。79单片机的应用设计与调试全文共187页,当前为第79页。80 所以,在之前介绍的有关用户样机软件调试的第(3)步的动态在线调试中,即包括联机仿真、硬件在线动态调试以及硬件故障的排除。 下面介绍在仿真开发机上如何利用简单调试程序检查用户样机。 利用仿真开发系统对用户样机进行硬件检查,常常按其功能及I/O通道分别编写相应简短的实验程序,来检查各部分功能及逻辑是否正确,下面简单介绍。80单片机的应用设计与调试全文共187页,当前为第80页。81①检查各地址译码输出 通常,地址译码输出是一个低电平有效信号。因此在选到某一个芯片时(无论是内存还是外设),其片选信号用示波器检查应该是一个负脉冲信号。由于使用的时钟频率不同,其负脉冲的宽度和频率也有所不同。注意,在使用示波器测量用户样机板的某些信号时,要将示波器电源插头上的地线断开,这是由于示波器测量探头一端连到外壳,在有些电源系统中,保护地和电源地是连在一起的,有时会将电源插座插反,将交流220V直接引到测量端,而将用户样机板全部烧毁,并且会殃及在线仿真器。81单片机的应用设计与调试全文共187页,当前为第81页。82 下面讨论如何检查地址译码器输出。例如,一片6116存储芯片地址为2000~27FFH,则可在开发系统上执行如下程序:LOOP:

MOV DPTR,#200OH MOVX A,@DPTR SJMP LOOP 程序执行后,应该从6116存储器芯片的片选端看到等间隔的一串负脉冲,说明该芯片连接正确,不插入该存储器芯片,只测量插座相应片选引脚也会有上述结果。82单片机的应用设计与调试全文共187页,当前为第82页。83 用同样的方法,可将各内存及外设接口芯片的片选信号逐一进行检查。如出现不正确的现象,就要检查片选线连线是否正确,有无接触不良或错线、断线问题。②检查RAM存储器 检查RAM存储器时可编写程序,对RAM进行写入,然后再读出,将写入和读出的数据进行比较,发现错误,立即停止。将存储器芯片插上,执行如下程序:83单片机的应用设计与调试全文共187页,当前为第83页。84

MOV A,#00H MOV DPTR,#RAM ;首地址LOOP:

MOVX @DPTR,A MOV R0,A MOVXA,@DPTR CLR C SUBBA,R0 JNZ LOOP1 INC DPTR MOV A,R0 INC A SJMPLOOPLOOP1:出错停止84单片机的应用设计与调试全文共187页,当前为第84页。85

如RAM的每个单元都出现问题,则可能是控制信号连接不正确;如一片RAM芯片中一个或几个单元出现问题,则可能芯片本身不好,可换一片再测试一下。③检查I/O扩展接口 对可编程接口芯片,如81C55、82C55,首先要对该接口芯片进行初始化,再对其I/O端口进行I/O操作。初始化要按设计要求进行,这个初始化程序调试好后就可作为正式编程的相应内容。初始化后,可对其端口进行读/写。对开关量I/O,在样机上可利用钮子开关和发光二极管模拟,也可接上驱动板检查。一般情况下,用户样机先调试,驱动板单独进行调试,这样故障排除更方便些。85单片机的应用设计与调试全文共187页,当前为第85页。86 如用自动程序检查端口状态不易观察时,可用开发系统的单步功能,单步执行程序,检查内部寄存器的有关内容或外部相应信号状态,并确定开关量输入/输出通道连接是否正确。 若外扩一片82C55,端口地址为B000~B003H,A口方式0输入,B口、C口为方式0输出,可用下述程序检查:

MOV DPTR,#0B003H MOV A,#90H ;90H为方式控制字 MOVX @DPTR,A

NOP86单片机的应用设计与调试全文共187页,当前为第86页。87 MOVDPTR,#0B000H MOVXA,@DPTR ;将A口输入状态读入累加器, ;单步执行完此步后暂停检查 ;PA口外部开关状态同A中相 ;应位状态是否一致 CLR C MOVA,#01H INC DPTRLP:

MOVX@DPTR,A ;将01H送B口,指令执行后, ;暂停。看B口的发光二极管状 ;态,第0位是否是高电平

87单片机的应用设计与调试全文共187页,当前为第87页。88

RLC A ;将1从A的D0位移到D1位 JNZ LP INC DPTR RLC ALP1:

MOVX@DPTR,A ;01H送C口,指令执行完后, ;看C口第0位输出状态 RLC A JNZ LP1对于锁存器和缓冲器,可直接对其端口进行读/写,不存在初始化的问题。88单片机的应用设计与调试全文共187页,当前为第88页。89 通过介绍的调试用户样机过程,可体会到离开仿真开发系统就根本不可能进行用户样机的调试,而调试的关键步骤—动态在线仿真调试,又完全依赖于开发系统中的在线仿真器。 所以,开发系统性能,主要取决于在线仿真器的性能,在线仿真器所能提供的仿真开发手段,直接影响设计者的设计、调试工作的效率。所以,对设计者来说,在了解开发系统的种类和性能之后,选择一个性价比高的仿真开发系统,并能够熟练地使用它来调试用户样机是十分重要的。

89单片机的应用设计与调试全文共187页,当前为第89页。9013.4单片机应用系统的抗干扰与可靠性设计 单片机应用系统在测控领域的广泛应用,单片机系统的可靠性越来越受到人们的关注。可靠性是由多种因素决定的,其中抗干扰性能的好坏是影响可靠性的重要因素。一般把影响单片机测控系统正常工作的信号称为噪声,又称干扰。在系统中,出现干扰,就会影响指令的正常执行,造成控制事故或控制失灵;会在测量通道中产生干扰,使测量产生误差。 本节介绍单片机应用系统设计中的抗干扰设计及提高可靠性的一些方法和措施。90单片机的应用设计与调试全文共187页,当前为第90页。9113.4.1AT89S51片内看门狗定时器的使用 当AT89S51系统受到干扰可能会失控,会引起程序“跑飞”或使程序陷入“死循环”,系统将完全瘫痪。如果操作人员在场,可按下人工复位按钮,强制系统复位。但操作人员不可能一直监视着系统,即使监视着系统,也往往是在引起不良后果之后才进行人工复位。 能不能不要人来监视,使系统摆脱“死循环”,重新执行正常的程序呢?这可采用“看门狗”(Watchdog,简写WDT)技术来解决这一问题。91单片机的应用设计与调试全文共187页,当前为第91页。92 “看门狗”是使用一个WDT计数器来不断计数,监视程序的运行。当WDT计数器运行后,为防止不必要溢出,程序正常运行中,应定期地把WDT计数器清0,以保证不溢出。 AT89S51片内集成的“看门狗”WDT包含一个14位计数器和看门狗定时器复位寄存器(WDTRST)。当程序“跑飞”或陷入“死循环”时,也就不能定时地把WDT计数器清0,计数器值计满溢出时,将在AT89S51的RST引脚上输出一个正脉冲使单片机复位,在系统的复位入口0000H处安排一条跳向出错处理程序段的指令或重新从头执行程序,而使程序摆脱“跑飞”或“死循环”。92单片机的应用设计与调试全文共187页,当前为第92页。93 使用看门狗时,用户只要向寄存器WDTRST(地址为A6H)先写1EH,紧接着写入E1H,WDT计数器便启动计数,程序段如下:

MOVWDTRST,#1EH ;先向WDTRST写入1EH MOVWDTRST,#0E1H ;再向WDTRST写入E1H 在实际应用中,为防止WDT计数器启动后产生不必要的溢出,应不断地复位WDTRST,即向WDTRST寄存器写入数据1EH和E1H。93单片机的应用设计与调试全文共187页,当前为第93页。94 在编程时,一般把复位WDTRST的这两条指令,设计为一个子程序,只要在程序正常运行中,不断调用该子程序,把计数器清0,使其不溢出即可。 注意寄存器WDTRST是只写寄存器,而WDT中的计数器既不可写,也不可读,一旦溢出,便停止计数。13.4.2指令冗余和软件陷阱 当单片机系统由于干扰而使程序运行发生混乱、导致程序乱飞或陷入死循环,须采取使程序纳入正规的措施,例如,经常采用的措施是指令冗余和软件陷阱。94单片机的应用设计与调试全文共187页,当前为第94页。951.指令冗余 单片机程序运行时取指令是先取操作码,再取操作数。当单片机系统受干扰出现错误时,程序便脱离正常轨道“乱飞”。 当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序有可能出错。若乱飞到三字节指令,出错概率更大,这时可在双字节指令和三字节指令后插入两个字节以上的NOP指令,可保护其后的指令不被拆散,称指令冗余。95单片机的应用设计与调试全文共187页,当前为第95页。96 采用指令冗余无疑会降低系统的效率。因此,仅在一些对程序流向起决定作用的指令之前插入两条NOP指令。此类指令有RET、RETI、ACALL、LCALL、SJMP、AJMP、LJMP、JZ、JNZ、JC、JNC、JB、JNB、JBC、CJNE、DJNZ等。 另外在某些对系统工作状态至关重要的指令(如SETBEA之类)前也可插入两条NOP指令,一旦程序乱飞时,保证使程序迅速纳入正轨。96单片机的应用设计与调试全文共187页,当前为第96页。97 指令冗余可减少程序乱飞的次数,使其很快纳入程序轨道,但这并不能保证程序在失控期间不干坏事,更不能保证程序纳入正常轨道后就太平无事了。程序的运行事实上已经偏离了正常顺序,有可能做着它现在不该做的事情。解决这个问题还必须采用软件容错技术(限于篇幅,这里不作介绍),可使系统的误动作减少,并消灭重大误动作。97单片机的应用设计与调试全文共187页,当前为第97页。982.软件陷阱 就是一条引导指令“LJMPERP”,强行将乱飞的程序引向一个指定的地址入口标号“ERP”,在那里有一段专门对程序出错进行处理的程序。为加强其捕捉效果,一般还在它前面加两条NOP指令。 NOP NOP LJMP ERP软件陷阱一般安排在以下4种地方。98单片机的应用设计与调试全文共187页,当前为第98页。99(1)未使用的中断向量区:0003H~002FH 当干扰使未使用的中断开放,并激活这些中断时,就会进一步引起混乱。如果在这些地方布上陷阱,就能及时捕捉到错误中断。例如,系统共使用3个中断

、T0、T1,它们的中断子程序分别为PGINT0、PGT0和PGT1,建议按如下方式来设置中断向量区:

ORG 0000H0000START: LJMPMAIN ;引向主程序入口0003 LJMPPGINT0 ;

中断入口99单片机的应用设计与调试全文共187页,当前为第99页。1000006 NOP

;指令冗余与软件陷阱0007 NOP

;0008 LJMP ERP

;000BLJMPPGT0;T0中断入口000C NOP

;指令冗余与软件陷阱000D NOP

;000E LJMP ERP0013 LJMPERP;未使用

中断,设指令冗余与软件陷阱001B LJMPPGT1;T1中断入口001E NOP ;指令冗余与软件陷阱001FNOP100单片机的应用设计与调试全文共187页,当前为第100页。1010020 LJMPERP;0023 LJMPERP;未使用串口中断,设指令冗余与软件陷阱0026 NOP ;指令冗余与软件陷阱0027 NOP ;0028 LJMPERP ; ………0100MAIN:………

;主程序入口 ………101单片机的应用设计与调试全文共187页,当前为第101页。102(2)未使用的程序存储器空间 对未用程序存储器空间,一般均维持原态(FFH)。FFH单字节指令(MOVR7,A),程序弹飞到这一区域后将顺流而下,不再跳跃(除非受到新的干扰)。这时,只要每隔一段设置一个陷阱,就一定能捕捉到乱飞的程序。 软件陷阱一定要指向出错处理子程序ERP。可将ERP安排在0030H开始的地方,这样就可用00H,00H,02H,00H,30H五个字节(指令NOP,NOP,LJMPERP的机器码)作陷阱来填充EPROM中的未使用空间,或每隔一段设一个陷阱(020030),其他单元保持FFH不变。102单片机的应用设计与调试全文共187页,当前为第102页。103(3)表格 两类表格。一类是数据表格,供“MOVCA,

@A+PC”指令或“MOVCA,@A+DPTR”指令使用,其内容完全不是指令;另一类是跳转表格,供“JMP@A+DPTR”指令使用,为一系列的三字节指令LJMP或两字节指令AJMP。由于表格内容和检索值有一一对应关系,在表格中间安排陷阱将会破坏其连续性和对应关系,所以只能在表格的最后安排五字节陷阱(NOP,NOP,LJMPERP)。由于表格区一般较长,安排在最后的陷阱不能保证一定捕捉到乱飞的程序,可能中途再次飞走,这时只好由别处的陷阱或冗余指令来制伏。103单片机的应用设计与调试全文共187页,当前为第103页。104(4)程序区 由一串执行指令构成的,不能在这些指令串中间任意安排陷阱,否则将影响正常程序执行。但是,在这些指令串之间常有一些断裂点,正常执行的程序到此便不会继续往下执行,这类指令有LJMP、SJMP、AJMP、RET、RETI。这时PC的值应发生正常跳变。如果还要顺次往下执行,必然会出错。在这种地方安排陷阱之后,就能有效地捕捉住它,而又不影响正常执行的程序流程。104单片机的应用设计与调试全文共187页,当前为第104页。105例如,在一个根据累加器的正、负、零值的进行跳转的三分支程序中,软件陷阱的安置方式如下:

JNZ L1 ;A中内容非零,跳转L1程序段

……

;A中内容为零的处理程序段 AJMPL3 ;断裂点

NOP ;指令冗余和软件陷阱 NOP ;

LJMPERR ;L1:

JB Acc.7,L2

……

LJMPL3 ;断裂点

105单片机的应用设计与调试全文共187页,当前为第105页。106

NOP ;指令冗余和软件陷阱 NOP ; LJMPERR ; L2:

…… L3:

MOV A,

R2;取结果

RET ;断裂点

NOP ;指令冗余和软件陷阱 NOP ; LJMPERR ; 由于软件陷阱都安排在正常程序执行不到的地方,故不影响程序执行效率。在程序存储器容量不成问题的条件下,多设置陷阱是有益的。106单片机的应用设计与调试全文共187页,当前为第106页。10713.4.3软件滤波 对实时数据采集系统,为了消除传感器通道中的干扰信号,常采用硬件滤波器先滤除干扰信号,再进行A/D转换。也可采用先A/D转换,再对A/D转换后的数字量进行软件滤波消除干扰。下面介绍几种软件滤波的方法。1.算术平均滤波法 对一点数据连续取n个值进行采样,然后求算术平均。这种方法一般适用于具有随机干扰的信号的滤波。这种信号的特点是有一个平均值,信号在某一数值范围附近上下波动。107单片机的应用设计与调试全文共187页,当前为第107页。108 这种滤波法,当n值较大时,信号的平滑度高,但灵敏度低;当n值较小时,平滑度低,但灵敏度高。应视具体情况选取n值,既要节约时间,又要滤波效果好。 对于一般流量测量,通常取经验值n

=

12;若为压力测量,则取经验值n

=

4。一般情况下,经验值n取3~5次平均即可。 读者可根据上述设计思想,设计出算术平均滤波法的子程序AVGFIL。108单片机的应用设计与调试全文共187页,当前为第108页。1092.滑动平均滤波法 算术平均滤波法,每计算一次数据需要测量n次。对于测量速度较慢或要求数据计算速度较快的实时控制系统来说,该法无效。介绍一种只需测量一次,就能得到当前算术平均值的方法——滑动平均滤波法。 滑动平均滤波法把n个采样值看成一个队列,队列的长度为n,每进行一次采样,就把最新的采样值放入队尾,而扔掉原来队首的一个采样值,这样在队列中始终有n个“最新”采样值。对队列中的n个采样值进行平均,就可以得到新的滤波值。109单片机的应用设计与调试全文共187页,当前为第109页。110 滑动平均滤波法对周期性干扰有良好的抑制作用,平滑度高,灵敏度低;但对偶然出现的脉冲性干扰的抑制作用差,不易消除由此引起的采样值的偏差。因此不适用于脉冲干扰比较严重的场合。通常,观察不同n值下滑动平均的输出响应,据此选取n值,以便既少占有时间,又能达到最好的滤波效果,其工程经验值参考如下: 下例为滑动平均滤波法的参考程序。110参数温度压力流量液面n值1~44124~12单片机的应用设计与调试全文共187页,当前为第110页。111 【例13-2】假定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论