1、第第6 6章章 单片机应用系统设计与调试单片机应用系统设计与调试 6.1 6.1 单片机应用系统的设计环节单片机应用系统的设计环节 1.1.按应用需求进行方案构思和设计按应用需求进行方案构思和设计 *单片机应用系统与单片机应用系统与PCPC不同不同,外围设备如键盘外围设备如键盘,显示器显示器,外部存储器等不是标配外部存储器等不是标配,需按具体需按具体 方案设计和配备方案设计和配备,就涉及到方案选择问题就涉及到方案选择问题.*好的设计方案需满足用户要求好的设计方案需满足用户要求,又使系统简又使系统简 洁洁,且性能可靠且性能可靠,具有实施的可行性具有实施的可行性.*条件允许下设计方案应留有扩展余地
2、条件允许下设计方案应留有扩展余地,免硬免硬 件电路改动耗时费力、甚至整体推倒重来件电路改动耗时费力、甚至整体推倒重来.1 2.2.按设计方案进行元器件选择按设计方案进行元器件选择*电路用分立元件或集成电路芯片实现电路用分立元件或集成电路芯片实现,取决取决 于设计者对元器件性能的了解和工程能力、于设计者对元器件性能的了解和工程能力、经验的积累经验的积累.*元器件的选择要考虑用途元器件的选择要考虑用途,性价比、可靠性性价比、可靠性 和供货渠道等和供货渠道等.*举例说:作实验可用带举例说:作实验可用带FLASH(FLASH(闪存闪存)的单片的单片 机机(如如AT89C51),AT89C51),因可电
3、擦写因可电擦写,便于程序调试便于程序调试 与修改与修改.对定型批量生产对定型批量生产,用廉价一次性编用廉价一次性编 程的程的OTPOTP芯片芯片(如如97C51)97C51)就更节省成本就更节省成本.2 3.3.电路方案设计原则电路方案设计原则*对于未实现过的电路方案对于未实现过的电路方案,制作电路板前应制作电路板前应 进行局部电路试验进行局部电路试验,以消除设计错误可能造以消除设计错误可能造 成的失败或资源浪费成的失败或资源浪费.*局部电路试验的探索过程带有创新性质局部电路试验的探索过程带有创新性质,需需 要设计者付出智慧、耐心与毅力要设计者付出智慧、耐心与毅力.其间问题其间问题 出现的因素
4、可能是多重或多元的出现的因素可能是多重或多元的,只有局部只有局部 试验通过试验通过,总体电路方案才有可能成功总体电路方案才有可能成功.*模拟电路较数字电路不易掌握模拟电路较数字电路不易掌握,但与单片机但与单片机 结合应用会发挥更大作用结合应用会发挥更大作用,要加强这类训练要加强这类训练.3 4.4.整体调试和性能测试整体调试和性能测试 *电路板制作电路板制作,元器件焊装元器件焊装,软件编写完成后软件编写完成后,可进入整机的联调和性能测试可进入整机的联调和性能测试.尽管局部电尽管局部电 路试验通过路试验通过,但整机联调一次就成功的几率但整机联调一次就成功的几率 不会太大不会太大,调试过程需要耐心
5、细致排除故障调试过程需要耐心细致排除故障.*急于求成急于求成,忽视任何一个存在的那怕是小问忽视任何一个存在的那怕是小问 题题,到头来可能要付出更多的时间代价到头来可能要付出更多的时间代价.*正常条件下实现的基本功能正常条件下实现的基本功能,还应作偏离条还应作偏离条 件的容差测试件的容差测试,以提高可靠性和抗干扰能力以提高可靠性和抗干扰能力.作实际运行测试作实际运行测试,有助于发现存在的隐患有助于发现存在的隐患.4 5.5.文档整理文档整理 *文档是硬件设计、软件编写和调试过程的总文档是硬件设计、软件编写和调试过程的总 结结,也是系统日后维护和改进的依据也是系统日后维护和改进的依据.不要以不要以
6、 为全身投入时的了如指掌就等于日后也记忆为全身投入时的了如指掌就等于日后也记忆 如初如初,应养成善于记录第一手资料的好习惯应养成善于记录第一手资料的好习惯.*重要的是对硬件设计思想重要的是对硬件设计思想,软件编程思路软件编程思路,程程 序说明序说明(尤其内存地址分配尤其内存地址分配),),故障现象和处故障现象和处 理过程理过程,功能指标等作系统整理和记录功能指标等作系统整理和记录.*常规资料有电路原理图常规资料有电路原理图,印制电路板图印制电路板图,元器元器 件清单与参数件清单与参数,接插件引脚说明接插件引脚说明,源程序及其源程序及其 流程图流程图(流程图是修改软件最直接的依据流程图是修改软件
7、最直接的依据).).56.2 6.2 硬件功能的设计原则硬件功能的设计原则6.2.1 6.2.1 单片机应用系统的硬件组成单片机应用系统的硬件组成 *硬件组成随目的而异硬件组成随目的而异,可进行可进行I/OI/O口口扩展扩展.数数 字量可直接通过字量可直接通过I/OI/O口或中断方式输入口或中断方式输入,模拟模拟 量需经过量需经过A/DA/D变换或光电隔离输入变换或光电隔离输入,驱动信号驱动信号 的输出需由光电隔离或的输出需由光电隔离或D/AD/A变换后输出变换后输出.66.2.2 6.2.2 硬件设计的考虑硬件设计的考虑 1.1.总体设计原则总体设计原则 应体现应体现 “以人为本以人为本”的
8、理念的理念,具体是指具体是指“把把困难困难留给自己留给自己,把方便让给用户把方便让给用户”.也就是说:设也就是说:设计计者要尽可能地让系统自动实施所需功能者要尽可能地让系统自动实施所需功能,使操使操作变得简单方便作变得简单方便,这样的设计才具有长久的生这样的设计才具有长久的生命力命力,会得到用户的认同会得到用户的认同.(.(见书见书P.147P.147例例)2.2.采用合适功能的芯片采用合适功能的芯片 据实际情况用性能优异、集成度高的芯片据实际情况用性能优异、集成度高的芯片,能能减少电路硬件数量、缩小电路板空间减少电路硬件数量、缩小电路板空间,便于制便于制作和调试作和调试(如如89C5189C
9、51就不必像就不必像80C3180C31需外展需外展ROM).ROM).73.3.I/OI/O口的扩展口的扩展在外围设备较多在外围设备较多,或输入或输入/输出信号较多的场输出信号较多的场合合,或调试中也会临时使用额外的一些或调试中也会临时使用额外的一些I/OI/O口口.因此因此,在设计硬件时可考虑扩展一些备用在设计硬件时可考虑扩展一些备用I/OI/O口线口线,对电路的调试和改进会带来方便对电路的调试和改进会带来方便.4.4.以软代硬的合理运用以软代硬的合理运用 硬件电路在速度和稳定性方面占有优势硬件电路在速度和稳定性方面占有优势,缺点缺点是不够灵活是不够灵活,故障率和成本会随之增大故障率和成本
10、会随之增大.在不在不影响实时性和稳定性的条件下影响实时性和稳定性的条件下,合理运用灵活合理运用灵活的软件来实现硬件电路的功能的软件来实现硬件电路的功能,能有效地节省能有效地节省器件成本器件成本.85.5.芯片抗电源干扰的措施芯片抗电源干扰的措施 芯片采用抗电源干扰措施芯片采用抗电源干扰措施,能提高系统的可靠能提高系统的可靠性性,但这个问题往往会被人但这个问题往往会被人忽视忽视.在供电输入在供电输入端与地之间跨接一个端与地之间跨接一个(10010010001000)微法电解电微法电解电容和一个容和一个(0.010.010.10.1)微法小瓷介电容微法小瓷介电容,各芯片各芯片紧靠紧靠VCCVCC端
11、对地之间跨接一个端对地之间跨接一个(0.010.010.10.1)微法微法小瓷介电容小瓷介电容,是有效的抗电源干扰滤波方法是有效的抗电源干扰滤波方法.6.3 6.3 软件功能的设计原则软件功能的设计原则软件设计是与硬件设计结合在一起考虑的软件设计是与硬件设计结合在一起考虑的.原原则相同则相同,软件设计也需进行软件设计也需进行局部局部功能试验功能试验.91.1.采取模块化、子程序化的程序架构采取模块化、子程序化的程序架构按要求对软件进行模块化、子程序化设计按要求对软件进行模块化、子程序化设计,可可便于局部程序的试验便于局部程序的试验,及在其他应用中作同类及在其他应用中作同类功能程序的调用、移植和
12、修改功能程序的调用、移植和修改,缩短开发周期缩短开发周期.2.2.预先绘制程序流程图预先绘制程序流程图 未绘制好流程图不要急于编写程序未绘制好流程图不要急于编写程序.真正能反真正能反映出软件思维与设计方法的是流程图映出软件思维与设计方法的是流程图.只要不只要不存在逻辑关系的错误存在逻辑关系的错误,程序的编写只是填写具程序的编写只是填写具体语句的操作体语句的操作.对复杂的程序对复杂的程序,流程图是综观流程图是综观整局找出症结所在的快捷帮手整局找出症结所在的快捷帮手(见书见书P.148P.148例例)103.3.统一分配内存单元统一分配内存单元 *在编写程序之前在编写程序之前,应该应该统一统一安排
13、好内存单元安排好内存单元 分配表分配表,伴随程序的编写而随意地使用内存伴随程序的编写而随意地使用内存 单元的做法是不可取的单元的做法是不可取的.*先把堆栈安排到储存区适当的先把堆栈安排到储存区适当的高端高端位置位置.*然后分配定时器然后分配定时器/计数器的计数缓冲单元地计数器的计数缓冲单元地 址、显示缓冲区地址等址、显示缓冲区地址等.最好对变化性较大最好对变化性较大 的功能缓冲区范围的功能缓冲区范围留出留出富余量富余量,以避免缓冲以避免缓冲 区单元不足时要重新分配整个内存单元区单元不足时要重新分配整个内存单元.*用不到的工作寄存器用不到的工作寄存器2 2区和区和3 3区可作用户区可作用户RAM
14、RAM 使用使用.RAM.RAM合理布局往往能避免外扩合理布局往往能避免外扩RAMRAM芯片芯片.114.4.软件的纠错能力和提示功能软件的纠错能力和提示功能 *好的软件设计除了实现正常功能外好的软件设计除了实现正常功能外,还应具还应具 备纠错能力和提示功能备纠错能力和提示功能.其含义如下:其含义如下:*抗干扰能力抗干扰能力,程序一旦受干扰程序一旦受干扰“跑飞跑飞”,系统系统应应 能自动回到正常状态而不出现能自动回到正常状态而不出现“死机死机”现象现象.*操作纠错能力操作纠错能力,通常与提示功能结合来运用通常与提示功能结合来运用.(如键入的数字超出规定范围时如键入的数字超出规定范围时,能自动删
15、除能自动删除 并重新等待正确的键入并重新等待正确的键入,并伴有声光提示并伴有声光提示)*数据恢复能力数据恢复能力.(.(如密码数据受到干扰而破坏如密码数据受到干扰而破坏,在提取密码数据之前在提取密码数据之前,系统有能力把密码数系统有能力把密码数 据恢复到未受破坏时的正常状态据恢复到未受破坏时的正常状态,才供使用才供使用)126.4 6.4 5151系列单片机开发工具与方式系列单片机开发工具与方式完成了硬件制作、软件编写过程后完成了硬件制作、软件编写过程后,程序源代程序源代码需经汇编成为可执行目标代码码需经汇编成为可执行目标代码,再写入单片再写入单片机的片内或片外程序存储器机的片内或片外程序存储
16、器,这需借助单片机这需借助单片机开发工具来实现开发工具来实现.通常有如下几种编程方式通常有如下几种编程方式.6.4.1 6.4.1 在线仿真在线仿真 需借助单片机硬件仿真系统需借助单片机硬件仿真系统(又称又称开发系统开发系统)支支持持,属最早流行方法属最早流行方法.仿真系统由仿真装置仿真系统由仿真装置(或或称仿真器称仿真器)和仿真头两部分组成和仿真头两部分组成,内含监控程序内含监控程序,与与PCPC及用户电路板组成一套在线仿真系统及用户电路板组成一套在线仿真系统.13单片机在线仿真系统的组态单片机在线仿真系统的组态*仿真系统装置通过扁平电缆连接仿真头仿真系统装置通过扁平电缆连接仿真头(配配 有
17、有4040脚脚和和2020脚脚DIPDIP插头插头).).用户电路板中不插用户电路板中不插 单片机芯片单片机芯片,而是用而是用仿真头仿真头替代替代,相当于把相当于把 仿真器的资源全部出让给单片机仿真器的资源全部出让给单片机.14*用用PCPC上配置的操作软件上配置的操作软件(例如例如WAVE)WAVE)进行程序进行程序 编写、汇编、反汇编、目标代码生成等操作编写、汇编、反汇编、目标代码生成等操作,再通过仿真头送到用户电路板进行在线再通过仿真头送到用户电路板进行在线运行运行,同时可在同时可在PCPC上上观察观察各寄存器、存储器的执行各寄存器、存储器的执行 结果和参数值结果和参数值,进行程序在线进
18、行程序在线调试调试和修改和修改.此此 过程可反复进行过程可反复进行,直到满足设计功能直到满足设计功能.*把把PCPC上确定的程序可执行代码上确定的程序可执行代码,通过通过 编程器编程器 (又称写入器又称写入器,如如NPSNPS型型)写入写入到单片机的片内到单片机的片内 或片外或片外ROM,ROM,再插到用户电路试验板进行再插到用户电路试验板进行脱机脱机 运行运行.可重复上述仿真和写入过程可重复上述仿真和写入过程.15*在线仿真的在线仿真的优点优点:仿真调试过程就是仿真调试过程就是实际实际运运 行过程行过程.在在PCPC上通过设置断点、单步执行、上通过设置断点、单步执行、全程执行等方式全程执行等
19、方式观察观察程序的具体运行情况程序的具体运行情况,对查找故障十分有效对查找故障十分有效.但在线仿真装置的仿但在线仿真装置的仿 真头真头不通用不通用,需按单片机配置相应的仿真头需按单片机配置相应的仿真头.6.4.2 6.4.2 软件仿真软件仿真 *软件仿真需借助编程器软件仿真需借助编程器(写入器写入器)的支持的支持.利利 用操作软件用操作软件(典型的如典型的如KeilKeil软件集成开发系软件集成开发系 统统,适合汇编语言和适合汇编语言和C C语言语言),在,在PCPC上进行程上进行程 序的编写、汇编、反汇编和调试执行序的编写、汇编、反汇编和调试执行.16*在在PCPC上发现和纠正程序的语法错误
20、和逻辑错上发现和纠正程序的语法错误和逻辑错 误误.然后生成可执行代码然后生成可执行代码,再通过再通过编程器编程器写入写入 单片机芯片单片机芯片,进行进行脱机脱机运行运行.不需硬件、仿真成本低不需硬件、仿真成本低,但不能实查运行结果但不能实查运行结果,调试中要反复对编程器调试中要反复对编程器写入写入和和脱机脱机运行操作运行操作.176.4.3 6.4.3 在线编程在线编程 在线编程方式在线编程方式(ISPISP)又称下载线编程又称下载线编程,在软件仿在软件仿真的基础上真的基础上,利用利用SPISPI总线接口总线接口 (详见串行总线详见串行总线扩展技术章节扩展技术章节)把把PCPC上调试生成的可执
21、行代码上调试生成的可执行代码通过在线编程装置直接写入单片机程序存储器通过在线编程装置直接写入单片机程序存储器.18*在线编程适于具有在线编程适于具有ISPISP功能如功能如AT89S51/52AT89S51/52等单等单 片机片机.ISP.ISP的出现使程序调试变得十分方便的出现使程序调试变得十分方便,不不 必频繁操作编程器必频繁操作编程器.*并行通信并行通信下载线下载线装置装置 简单易用简单易用,其一端是其一端是 2525针针DBDB型插口连接型插口连接PCPC 机并行打印口机并行打印口;另一另一 端为端为6 6线或线或1010线的线的ISPISP 插头插头,接目标板芯片接目标板芯片.(并行
22、下载线实物照并行下载线实物照)*并行下载线内部有驱动电路并行下载线内部有驱动电路,如下如下6 6线线结构例结构例:19*PCPC为主机为主机,单片机为从机单片机为从机,通过通过74HC24474HC244线驱动线驱动 器交换数据器交换数据.P1.5P1.5口作口作MOSIMOSI(主机出从机入主机出从机入),),P1.6P1.6口口作作MISOMISO(主机入从机出主机入从机出),),P1.7P1.7口作口作SCKSCK (时钟时钟),),RSTRST(复位复位),),VCCVCC和和GNDGND共共6 6线线.20*下载线需配合下载线需配合PCPC在线编程在线编程软件软件使用使用(如双龙如双
23、龙 公司的免费软件公司的免费软件SL-ISP),SL-ISP),能够把生成的能够把生成的 HEXHEX 文件直接文件直接写入写入单片机单片机,如要如要修改修改程序代码程序代码,只只 需在需在PCPC上启动软件的下载功能即可上启动软件的下载功能即可.*用户电路板需预先制备用户电路板需预先制备6 6线线的下载线接口的下载线接口,供供 下载下载借用借用.程序下载完成后口线被程序下载完成后口线被释放释放,不会不会 对单片机口线的正常工作造成任何影响对单片机口线的正常工作造成任何影响.总结总结:上述开发设备各具特色上述开发设备各具特色,选择则取决于经选择则取决于经济条件济条件,芯片性质和经验积累芯片性质
24、和经验积累.普通任务用普通任务用软软件仿真件仿真或或在线编程在线编程能完成能完成.综合性强的任务综合性强的任务,在线仿真在线仿真开发工具更有助于问题发现和解决开发工具更有助于问题发现和解决.216.5 6.5 单片机应用系统的调试单片机应用系统的调试 *继电路原理图设计后继电路原理图设计后,通常要用实验电路板通常要用实验电路板 进行硬件和软件的调试和改进进行硬件和软件的调试和改进,定型后才制定型后才制 作印制电路板作印制电路板.*实验阶段可用插线电路板实验阶段可用插线电路板(俗称俗称面包板面包板)或或 点阵式焊盘电路板点阵式焊盘电路板(俗称俗称万用板万用板)作试验作试验.前前 者改动方便但会接
25、触不良者改动方便但会接触不良,后者接触可靠但后者接触可靠但 改动不便改动不便,且要求不能有虚焊且要求不能有虚焊.*从设计到工程实现从设计到工程实现,期间可能要进行期间可能要进行多次多次的的 方案修改方案修改.需经历一定的电路需经历一定的电路实践实践和经验和经验积积 累累,初学者更应认识这一过程的重要性初学者更应认识这一过程的重要性.226.5.1 6.5.1 硬件调试硬件调试 硬件调试前须确保电路硬件调试前须确保电路供电供电正常正常,保证芯片处保证芯片处于于安全安全状态状态,否则不能上电调试否则不能上电调试.这里着重于这里着重于电路供电和芯片安全的检查方法和措施电路供电和芯片安全的检查方法和措
26、施.1.1.电路静态检查电路静态检查 检查元器件引脚之间连线的检查元器件引脚之间连线的 通通/断断,遗漏遗漏或或错错接接等等.发现错误的有效方法是发现错误的有效方法是对照对照电路原理图电路原理图进行检查,利用万用表的欧姆挡进行检查,利用万用表的欧姆挡(或通断发声或通断发声指示档指示档)对需要连接的元件引脚对需要连接的元件引脚逐条逐条进行测试进行测试.不耐心检查急于通电试验会造成更大的麻烦不耐心检查急于通电试验会造成更大的麻烦.232.2.芯片脱机的加电检查芯片脱机的加电检查 不管用何种电路试验板不管用何种电路试验板,都提倡使用都提倡使用ICIC座座,不不要把芯片直接焊接在电路板上要把芯片直接焊
27、接在电路板上.IC.IC座能在不座能在不装芯片的情况下检测芯片引脚供电电压的装芯片的情况下检测芯片引脚供电电压的极极性性和和数值数值,消除某些电路隐患消除某些电路隐患(见书见书P.153P.153例例).).须避免在供电电压须避免在供电电压极性极性未确认之前就插上芯未确认之前就插上芯片并片并贸然通电贸然通电,这有可能导致芯片瞬间烧毁这有可能导致芯片瞬间烧毁.3.3.芯片的在线通电检查芯片的在线通电检查 芯片脱机检查正常后芯片脱机检查正常后,不是全部芯片插上不是全部芯片插上,应应逐片逐片插上并查插上并查VCCVCC正常否正常否,以判断以判断芯片芯片的好坏的好坏.246.5.2 6.5.2 软件调
28、试软件调试 软件调试是利用开发工具或开发软件软件调试是利用开发工具或开发软件,对用户对用户程序进行程序进行 编译编译、连接连接、执行执行等过程来发现程等过程来发现程序中存在的序中存在的语法语法错误或错误或逻辑逻辑错误错误,并加以排除并加以排除,或者对软件的或者对软件的功能功能进行改进和扩展进行改进和扩展.1.1.汇编系统的文件格式汇编系统的文件格式 以以后缀后缀作区分标志作区分标志.程序源代码为程序源代码为*ASMASM,编译编译后生成的可执行目标文件为后生成的可执行目标文件为 *OBJOBJ.十六进制十六进制格式格式*HEX HEX 或二进制格式或二进制格式 *BINBIN可通过转换程可通过
29、转换程序转换序转换,目标代码需用目标代码需用编程器编程器才能写入单片机才能写入单片机.252.2.汇编的执行过程汇编的执行过程 编译过程中操作软件对源程序进行两次扫描编译过程中操作软件对源程序进行两次扫描.1)1)第一次扫描第一次扫描,检查文件格式和提示语法错误检查文件格式和提示语法错误.2)2)在第一次扫描完全无错误的情况下在第一次扫描完全无错误的情况下,第二次第二次 扫描便生成目标文件扫描便生成目标文件.用户可据第一次扫描结果的语法错误报告用户可据第一次扫描结果的语法错误报告,修修改语句后再次编译改语句后再次编译,直至没有错误提示为止直至没有错误提示为止.3.3.程序调试中的测试探针方法程
30、序调试中的测试探针方法 软件调试的方法不是唯一的软件调试的方法不是唯一的,提倡通过实践探提倡通过实践探索和总结索和总结.以在线仿真为例以在线仿真为例,介绍从实践总结介绍从实践总结出来的一种出来的一种“测试探针测试探针”方法方法,能快捷调试软能快捷调试软件件.26说明说明“测试探针测试探针”的快捷调试方法电路例的快捷调试方法电路例 调试过程中必然调试过程中必然涉及到电路对外涉及到电路对外中断信号是否得中断信号是否得到响应、手动开到响应、手动开关是否起作用等关是否起作用等问题问题.分别对外部分别对外部中断中断服务程序和手动服务程序和手动开关开关检测程检测程序进行测试序进行测试,就能得到判断结果就能
31、得到判断结果,步骤如下步骤如下:1)1)设一辅助指示灯设一辅助指示灯VLVL,用口线用口线(如如 P3.6)P3.6)驱动驱动.272)2)采用下面两条采用下面两条语句语句的组合作为的组合作为测试探针测试探针.CLR P3.6 CLR P3.6 ;灯;灯VLVL亮亮AJMP$AJMP$;循环等待;循环等待把把测试探针测试探针动态地动态地插入插入到程序中需要测试的到程序中需要测试的部位部位,然后执行在线仿真中的然后执行在线仿真中的全速全速运行操作运行操作,程序遇到探针语句程序遇到探针语句AJMP$AJMP$便自动便自动停止停止,从从VLVL的状态便可的状态便可判断判断所测程序段是否正确所测程序段
32、是否正确.3)3)程序例源代码段含程序例源代码段含:外中断外中断0 0服务服务,手动开关手动开关 控制控制,除法运算等主要部分除法运算等主要部分.28ORG 0000HORG 0000HAJMP MAIAJMP MAIORG 0003H ORG 0003H ;外中断;外中断0 0入口入口AJMP IN0AJMP IN0ORG 0030H ORG 0030H ;主程序;主程序MAI:MOV SP,#60H MAI:MOV SP,#60H ;设堆栈;设堆栈NONO A02:NOPA02:NOPJB P1.7,A03 JB P1.7,A03 ;开关;开关(未合上跳转未合上跳转)MOV R7 MOV
33、R7,#12#12 查开关有否动作查开关有否动作 LCALL DLYLCALL DLY测试探针按红测试探针按红线的位置插入线的位置插入29A03A03:NOP NOP MOV A,27H MOV A,27H 查开关动作对否查开关动作对否 SETB P3.0SETB P3.0 IN0:NOP IN0:NOP ;中断服务程序;中断服务程序 CLR IE.0 CLR IE.0 查外部中断有否响应查外部中断有否响应 MOV 30H,#5MOV 30H,#5 MOV 40H,#2 MOV 40H,#2 MOV R0,#30H MOV R0,#30H MOV R1,#40H MOV R1,#40HSUB:
34、SUB:LCALL SUV LCALL SUV ;减法程序;减法程序RETI RETI 查减法是否通过查减法是否通过30测试说明测试说明:*要测试要测试S S的开合是否正常的开合是否正常,把探针语句插把探针语句插.S S正常合上时正常合上时P1.7P1.7为低为低,程序分支应使程序分支应使VLVL亮亮;若灯不亮若灯不亮,开关开关S S的硬件接触可能有问题的硬件接触可能有问题.再再 把探针语句移到把探针语句移到,若若S S合上了合上了,此分支来自此分支来自 A03,A03,灯应不亮灯应不亮;若灯亮若灯亮,说明前面说明前面P1.7P1.7处的处的 判断语句有可能写反判断语句有可能写反.*测试外部测
35、试外部中断中断0 0的输入是否得到响应的输入是否得到响应,把探针把探针 移到中断服务程序的开始部位移到中断服务程序的开始部位,然后提供然后提供 外中断触发输入信号外中断触发输入信号.如果中断响应正常如果中断响应正常,VL,VL 亮亮;否则应检查中断入口地址是否写错否则应检查中断入口地址是否写错,初始初始31 化时是否设置了相应的中断条件化时是否设置了相应的中断条件,以及外部以及外部 中断信号是否满足要求中断信号是否满足要求.由于测试探针把故由于测试探针把故 障范围集中在中断有关的部分障范围集中在中断有关的部分,排除了其他排除了其他 因素的影响因素的影响,因此能起到快速检测的效果因此能起到快速检
36、测的效果.*检测运算过程比较复杂的检测运算过程比较复杂的减法减法程序程序.用在线用在线 仿真的单步操作未免繁琐和耗时仿真的单步操作未免繁琐和耗时,把探针语把探针语 句移到程序的出口句移到程序的出口进行总体判断进行总体判断,若执行若执行 能通过能通过,灯灯VLVL亮亮;若灯若灯VLVL不亮不亮,则应进入减法则应进入减法 子程子程内部内部程序段查找故障程序段查找故障.同法把探针语句同法把探针语句 移到内部合适部位进行类似测试判断移到内部合适部位进行类似测试判断.32*如果要如果要直接测试直接测试减法程序减法程序,只需要在主程序只需要在主程序 设置堆栈之后插入一条长跳转指令设置堆栈之后插入一条长跳转指令LJMP,LJMP,跳跳 转转到减法程序的标号处到减法程序的标号处(如如SUBSUB),就能跳过,就能跳过 前面未经调试的程序段前面未经调试的程序段,使减法程序的测试使减法程序的测试 不受前面程序段的限制不受前面程序段的限制.*测试探针方法以测试探针方法以在线仿真在线仿真的调试为基础的调试为基础,用用 指示灯作结果提示指示灯作结果提示,简单、快捷有效简单、快捷有效,同样同样 适用于适用于软件仿真软件仿真和和在线编程在线编程方式方式.33下续第下续第7 7章章34