找回密码
 注册
搜索
查看: 1249|回复: 1

[MCU资料] 单片机学习资料

[复制链接]
发表于 2008-3-28 18:37:04 | 显示全部楼层 |阅读模式
第一章  单片机仿真器的开发
第一节、设计前的准备工作?
研制者接到某项任务后,在进行具体设计之前,一般需先进行下列工作:?
1、可行性调研?
可行性调研的目的,是分析完成这个项目的可能性。进行这方面的工作,可参考国内外有关资料,看是否有人进行过类似的工作。如果有,则可分析他人是如何进行这方面工作的,有什么优点和缺点,有什么是值得借鉴的;如果没有,则需作进一步的调研,此时的重点应放在能否实现这个环节,首先从理论上进行分析,探讨实现的可能性 ,所要求的客观条件是否具备(如环境、测试手段、仪器设计、资金等),然后结合实际情况,再决定能否立项的问题。?
2、系统总体方案设计?
在进行可行性调研后,如果可以立项,下一步工作就是系统总体方案的设计。工作的重点应放在该项目的技术难度上,此时可参考这一方面更详细、更具体的资料,根据系统的不同部分和要实现的功能,参考国内外同类产品的性能,提出合理而可行的技术指标,编写出设计任务书,从而完成系统总体方案设计。?
3、设计方案细化,确定软硬件功能?
一旦总体方案决定下来,下一步的工作就是将该项目细化,即需明确哪些部分用硬件来完成 ,哪些部分用软件来完成。由于硬件结构与软件方案会相互影响,因此,从简化电路结构、降低成本、减少故障率、提高系统的灵活性与通用性方面考虑,提倡软件能实现的功能尽可能由软件来完成;但也应考虑以软件代硬件的实质是以降低系统实时性、增加处理进行为代价的,而且软件设计费用、研制周期也将增加,因此系统的软、硬件功能分配应根据系统的要求及实际情况而合理安排,统一考虑。在确定软硬件功能的基础上,设计者的工作就开始涉及到一毓的具体问题,如仪器的体积及与具体技术指标相对应的硬件实现方案,软件的总体规划等。在确定人员分工、安排工作进度、规定接口参数后,就必须考虑硬件、软件的具体设计问题了。?
在讨论具体设计问题这前,这里还要强调一下,对于一个具体应用系统的设计,上面这几部分工作是必不可少的,否则,可能导致设计方案的整体更改,甚至可能导致方案无法实现造成人力、物力的浪费。这一点,对于设计得来讲,应加倍注意。?
一个单片机应用系统的硬件设计包括两大部分内容:一是单片机系统的扩展部分设计。它包括存储器扩展和和接口扩展。存储器的扩展指EPROM、EEPROM和RAM的扩展,接口扩展是指8255、8155、8279以及其它功能器件的扩展。二是各功能模块的设计。如信号测量功能模块、信号控制功能模块、人机对话功能模块、通诚讯功能模块等,根据系统功能要求配置相应的A/D、D/A、键盘、显示器、打印机等外围设备。?
在进行应用系统的硬件设计时,首要问题是确定电路的总体方案,并需进行详细的技术论证。所谓硬件电路的总体设计,即是为实现该项目全部基本功能所需要的所有硬件的电气连线原理图。初次接触这方面工作的设计人员,往往急于求在设计总体方案上不愿花更多的时间,过于他促地开始制版和调试。这种方法不仅不妥当,而且往往是得不偿失效。因为就硬件系统来讲,电路的各部分都是紧密相关、互相协调的,任何一部分电路的考虑不充分,都会给其它部分带来难以预料的影响,轻则使系统整体结构受破坏,重则导致硬件总体大返工,由此造成的手果是可想而知的。所以,我们希望设计者不要吝啬在总体方案上所花时间。从时间上看,硬件设计的绝大部分工作量往往在最初方案的设计阶段,一个好的设计方案往往会有事半功倍的效果。一旦总体方案确定下来,下一步的工作就会很顺利进行,即使需要作部分修改,也只是在此基础上进行一些完善工作,而不会造成整体返工。?
在进行硬件的总体方案设计时,所涉及到的具体电路可借鉴他人在这方面进行的工作。因为经过别人调试和考验过的电路往往具有一定的合理性(尽管这些电路常与教科书和手册上提供的电路不完全一致,但这也可能正是经验所在)。如果在此基础上,结合自己的设计目的进行一些修改,则是一种简便、快捷的做法。当然,有些电路还需要自己设计,完全照搬是不太可能的。?在参考别人的电路时,需对其工作原理有较透彻的分析和理解,根据其工作机理了解其适用范围,从而确定其移植的可能性和需要修改的地方;对于有些关键性和尚不完全理解的电路,需要仔细分析,在设计之前先进行试验,以确定这部分电路的正确性,并在可靠性和精度等方面进行考验,尤其是模拟电路部分,更需进行这方面的工作。?
为使硬件设计尽可能合理,根据经验,系统的电路设计应注意以下几个方面:?
1、尽可能选择标准化、模块化的典型电路,提高设计的成功率和结构的灵活性;?
2、在条件允许的情况下,尽可能选用功能强、集成度高的电路或芯片。因为采用这种器件可能代替某一部分电路,不仅元件数量、接插件和相互连线减少,使系统可靠性增加,而且成本往往比用多个元件实现的电路要低。?
3、注意选择通用性强、市场货源充足的元器件,尤其对需大批量生产的场合,更应注意这方面的问题。其优点是:一旦某种元器件无法获得,也能用其它元器件直接替换或对电路稍作改动后用其它器件代替。?
4、在对硬件系统总体结构考虑时,同样要注意通用性的问题。对于一个较复杂的系统,设计者往往希望将其模块化,即对中曲控制单元、输入接口、输出接口、人机接口等分块进行设计,然后采用一定的边接方式将其组合成一个完整的系统。在这种情况下,连接方式就显得非常重要,有时可选用通用接口方式,如采用STD总线结构、PC总线结构、GPIB总线结构等。因为对于这些总线结构的边接目前应用比较广泛,不少厂家已开发出适合于这些总线结构的接口板,如输入板、输出板、A/D板等。在必要的情况下,选用现成的模块板作为系统的一部分,尽管成本有些偏高,但会大大缩短研制周期,提高工作效率。当然,在有些特殊情况和小系统的场合,用户必须自行设计接口,定义连线方式。此时要注意接口协议,一旦接口方式确定下来,各个模块的设计者应遵守该接口方式。?
5、系统的扩展及各功能模块的设计在满足应用系统功能要求的基础上,应适当留有余地,以备将来修改、扩展之需。实际上,电路设计一次成功而不作任何修改的情况是很少的,如果在设计之初未留有任何余地,后期很可能因为一点小小的改动或扩展而被迫进行全面返工。举例来说,在进行ROM扩展时,尽量选用2764以上的芯片,这样不仅将来升级方便,成本也会降低;在进行RAM扩展时,为使系统升级或增加内存方便,系统的RAM空间应留足位置,哪怕多设计一个RAM插座,不插芯片好;在进行IO口扩展时,也应给出一定的余量,这样对临时增加一些测量通道或被控对象就极为方便了。辑外在电路板设计时,可适当安排一些机动布线区,在此区域中安排若干集成芯片插座和金属化孔,但不布线,这样的样机研制过程中,若发现硬件电路有不足之处,需增加元器件时,可在机动布线区临时连线来完成,从而避免整个系统返工。在进行模拟信号处理电路设计时,尤其要注意这一点。因为在设计这类电路时,经常会增加一些电容、电阻等元器件。当然,一旦试验完成,制作正式电路板时,可以去掉机动布线区。?
6、设计时应尽可能地作些调研,采用最新的技术。因为电子技术发展迅速,器件更新换代很快,市场上不断推出性能更优、功能更强的芯片,只有时刻注意这方面的发展动态,采用新技术、新工艺,才能使产品具有最先进的性能,不落后于时代发展的潮流。?
7、在电路设计时,要充分考虑应用系统各部分的驱动能力。一些经验欠缺者往往忽视电路的驱动能力及时序问题,认为原理上通就行了,其实不然。因为不同的电路有不同的驱动能力,对后级系统的输入阻抗要求也不一样。如果阻抗匹配不当,系统驱动能力不够,将导致系统工作不可靠甚至无法工作。值得注意的是,这种不可靠很难通过一般的测试手段来确定而排除这种故障往往需要对系统作较大的调整。因此,在电路设计时,要注意增加系统的驱动能力或减少系统的功耗。?
8、工艺设计,包括机箱、面板、配线、接插件等,这也是一个初次进行系统设计人员容易疏忽但又十分重要的问题。在设计时要充分考虑到安装、调试、维修的方便。
由于应用系统种类繁多,程序编制者风格不一,因此应用软件因系统而异,因人而异。尽管如此,作为优秀的系统软件还是有其共同特点及其规律的。设计人员在进行程序设计时应从以下几个方面加以考虑:?
1、根据软件功能要求,将系统软件分成若干个相对独立的部分。根据它们之间的联系和时间上的关系,设计出合理的软件总体结构,使其清晰、简捷、流程合理。?
2、培养结构化程序设计风格,各功能程序实行模块化、子程序化。既便于调试、连接,又便于移植、修改。?
3、建立正确的数学模型。即根据功能要求,描述出各个输入和输出变量之间的数学关系,它是关系到系统性能好坏的重要因素。?
4、为提高软件设计的总体效率,以简明、直观的方法对任务进行描述,在编写应用软件之前,应绘制出程序流程图。这不仅是程序设计的一个重要组成部分,而且是决定成败的关键部分。从某种意义上讲,多花一份时间来设计程序流程图,就可以节约几倍源程序编辑调试时间。?
5、要合理分配系统资源,包括ROM、RAM、定时器/计数器、中断源等。其中最关键的是片内RAM分配。对8031来讲,片内RAM指00H~7FH单元,这128个字节的功能不完全相同,分配时应充分发挥其特长,做到物尽其用。例如在工作寄存器的8个单元中,R0和R1具有指针功能,是编程的重要角色,避免作为它用;20H~2FH这16个字节具有位寻址功能,用来存放各种标志位、逻辑变量、状态变量等;设置堆栈区时应事先估算出子程序和中断嵌套的级数及程序中栈操作指令使用情况,其大小应留有余量。若系统中扩展了RAM存储器,应把使用频率最高的数据缓冲器安排在片内RAM中,以提高处理速度。当RAM资源规划好后,应列出一张RAM资源详细分配表,以备编程查用方便。
6、注意在程序的有关位置处写上功能注释,提高程序的可读性。?
7、加强软件抗干扰设计,它是提高计算机应用系统可靠性的有力措施。?
通过编辑软件编辑出的源程序,必须用编译程序汇编后生成目标代码。如果源程序有语法错误则返回编辑过程,修改源文件后再继续编译,直到无语法错误为止。这之后就是利用目标码进行程序调试了,在运行中发现设计上的错误再重新修改源程序,如此反复直到成功。?
第二节   单片机应用系统的开发?
一个单片机应用系统经过预研、总体设计、硬件设计、软件设计、制板、元器件安装后,在系统的程序存储器中放入编制好的应用程序,系统即可运行。但一次性成功几乎是不可能的,多少会出现一些硬件、软件上的错误,这就需要通过调试来发现错误并加以改正。由于单片机在执行程序时人工是无法控制的,为了能调试程序,检查硬件、软件运行状态,就必须借助某种开发工具模拟用户实际的单片机,并且能随时观察运行的中间过程而不改变运行中有的数据性能和结果,从而进行模仿现场的真实调试。完成这一在线仿真工作的开发工具就是单片机在线仿真器。?
一、仿真系统的功能?
单片机在线仿真器必须具有以下基本功能:?
1、能输入和修改用户的应用程序;?
2、能对用户系统硬件电路进行检查与诊断;?
3、能将用户源程序编译成目标码并固化到EPROM中去;?
4、能以单步、断点、连续方式运行用户程序,正确反映用户程序执行的中间结果。
对于一个完善的在线仿真系统,为了方便用户调试,提高产品的开发效率,还应具备以下特点:?
1、不占用用户单片机的任何资源,包括8031内部RAM、特殊功能寄存器,I/O口、串行口、中断源等;?
2、 提供给用户足够的仿真RAM空间作为用户的程序存储器(最好是从零地址开始),并提供用户有足够的RAM空间作为用户的数据存储器作用;?
3、可以单步、断点、全速断点、连续方式运行仿真RM或样机EPROM内的用户程序(包括中断控制指令和中断服务程序);?
4、有较齐全的软件开发工具。如配备有交驻汇编软件,将用户用汇编语言编制的应用程序生成可执行的目标文件;具有丰富的子程序库,汇编时连同用户设计的程序一起编译成目标程序,装入仿真RAM供调和固化;具有高级语言编译系统,用户可用BASIC语言或C51语言进行编程;具有反汇编功能,对目标程序反汇编的结果可以打印或入磁盘等。
二、开发手段的选择?
目前国内用于单片机的开发系统很多,大致可分为以下四种:?
(一)、通用型单片机开发系统?
这是目前国内使用最多的一类开发装置。如上海复旦大学的SICE-Ⅱ、SICE-Ⅵ,中国科技大学的WJ-51-5、WJ-51-Ⅷ。它采用国际上流行的独立型仿真结构,与任何具有RS-232C串行接口的终端或计算机(PC/XT、286、386、APPLEⅡ等)相连,即可构成单片机开发系统。系统中配备有EPROM读出/与入器、仿真插头和其它外设,其基本配置如图3.1所示。
图3.1
在图3-1中,EPROM读出/写入器用来将用户的应用程序固化到EPROM中,或将EPROM中的程序读到仿真RAM中。在调试用户系统时,仿真插头必须插入用户系统空出的CPU插座中。当仿真器通过串行口与计算机联机后,用户可利用组合软件,先在计算机上编辑、修改源程序,然后通过MCS-51交叉汇编软件将其汇编成目标码,传送到仿真器的仿真RAM中。这时用户可用单步、断点、跟踪、全速等方式运行用户程序,系统状态实时地显示在屏幕上。该类仿真器采用模块化结构,配备有不同外设,如外存板、打印机、键盘/显示板可在现场完成仿真调试工作。
调试完毕的用户程序通过EPROM读出/固化器固化后,将芯片插入用户系统的程序存储器插座中,即可脱机(脱离仿真器)运行。?
(二)、实用型开发系统
这类装置的特点是:其硬件按照典型应用系统配置,并配有监控程序,具有自开发能力。如航天部502所的STD工业控制机就是此类产品,系统结构如图3.2所示。
图3.2
这类装置采用模块化结构,用户可根据需要选择适当的功能模块板(如A/D板、D/A板、I/O板、键盘/显示板等)组合成自己的应用系统。当它通过主板上的RS-232口和计算机连机后,如同通用型开发系统一样,可对用户程序进行编辑、修改、调试。调试好的应用程序固化到EPROM中,拔去主板上装有监控程序的EPROM芯片,换上用户的EPROM,应用系统即研制完成。为降低成本和使用方便,国内也常见单板机形式的实用型开发系统。
如武汉大学研制的SCB-1型单片单板机,结构上采用键盘/显示内含技术,整机一体化,如图3.3所示。
图3.3
该机设置有A/D、D/A通道及并行I/O口,可直接驱动打印机、开关、继电器等,用户利用它可方便地构成一个数据采集或控制系统。该机的全双工串行口,提供了方便的多机通信能力,易于建网及群控。SCB-1型单片单板机具有较强的自开发能力,带掉电保护的16KRAM可供用户调试。值得一提的是,在完成调试工作后,将地址切换开关拔向另一端,此时仿真RAM的地址范围成为0000H~1FFFH,即用户程序已完全取代了SCB-1系统监控程序的地址,在系统复位后将自动转入执行用户开发的应用程序。这一点是SCB-1型单片单板机的独特之处。采用上述手段进行开发的优点是:由于减少了系统研制时的硬件工作量,因而研制周期短、开发效率高,并且具有二次开发能力。缺点是:当不能获得最佳配置时,软硬件资源浪费较,应用场合也有一定的局限性。?
(三)、通用机开发系统?
这是一种在通用计算机(如PC机、286、386、APPLEⅡ等)中加开发模板的开发系统,如图3.4所示。
图3.4
开发模板既可插在计算机的扩展槽中,也可以总线联接方式放在外部。开发模板的硬件结构包含有计算机不可替代的部分,如EPROM写入、仿真头及CPU仿真所必须的单片机系统等。这类开发系统的优点是可以充分利用计算机系统的软、硬件资源,开发效率较高。目前国内已有一些厂家推出了用于IBM-PC、APPLEⅡ的开发模板,用户只要购置一块开发模板及相应的软件包,即可利用计算机进行单片机应用系统的开发工作。如北京康华科技发展公司和哈尔滨工业大学共同推出的KHK-ICE-51单片机仿真开发系统即是此类型发装置。?
(四)、模拟开发系统?
这是一种完全依靠软件手段进行开发的系统,该系统由计算机加模拟开发软件构成。如Cybernetic Microsystem Inc推出的SIM8051,就是在IBM-PC微机上运行的MCS-51单片机模拟/调试软件。?
模拟开发系统的工作原理是利用模拟开发软件在计算机上实现对单片机的硬件模拟、指令模拟,从而完成应用软件开发全过程,其间不需要任何在线仿真器和目标机。SIM8051软件的模拟调试功能很强,基本上包括了在线仿真器的单步、跟踪、检查和修改功能,并且还能模拟产生各种中断和I/O应答过程。因此,用户只要配备了模拟/调试软件,就可使IBM-PC微机成为一台通用的模拟开发系统。?
模拟开发系统效率高,成本低,不足之处是不能进行硬件系统的诊断与实时仿真。
三、应用系统的开发过程?
一般来说,随着用途的不同,应用系统的硬件和软件结构也不相同,但研制、开发的方法和步骤基本上是相同的。综合前面所讲的内容,可以看出应用系统的开发过程主要有下面几个步骤:?
1、预研;?
2、总体设计;?
3、系统硬件设计;?
4、系统软件设计;?
5、仿真调试(包括硬件调试和软件调试);?
6、固化应用程序,脱机运行。?
第三节   SICE-Ⅳ型单片机仿真器?
一、SICE-IV仿真器系统结构
SICE-Ⅳ采用模块式结构,整个系统由SICE-Ⅳ主模块板、EM-48板、EM-96板、EM-51板、EPROM固化/读出板、外存板及终端或主计算机所组成。用户可以根据所需开发的目标系统的机种条件,选用适宜的模块或设备以组成最佳的单片机开发系统。SICE-Ⅳ系统框图如图3.5所示。?
                                   图3.5
一、主模块板?
SICE-Ⅳ主模块板是单CPU方式的8031/8032/8344单片机仿真器。SICE-ⅣCPU若采用8032则能开发8031/8032的用户系统;若采用8344则能开发8344的用户系统。因此在开发不同机种的单片机产品时,SICE-Ⅳ中的CPU应作相应调整。SICE-Ⅳ内部具有32K EPROM作监控程序存储器,它分成若干块,离散地分布在0~FFFFH的空间内。内部的0~7FFFH的32K仿真RAM仅作为用户的目标程序存储器;8000~DFFFH RAM是多用途存储器,可以用作源程序存储器,也可以出借给用户作为目标程序存储器,还可以出借给用户作为数据存储器。E000~FFFFH为系统工作区。SICE-Ⅳ内部的这些RAM存储器都具有掉电保护功能。?
二、仿真接口?
SICE-Ⅳ有一个40芯的仿真接口(CN1),用来实现对各种用户系统的调试。?
(1) 若用户系统的CPU选用的是8031/8032/8344,那么只需将用户的CPU空出,插上40芯的仿真插头和SICE-Ⅳ仿真接口相连,就可以实现在线仿真调试;?
(2)在SICE-主模块板的仿真接口上外接EM-48仿真板,再和8748(或8749/8039/8035)等MCS-48单片机应用系统相连,就可以在线开发这些单片机的产品。?
(3)在SICE-Ⅳ主模块板仿真接口上外接IM-96BH仿真板,就可以开发MCS-96系列单片机应用系统。?
(4)在SICE-Ⅳ主模块板仿真接口上外接EM-51仿真板,就可以开发8751/8752/8744单片机应用系统。?
三、外部设备?
SICE-Ⅳ有一个40芯的通用输入/输出接口(CN2),可用来连接各种外部设备(EPROM固化器、打印机等),以满足不同用户的需要。?
1、EPROM固化/读出器?
该装置用以将SICE-Ⅳ仿真RAM中的用户系统目标程序固化到EPROM芯片中去。根据固化速度不同,分为慢速EPROM固化/读出器和快速EPROM固化/读出器两种。?
(1)慢速EPROM固化/读出器?
这是一个通用的 EPROM固化/读出器,可将SICE-Ⅳ连上此固化/读出器后,在操作命令控制下对EPROM进行固化,一旦出错,则停止固化并在屏幕上显示出错信息。SICE-Ⅳ还可以将该板上EPROM内的程序读到仿真RAM内,以便复制或通过反汇编分析EPROM内的程序。?
(2)快速EPROM固化/读出器?
对于2764、27128、27256等大容量EPROM芯片,若用慢速EPROM固化/读出器进行固化,则需要八分钟~几十分钟时间(一个字节约50ms),若采用快速EPROM固化/读出器,速度可以提高十倍以上。在固化过程中将自动检测固化的正确性,若出错则显示出错信息。除速度外,其它功能和慢速EPROM固化/读出器相同。?
2、外存板?
用来存储用户的源程序或仿真RAM内的目标程序,对于无主机或无磁盘驱动器的用户,可将外存板作为存储器使用。按其特点,外存板分为两种:?
(1)EEPROM外存板?
它的容量为32K由4片8K的58064 EEPROM所组成。扩展板插入SICE的I/O扩展口后,电源指示灯亮。开关拨向“读”位置,“允许写入”灯灭,这时只允许读不允许写。拔向“写”位置时,“允许写入”灯亮,这时读/写都可以。将程序存入EEPROM外存板比存入磁盘可靠,而且用EEPROM外存板,可以将所编辑的程序在PC机/APPLEⅡ/终端三者之间调出来或装进去。?
(2)快速外存板?
由8片8K的6264RAM和一节3伏锂电池组成,可存储应用系统的源程序。存储形式与系统机的磁盘存储形式相似,以文件形式最多可存储10个文件目录,并可列表显示文件的占有空间及文件名。它除了具有EEPROM外存板的优点外,还具有价格低、存储速度快(高于EEPROM存储速度)、使用寿命长等特点,是用户比较理想的外存储器。?
3、8748/87498751固化/读出器?
该固化/读出器对于开发内部含有EPROM单片机应用系统是必须的。它能将仿真RAM内的MCS-48或MCS-51目标程序固化到8748、8749或8751单片机内部的EPROM中,也可以将8748、8749、8048、8049或8751等单片机内部EPROM内的程序读至仿真RAM内,以便复制或分析。该板上有一个8×8双列直插开关,用来选择对8748/8749操作还是对8751操作。在固化过程中,自动检测固化的正确性,一旦出错则停止固化并显示出错信息。?
4、打印机?
凡具有Centronics通讯标准的打印机,都可以直接和SICE-Ⅳ(通过打印电缆)相连,作为仿真系统的硬拷贝输出设备,打印汇编语言源程序或调试过程中的错误信息等。?
四、SICE-Ⅳ的串行口?
SICE-Ⅳ具有二个RS-232C串行接口,其中2#RS232由8031的串行口引出,1#RS232由异步串行讯接口芯片8250的串行口引出。在一般情况下,用户可把终端。计算机和1#串行口、2#串行口中的任意一个相连,SICE-Ⅳ内的监控程序将自动检测用户的终端或计算机连接到哪一个串行口上,并自动检则终端或主机的串行通讯波特率,进而设置SICE-Ⅳ串行口的波特率和其一致。但如果出现下述二种情况,选择1#RS232和2#RS232还是有区别的。?
1)用户样机MCS-51串行口未接任何外部设备(如计算机),而用户又需调试MCS-51串行通讯程序。这时可将主机或终端连到2#RS232串行口,使用户系统和SICE-Ⅳ监控分时使用8031的串行口,相当于用户系统借用了连在SICE-Ⅳ上的计算机或终端,用户通讯程序的输出信息直接在计算机或终端的屏幕上显示出来,同时计算机或终端键盘上输入的命令又可被用户程序所接受。用这种方法,非常方便用户串行通讯的调试,而不必一定要在用户样机上接好外部设备后才能调试通讯程序。?
(2)用户样机8031的P3.0、P3.1作为第一功能I/O口使用或用户样机的MCS-51串行口已外接设备时,为了使用户MCS-51的I/O功能完善,应将主机或终端接到SICE-Ⅳ的1#232串行口上,此时SICE-Ⅳ中8031的串行口所对应的口线P3.0、P3.1由用户样机独用,在单步、断点、连续运行用户程序时,P3.0、P3.1口线状态仅受用户程序或用户操作命令的影响,从而大大方便了对用户样机的调试。?
二、SICE-Ⅳ的仿真特性和软件功能?
SICE-Ⅳ主模块板可以直接通过仿真插头和8031/8032/8344单片机的应用系统机连,实现在线仿真。?
一、MCS-51仿真特性?
1、SICE-Ⅳ可以将内部的8031(或8032/8344)完整地出借给用户系统而不占用用户单片机的任何资源(包括RAM、SFR、I/R口、中断源等)。即用户可以把SICE-Ⅳ中的单片机看作是用户系统中的单片机,可任意地安排、使用其内部资源。在调试过程中,系统的内部状态、RAM和I/O的状态只受用户程序或用户操作命令的影响,监控程序的执行不影响用户样机的资源状态。?
2、SICE-Ⅳ在线仿真MCS-51应用系统时,不占用用户的64K程序存储器空间和64K RAM/IO口地址空间,从而使用户在进行应用系统的存储器/IO设计时,不受SICE-Ⅳ结构的任何影响。?
3、SICE-Ⅳ可出借从零地址开始的56K仿真RAM作为用户的程序存储器,还可以出借24K RAM作为用户的数据存储器,这就使得用户在样机未组装好之前就可以进行软件的编制和调试工作。?
4、用户可以通过SICE-Ⅳ以单步、跟踪、非全速断点、全速断点和连续方式运行仿真RAM或样机EPROM内的程序(包括中断控制指令和中断服务程序)。?
5、SICE-Ⅳ具有很强的硬件故障和软件错误的诊断、排除功能。用户可以对样机的各种资源状态进行读出检查、修改,并根据所显示的异常状态或样机输出及相应设备的状态,定位出样机的各种硬件故障。?
6、用户通过SICE-Ⅳ具有完全的一次性仿真功能。用户系统联机和脱机时运行的程序相同,空间一致、资源使用一样。?
用户通过SICE-Ⅳ在线仿真排除了样机软、硬件故障,并且达到了预定的各项技术指标后,将软件固化,脱机后样机便研制完成。?
二、SICE-Ⅳ的软件功能特性?
SICE-Ⅳ在SICE-Ⅰ、SICE-Ⅱ的基础上,软件功能又有很大提高。它具有:?
1、编辑功能?
SICE-Ⅳ具有FD-EDIT编辑程序,提供56K的源程序存储器,用户可通过终端或主机上的键盘输入源程序,并可随时打印、修改、转储。?
2、FD-ASM51宏汇编?
SICE-Ⅳ主模块板内配有MCS-51扩展汇编程序FD-ASM51.可宏调用SICE-Ⅳ的各种运算子程序,汇编时连同用户设计的程序一起编译成目标程序装入仿真RAM中供调试和固化,文件清单可打印或存入主机中。?
3、MBASIC-51编译系统?
SICE-Ⅳ具有功能极强的MBASIC-51高级语言编译程序,用户可用BASIC语句编写程序,并允许在源程序中任意使用汇编语言指令,编译时一起编译成目标程序供调试,其间不需要连接。通过MBASIC-51生成的目标程序,具有运行速度快、程序长度短等特点,特别适合于实时控制和实时计算等场合。?
4、全符号化调试功能?
SICE-Ⅳ具有全符号化的调试功能。它允许使用江编语言的标号作为运行控制命令中的起始地址或断点地址,因此可以按源程序进行调试,不必查找程序中指令的绝对地址。这就给调试人员带来了极大的方便,尤其是在程序局部改动之后。?
由于MBASIC-51采用汇编语言的标号的结构,因而在调试用MBASIC-51高级语言编写的程序时,同样可以用标号作为运行控制命令中的起始地址和断点地址,逐个语句或逐段程序进行调试。?
5、反汇编功能?
AICE-Ⅳ配有MCS-51反汇编程序,可以对目标程序进行反汇编。对目标程序进行反汇编所得到的程序清单,可以打印或存入主机磁盘,以便分析。?
三、SICE-Ⅳ与主机和终端的连接使用方法?
SICE-Ⅳ具有二个RS232串行接口,用户可选其中之一与任何具有RS232串行口的终端或主机相连。通过键盘,用户可输入各种命令,进行应用系统的软、硬件调试。?
SICE-Ⅳ连接主机构成的单片机开发系统结构如图3.6所示。按此配置,用户可充分利用主机的显示器、磁盘、打印机及各种软件件资源,进行应用系统的开发调试工作。
图3.6
图3.6中,“EPROM固化器”可根据需要选择慢速EPROM固化/读出器或快速EPROM固化/读出器,而“8748/8749/8751固化器”仅对开发内部含有EPROM的单片机应用系统才是必需的。?
系统的操作过程如下:?
1、将SICE-Ⅳ所附的RS-232电缆插头分别是插入SICE-Ⅳ和IMB-PC的RS232插座上,使SICE-Ⅳ和主机的串行口相连;?
2、开启SICE-Ⅳ和主机电源;?
3、将带有TERMSICE通讯程序的磁盘插入IBM-PC的软盘驱动器中;?
4、在DOS状态下,在IBM-PC的键盘上打入:TERMSICE〈CR〉(注:〈CR〉即回车键)?
屏幕上将出现:?
PLEASE  INPUT  BAUD  PATE?
Baud  Rate  9600  Input  1?
            4800         2?
            3600         3?
            2400         4?
            1800         5?
            1200         6?
            900          7?
            600          8?
这时应按屏幕上的菜单选择适当数字(1~8)输入,格式为:数字〈CR〉?
以后屏幕上将出现:?
Communication on between IBM PC and SICE?
……?
……?
这时如连接无误,SICE将显示:?
SICE        8031     Emulator V3.0?
Copyright 1998 Microcomputer Lab Fudan University
*
这里的“*”为监控提示符。如“*”没有出现,表明主机和SICE-Ⅳ没有联系上,这时可按一下SICE-Ⅳ上的复位键,再在键盘上按一下〈CR〉。如还是没出现“*”符号,这时应检查SICE-Ⅳ和主机的RS-232插头是否插紧,否则就是SICE-Ⅳ的串行口或主机的串行通讯卡有故障。?
在SICE的监控提示符“*”下,用户可根据手册提供的各种操作命令对应用系统进行软件、硬件的开发调试工作。?
二、SICE-Ⅳ与终端的连接?
SICE-Ⅳ连接终端组成的单片机开发系统,如图3.7所示。?
在图3-8中,“EPROM固化器”根据所要固化的EPROM型号和速度来选择慢速EPROM固化读出器或快速EPROM固化器/读出器,外存储器也在EEPROM板和快速存储板任选一种。至于图中的“8048/49/8751固化读出器”仅对开发内部含有FPROM的单片机应用系统才是必需的。当使用终端和SICE-Ⅳ组成的开发系统对应用系统调试时,先用RS-232专用连接插头将终端与SICE-Ⅳ相连,接通SICE和终端电源,在键盘上打入一个回车键(RETURN),以启动SICE-Ⅳ进行波特率检测和设置。这时如果无连接错误,则终端的屏幕上将出现。
图3.7
SICE    8031   Emulator    V3.0?
Copyright     1989     Microcomputer Lab Fuban University
*
最后出现的“*”为监控状态提示符。在这以后可打入各种操作命令。?
第四节   用户程序的编辑、汇编、调试、固化及运行?
当一个单片机应用系统经过预研、总体设计、硬件设计、软件设计、制做电路板、安装好元器件准备进行仿真调试时,必然会面临下述问题:?
1、如何编辑、修改用户源程序;?
2、如何将源程序汇编成单片机可执行的目标程序;?
3、如何对应用程序进行仿真调试;?
4、如何将调试好的用户目标程序固化到EPROM中。?
下面结合SICE-Ⅳ仿真器,介绍用户程序的编辑、编译、调试及固化的方法。为使其更具普遍性,下面的讨论均假设SICE-Ⅳ与带有磁盘的个人计算机相连。?
一、源程序的编辑?
源程序的编辑方法有二种:?
一、利用SICE仿真器的编辑程序编写源程序?
SICE-Ⅳ配置有行编辑程序FD-EDIT,固化于系统的监控程序中,其功能和使用方法类似于IBM-PC机的EDLIN行编辑。SICE-Ⅳ向用户提供56K源程序存储器,用于存放MCS-51或MBASIC-51高级语言源程序。用户可以在主机键盘上输入源程序,并可以随时列表显示、修改源程序,还可将源程序转储到主机磁盘、外存板中,或将主机磁盘上、外存板上的源程序读至SICE-Ⅳ的源程序存储器中。 1、编辑状态进入方法?
用SICE-Ⅳ仿真器编辑程序时,只需在监控状态“*”下键入EDIT〈CR〉,即转到FDEDIT编辑状态,显示:?
FD-EDIT V3.0?
Copyright 1988 Mircocomputer Lab Fudan University

这里的“〉”为编辑状态揭示符。此后用户就如同使用IBM-PC的IDLIN一样,通过主机键盘输入源程序并进行编辑。具体使用方法请参考SICE-Ⅳ用户手册。?
2、源程序的存盘操作?
在编辑状态下,键入?
〉MSV  Ctrl+v           ;Ctrl+v是Ctrl键和V键同时按下的意思。?
此命令不是以回车结束,而是以Ctrl+v结束的,打入该命令后,显示:?
New Source File Name:?
要求输入源程序的文件名(以回车结束)。打入文件名后,开始向主机传送源程序,一面传送,一面在显示器上显示传送内容。传送完毕,主机把全部接收到的源程序记入盘中。
3、源程序的读盘操作?
如果在SICE-Ⅳ的编辑状态“〉”下,要求把存放在主机磁盘中的源程序传至SICE的源程序存储器中,则在“〉”键入?
〉MLD   Ctrl+W?
此命令是以Ctrl+W结束的,此时屏幕显示:?
Output Source FILE Name:?
要求输入将要传输到SICE的文件名(以回车结束)。打入文件名后,先清除源程序存储区,然后主机把磁盘上的源程序传输到SICE的源程序存储区中,同时在屏幕上显示传输内容。
4、从编辑状态退回监控状态?
在“〉”下,键入EXIT及回车键,则从编辑状态退回监控状态,即揭示符由“〉”变为“*”,以后可打入监控命令。另外,按SICE的复位键也可直接退回到监控状态(需再按一次回车)。?
二、利用IBM—PC的编辑程序编写源程序
利用SICE—IV所提供的FD—EDIT编写源程序显然比较麻烦,如要和SICE仿真器连机、接电源,况且FD—EDIT的编辑功能并非完美。因此在编写源程序,尤其是编辑较长的源程序时,软件设计人员往往喜欢利用PC机所能支持的编辑软件写源程序。目前使用较多的是:
(1)PE—全屏幕编辑软件
(2)WordStar—全屏幕编辑软件
(3)EDLN—行编辑软件
通过这些编辑软件编写的源程序,可以利用SICE的源程序读盘命令传到SICE的源程序存储器中。
二、源程序的汇编
用户编辑的源程序,必须经过编译才能成为单片机可执行目标程序。通常的编译方法有三种: 一、利用SICE的FD—ASM51汇编源程序
SICE—IV主模块板的监控程序中配有功能极强的MCS—51扩展汇编程序FD—ASM51.它能对Intel的《MS—51用户手册》中规定的标准格式MCS—51汇编指令进行汇编,允许在指令中使用8031、8032、8344的特殊功能寄存器名和各种位名,允许使用程序标号和各种符号。FD—ASM51除了有常规的伪指令外,还具有功能极强的宏调用指令,使用户可在汇编中直接调用浮点加、减、乘、除等各种运算三角函数、指数、对数等各种函数运算子程序。在汇编时,连用户的源程序一起将宏调用的子程序汇编成机器码装配到用户目标程序中。调用FD—ASM51的方法如下:
在编辑状态“>”下,完成对源程序的编写,或把主机磁盘上将要汇编的源程序传输到SICE的程序存储区后,键入以下命令:
>ASM51<CR>
命令执行后将对源程序存储区中的汇编程序进行汇编,执行时先显示:
FO—ASM—51 V2.0
COPYRIGHT 1987 Microcomputer Fudan University Pass 1
开始对源程序进行第一遍扫描,生成用户符号表,并对程序进行语法检查,如有错误,显示错信号和出错数目,然后返回编辑状态,这时可对源程序进行修改。如没有错误,则开始第二遍扫描,生成的机器码(目标程序)放入由ORG命令所指标的仿真RAM中(没有ORG命令时则从0000H开始存放目标程序)。
在第二遍扫描完成后,如没有错误则显示用户符号表,然后显示仿真RAM中目标程序的下一空闲单元地址,再返回编辑状态。必须指出的是:在使用扩展宏子程序调用指令Call时,由于在用户目标程序后自动插入了所调用的各种浮点运算程序,故此时显示的仿真RAM的下一空闲单元地址将远大用户自己程序的末地址L:以后固化时,应以显示的末地址为准。
二、利用SICE的MBASEC—51编译源程序
MBASIC—51是一种适合于实时控制计算使用的编译型高级语言,固化于SECE—Ⅳ的32K的监控程序中,能对MBASEC—51高级程序进行编译,产生用户的目标程序。MBASIC—51具有赋值、FOR—NEXT、IF—THEN等各种语句;能使用位、字节、整数和浮点数等数据类型,并能对各种采用汇编语言的标号结构,并允许在源程序中使用汇编语言语句。MBASEC—51是一种高速、高效的编译系统,用它产生的目标程序具有运行速度快、程序长度短等特点,特另适合于实时控制、实时计算等场合使用。调用MBASIC—51的方法如下:
在编辑状态提示符“>”下,完成对源程序的编写,或把主机磁盘上将要编译的源程序传输到SICE程序存储区后,键入以下命令:
>MBASIC 〈CR〉
可启动编译程度开始对用户的MBASIC—51源程序进行编译。编译采用二遍扫描方法,第一遍检查误法错误,形成用户符号表(包括地址标号、变量多、数据符号等)。
如果有错误,将显示出错信息和出错数目,然后返回编辑状态,这时可对源程序修改;如果没有错误,将进行第二遍扫描,逐行生成的全部机器码(目标程序)放由源程序ORG命令所指定的SICE仿真RAM中(没有ORG命令时,从0地址开始存放)在第二遍扫描完成后,若没有错误,则显示用户符号表,显示仿真RAM中目标程序的下一个空闲单元地址,再返回编辑状态,由于使用MASEC语言时,用户一般不知道自己目标程序和的长度,所以下一个空闲单元地址用户十分重要,它指出了用户目标程序的长度和位置。在调试完成后,把仿真RAM中的目标程度固化到ERPOM中去时,必须按实际的目标程序大小进行。
三、利用MCS—51交叉汇编软件汇编源程序
为了方便使用,在IBM—PC机上提供有一个MCS—51的交叉汇编程序(由出售SICE仿真机的厂家提供)。用它可在IMB—PC系列机上把MCS—51的汇编程度变成机器码程序存入在磁盘上。该交叉汇编的文件名为MCS51.EXE。例如,要把一个MCS—51的汇编程序文件PROGRAM.A SM汇编成目标文件,可在DOS状态下打入:
C〉MCS51 PROGRAM.ASM PROGRAM.PRT PROGRAM.OBJ
按回车键后,即启动MCS51交叉汇编软件对程序名为PROGRAM.ASM的源程充进行汇编。汇编完成后,生成一个列表文件PROGRAM.PRT和一个目标文件PROGRAM.OBJ,后者即为机器程序(目标程序)。
如果要利用SICE仿真器对该机器程序进行调试,可用通讯程序(文件名为TERMSICE,该软件,由出售仿真器的厂家提供)把它传输到SICE—Ⅳ中。传输方法是,在DOS状态下,键入:
C〉TERMSICE〈CR〉
在选择通讯波特率使主机与SICE—Ⅳ连机后,在监控状态睛打入:
?L Ctrl+L
这时屏幕上显示:
Output File Name:
可打入需传输的程序的文件名,如打入PROGRAM.OBJ及回车后就开始传输,同时,在屏幕上显示传输的内容。传输完毕,显示Nextadr:××××
××××为下一地址。
如果检验出错,则显示:Checksum Error
传送的目标程序放到SICE仿真器的仿真RAM中,存放的开始地址与原来汇编时的定位(ORG)地址相同。
如果需传输的地址与原来汇编时的定位地址不一样,如汇编地址为0000H,而需传输到7000H 开始的访真RAM中,可打入:
?L7000 Ctrl+L
这以后目标程序的传送过程同上,不再重复。
三、用户程序的调试
用户的源程序经过汇编后,生成的目标文件必须经过仿真调试,才能固化到应用系统的程度存储器EPROM中。 从实质上讲,应用软件的调试是对软硬件的综合调试,一方面要排除软件错误,同时进一步解决硬件部分的遣留故障。调试时可以将软件模块一个一个分开进行,再将它们连在一起统调。
仿真调试时,需将SICE-Ⅳ的仿真插头插入到应用系统空出的CPU插座中,将主机和SICE相连;通电启动后,在监控状态“*”下将被调试软件的机器码(目标文件)传送到SICE仿真器的仿真RAM中。这以后用户便可以在监控状态下,通过主机输入各种操作、控制、运行命令,对软件进行在线仿真调试。SICE-Ⅳ提供的调试命令有很多,归纳起来分为六大类:
(1) 状态和工作方式转换命令
SICE-Ⅳ处于监控状态时,有系统状态(提示符为“*”)和编辑状态(揭示符为“〉”) 二  种状态。在仿真调试MCS-51应用系统时,根据资源出借情况,分程序存储器出借方式、数据存储器出借方式、SICE串行口上设备出借方式等。
(2) 信息传送命令
这一类命令用于将目标文件在主机、SICE仿真RAM、用户ROM之间传送,包括:主机←→仿真RAM;用户ROM→仿真RAM。
(3) 读出检查命令
执行此类命令,可将8031内部各种寄存器、内部RAM、仿真RAM、用户EPROM、用户数据存储器的内容读出,并显示在主机屏幕上。
(4) 读出修改命令
执行此类命令后,可将8031内部可寻址位、特殊功能寄存器、工作寄存器、内部RAM、仿真RAM、用户数据存储器的内容读出,显示在屏幕上,并可对其进行修改。
(5) 外部设备操作命令
执行此类命令,可对SICE-Ⅳ仿真器的外部设备(如EPROM固化/读出器、EPROM外板、快速外存板、8748、8749、8751、固化读出器等)进行各种操作。
(6) 运行控制命令
执行此类命令,可以单步、跟踪、断点、连续方式运行仿真RAM或样机EPROM内的用户程序(包括中断控制指令和中断服务程序)。
限于篇幅,这里主要介绍如何利用运行控制命令对软件进行仿真调试。有关SICE-Ⅳ其它操作命令的详细使用,请读者查阅SICE-Ⅳ用户手册。
为方便用户,SICE-Ⅳ提供了二种不同风格的运行控制命令:一是非符号化运行控制命令, 二是符号化运行控制命令。
一、非符号化运行控制命令的基本格式为:
〈命令〉n1,n2,n3〈CR〉
其中命令由1~5个字符组成,n1,n2,n3为参数,均为16进制数,命令与参数之间必须用空格隔开,参数之间必须使用逗号分隔,命令必须用回车结束。
程序的调试运行可分为单步、跟踪、断点、连续四种方式:
1、单步运行命令Sn〈CR〉
它启动用户机执行地址n处的一条指令,执行完后返回监控状态。这是软件调时用来故障定位的最基本方法。由于每次执行一条指令后停止,因而用户可对执行后的现场进行检查,检查和这一条指令运行有关的特殊寄存器、内部RAM、数据存储器以及I/O口和设备的情况。 全部正确时,可继续执行下一条指令,再返回监控检查运行后的现场,若某状态或数据与指令应达目的不符,则说明这一指令或设备有问题,需根据有关状态对故障定位处理。
值得注意的是,单步命令不适用于串行通讯和I/O实时控制的调试。因为串行通讯输入是连续的,如果用单步调试,串行口的输入数据必然会产生丢失现象。
2、跟踪运行命令:Tn1,n2,n3〈CR〉
它启动用户机从n1开始逐条执行用户程序,直到n3次遇到地址n2为止。即n1为开始地址,n2为断点地址,n3为断点次数。若缺省n3(即仅键入Tn1,n2,〈CR〉),则遇到断点n2时停止。在跟踪时,每执行一条指令,显示PC、ACC、SP、……等寄存器的内容,用户可用Ctrl+S命令暂停命令的执行,以便观察程序的执行情况。
3、断点运行命令
一套应用系统软件,即使是某一模块,往往也有成百甚至上千条语句,若全用单步方法调试显然是不现实的。而连续运行虽然快,但难以知道故障位置,此时可以采用断点方式调试程序,即在程序中设置断点,程序从起始外运行到断点时停止,然后调试者可以检查执行后的现场状态,根据该功能段应达到的要求判断该段程序有无问题。假若运行不到断点地址(屏幕显示一址处于空白状态)或到达断点后的现场有错,说明这一段程序有错,这时可进一步用上述单步运行法,在有错误的程序段中一条一条执行指令,检查出错原因。灵活地使用断点和单步命令,可以很快解决软件中存在的大部分问题。
断点运行命令分为非全速和全速二种方式,应根据调试要求分别选用。
非全速断点运行命令:BK n1,n2,n3〈CR〉
其中n1为开始地址,n2为断点地址,n3为断点次数。执行此命令,使8031转到n1处开始执行用户程序,当n3次遇到n2地址时停止运行,返回监控。若参数n3省略(即输入BK n1,n2〈CR〉),表示n3=1.由于执行非全速断点运行命令,目标程序的运行时间比实际指令运行长的多,故不能用该命令调试串行口和I/O实时控制,主要用来排除用户系统中软件或硬件的静态性错误。
全速断点运行命令:G n1,n2,n3〈CR〉
其中n1,n2同前,应注意这时n3不是断点次数,而是断点处的中断状态。n3=1断点地址不在中断服务程序中;n3=2断点地址在低优先级中断服务程序中;n3=3断点地址在高优先级中断服务程序中;若n3省略则作n3=1处理。
本命令只适合于调试仿真RAM中的用户程序。执行该命令,使用户CPU全速执行仿真RAM内从地址n1开始的用户程序,直至执行到地址n2时才停下来回到监控。用全速断点运行命令可以提高调试速度,调试实时控制和串行口通讯程序应尽量采用此方式。
4、连续全速运行命令:EXn〈CR〉
执行该命令后,屏幕上显示:Execute Begin。用户CPU从地址n处连续地全速运行仿真RAM内或用户样机EPROM内的应用程序,这时不受SICE—Ⅳ监控程序的控制,只有按下SICE仿真器上的复位键才能使SICE—Ⅳ返回监控。
执行连续全速运行命令,一般是在排除了用户系统的各种软硬件故障以后才使用。主要用于全面测试用户系统技术指标。发现的错误主要是元件速度不够和多个任务之间关系处理不当引起的。一般情况下,连续全速运行时应选用用户系统的晶振工作,使测试和动态性能更精确地反映用户系统的真实情况。
二、符号化运行控制命令
为了方便对汇编或高级语言编写的源程序进行调式,SICE—Ⅳ提供有一系列符号化调试命令。符号化调式命令的格式为
〈命令〉L1,L2,n3〈CR〉
其中L1、L2为用户符号,它们为汇编或高级语言源程序的标号地址或十进制/十六进制绝对地址。符号化调试命令是微机开发系统的一个重要标志,有了它,可大大方便对用户汇编程序的调试工作。因为有了符号化调式命令,可不必去关心目标程序的存放地址,设置断点,启动运行都可以根据汇编程序的标号来进行。尤其是程序局部改动后(特别是插入一些指令),程序地址变动了,若按十六进制地址调试(非符号化调试),必须重新打印程序清单或者通过反汇编查出程序绝对地址才能进行调试。有了全符号化调试功能,则只要程序中标号名不变,就可仍用原程序清单调试。
符号化运行控制命令的执行和显示方式与对应的非符号运行控制命令相同,也具有:
1、符号化单步运行命令:STEP L〈CR〉
其中L为标号地址或用十进/十六进制格式
表示的绝对地址,能省略。该命令的执行方式同S n〈CR〉命令。
2、符号化跟踪命令:TR L1,L2〈CR〉
其中L1为标号启动地址,L2为标号断点地址,它的执行方式同T n1,n2命令。
3、符号化断点运行命令:EBL1,L2,n3〈CR〉
L1为标号启动地址,L2为标号断点地址,n3为断点次数(十进制数或标准格式的16进制数)。它的执行方式同BK n1,n2,n3〈CR〉命令。
4、符号化全速断点运行命令:GO L1,L2, n3〈CR〉
n3为中断状态说明(n3=1~3)。它的执行方式同G n1,n2,n3〈CR〉命令。
5、符号化连续全速断点运行命令:EXEC L〈CR〉命令
L为标号启动地址,该命令的执行方式同EX n〈CR〉。
符号化调试命令应在监控状态下使用。使用前必须在编辑状态下输入汇编或MBASIC—51源程序,并用ASM51或MBASIC命令进行汇编或编译,然后退回到监控状态才能使用。需特别指出的是:如果使用主机如IBM—PC上的交叉汇编软件对源程序进行汇编。不仅要把目标程序传送到SIC的仿真RAM,而且要用SYMB命令装入编用户符号表后才能使用符号化调试命令。下面举例来说明符号化调试命令的使用方法:
例:设在地址1000H处编写一个向8031内部RAM20~2FH送立即数55H的程序。其汇编程序发下:
           CRG   1000
START:    MOV   RO,#20H
           MOV   R1,#10H
           MOV   A,#55H
LOOP:     MOV   @RO,A
           INC   RO
          DJNZ   R1,LOOP
END:      NOP
          SJMP   END
在SICE的编辑状态“〉”下输入该程序,并用ASM51对它进行汇编,汇编无错后,用EXIT回到监控状态, 这时目标程序已存放到从1000H开始的仿真RAM中。不面举出用各种符号化调试命令对其进行调试的方法。
(1)键入:STEP START〈CR〉
将执行第一条指令 MOV RO,#20H
(2)键入:TR START,LOOP〈CR〉
将跟踪执行
           MOV   RO,#20H
           MOV   R1,#10H
           MOV   A,#55H
三条指令。
(3)健入:BE START,END〈CR〉
将慢速执行该程序至结束,随后返回监控。
(4)键入;GO START,END〈CR〉
将全速执行该程序至结束,随后返回监控。
(5)键入:EXEC START〈CR〉
将全速执行程序,并进入循环。
四、用户程序的固化
用户目标程序经过仿真调试通过后,就可以进行固化了。SICE—Ⅳ信真器配备有快速和慢速二种固化读出器,用于将SICE—Ⅳ仿真RAM内用户的目标程序固化到EPROM中,或将ERPOM中的程序读到SICE—Ⅳ的仿真RAM内。下面以快速固化/读出器为例,说明将仿真RAM内的0000H~1FFFH内容固化到2764EPROM内0000~1FFFH的方法。快速固化的命令是:
FMEPn1,n2,n3.〈CR〉
其含义是将仿真RAM内n1~n2的内容快速固化
到EPROM内n3为首地址的单元中去。本例的操作步骤如下:
1、将快速EPROM固化/读出器接到SICE扩展I/O口上,把2764EPROM芯片放入可锁插座内锁紧(注意方向),EPROM型号选择开关拨向2764位置,并在DICE—Ⅳ上接上固化电源Vpp(Vpp大小与所需固化的EPROM芯片有关)。
2、输入EPROM检查命令:MECK 000,1FFF〈CR〉
该命令用来检查EPROM是否空片。若是空片,屏幕就显示“OK”;否则就显示“NOT all clear!
3、输入快速EPROM与入命令:FMEP 0000,1FFF,0000〈CR〉
固化过程中,固化指示灯亮。每固化一个单元,就进行一次检查,最后进行总的检验。若正确固化完,则显示“OK”;若固化错就立即停止固化,并显示固化出错信息:
Error
Adr:××××
××××为出错的EPROM单元的下一个地址。
4、固化完成后,可用CMP命令进一步验证固化的正确性。方法是先用MCR命令将固化好的EPROM中的内容传送到仿真RAM的某个区域,再和原来需要固化的程序进行比较,检查是否一致。即键入:
?MCR 0000,1FFF,4000〈CR〉  ;将EPROM内的内容读到仿真RAM 4000H开始的单元
?MCR 0000,1FFF,4000〈CR〉    ;将仿真RAM中0000H~1FFF单元的内容与仿真RAM                                4000H开始的单元内容进行比较
在比较过程中,如果发现有不相同的地方,则逐个显示地址和对应的二个单元的内容,如全部相同,则不显示,直接回到监控状态。
固化出错的主要原因是:
•芯片未插好或固化板未连接好;
•EPROM芯片是坏的;
•EPROM芯片内原来就有内容,需进行紫外线擦除;
•固化电压Vpp太高或太低,不符合标准(固化电压Vpp必须根据所要固化的EPROM型号、制造厂家来确定。若不知道EPROM的固化电压,则Vpp可从+12V开始试验,逐渐加高,直至写入为止)。
五、用户程序的运行
经过仿真调试的用户目标程序固化到EPROM后,将其插入到样机的程度存储器插座中,连上仿真插头,接地电源,启动SICE进入监控状态,下一步就可以运行样机EPROM内的积序了。在运行之前,首先在监控状态下键入MAPO及回车,即:
?MEP0〈CR〉
该命令执行后,用户程序存储器已切换到样机中,这时可继续使用单步、跟踪、断点(全速点除外)、连续等运行控制命令运行目标样机EPROM内的程序。若程序运行不正常,则首先考虑样机程序存储器的故障,这时可使用用户程序读出合令DCn1,n2〈CR〉,检查用户样机EPROM中的程序是否能读出,读出的内容是否正确。
在一切正常后,拔下仿真插头,将8031芯片插入到样机CPU插座中,样机即研制完成。一般情况下,目标样机都能正确工作。若脱机工作不正常,则应考虑样机上的复位电路是否有故障,系统晶振是不否起振等。
应用系统的调试、开发是一件复杂而细致的工作,只能给出大致步骤,经验
发表于 2014-5-19 00:41:15 | 显示全部楼层
讲解很详细!
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-9-28 10:22 , Processed in 0.048551 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表