LAB9000是南京伟福公司推出的一款通用微控制器仿真实验系统,该仿真实验系统由板上仿真器、实验仪、仿真软件、开关电源构成。
该实验系统可根据需要实现MCS51/MCS196单片机原理与接口、8088/8086微机原理与接口的一系列实验,实验板上提供了基本的实验电路,也在硬件上预留了自主开发实验的空间。对于基本实验,仅需连少量连接线就可完成,减少工作量。同时也提供了较为复杂的扩展性实验,以进一步锻炼学生的开发实践能力。此外,系统还为学生提供了优质的软、硬件调试手段。
该实验系统主机上有丰富的实验电路模块和灵活的组成方法,可以满足各种微机原理与接口的实验需求。该实验仪还具有通用仿真器所具有的逻辑分析仪、波形发生器和程序跟踪器等分析功能,可以让学生在做实验时不仅能了解程序的执行过程,更能直观地看到程序运行时的时序或者电路上的信号,便于学生调试程序,加深学生对执行过程的理解。
该实验系统不仅可以利用集成调试软件驱动板上仿真器进行仿真和实验,还可以不连接实验箱,仅利用PC机上的软件模拟的方式进行仿真,方便学生使用。
仿真软件LAB9000 IDE,双击其快捷方式打开软件,如图2-22所示。
图2-22 LAB9000IDE
图2-23 菜单栏
1.文件(F)(如图2-24)
图2-24 文件菜单
打开文件:打开已有的文件。
保存文件:保存用户的程序,程序编译前系统会自动保存已修改过的文件。
新建文件:建立一个新的用户程序。
另存为:将用户程序存储为另一个文件,原文件内容不变。重新打开:下拉菜单中有最近打开过的文件及项目,选择相应的文件或项目即可重新打开。
打开项目:打开一个用户项目,用户可设置仿真类型,加入用户程序,进行编译,调试。同一时间只能打开一个项目。
保存项目:将用户项目保存,编译项目时会自动保存。
新建项目:建立一个新项目。
关闭项目:关闭当前项目。
项目另存为:将项目换名存盘,但不会将项目中的模块和包含文件换成另一个名字存盘。
复制项目:将项目的所有模块备份到另一个地方。
调入目标文件:装入用户已编译好的目标文件。系统支持两种目标文件格式:BIN、HEX格式。
BIN(二进制):由编译器生成的二进制文件,也就是程序的机器码。
HEX(英特尔格式):由英特尔定义的一种格式,用ASCII码来存储编译器生成的二进制代码,这种格式包括地址、数据和校验。保存目标文件:将用户编译生成的目标文件存盘。
反汇编:将可执行的代码反汇编成汇编语言程序。
退出:退出系统,如果退出前有修改过的文件没有保存,系统会提示是否保存。
2.编辑(E)(如图2-25)
图2-25 搜索(编辑、项目)菜单
撤销键入:取消上一次文本操作。
重复键入:恢复被取消的文本操作。
剪切:删除所选定的文本内容,并将其送到剪贴板上。
复制:将选定的内容复制到剪贴板上。
粘贴:将剪贴板上的内容插入光标位置。
全选:选定当前窗口所有内容。
3.搜索(S)
查找:在当前窗口中查找符号、字符串。可以指定区分大小写方式、全字匹配方式,可以向上或向下查找。
在文件中查找:在指定的一批文件中查找某个关键字。
替换:在当前窗口查找相应的文字,并替换成指定的文字,可以在指定处替换或者全部替换。
查找下一个:查找文字符号下一次出现的地方。
转到指定行:将光标转到程序的某一行。
转到指定地址/标号:将光标转到指定地址或标号所在的位置。
转到当前PC所在行:将光标转到PC所在的程序位置。
4.项目(P)(如图2-26)
图2-26 工程窗口
编译:编译当前窗口的程序,如有错误会在信息窗口显示。
全部编译:编译项目中所有的模块,包含文件。如有错误会在信息窗口显示。
装入OMF文件:建好项目后,无需编译,直接装入在其他环境中编译好的调试信息,在伟福环境中调试。
加入模块文件:在当前项目中添加一个模块文件。
加入包含文件:在当前项目中添加一个包含文件。
5.执行(R)(如图2-27)
图2-27 执行菜单
全速执行:运行程序。
跟踪:一步一步地执行程序,跟踪程序执行的每步,观察程序运行状态。
单步:单步执行程序,与跟踪不同的是,跟踪可以跟踪到分函数及过程的内部,而单步则不跟踪到分函数内部。
执行到光标处:程序全速执行到光标所在行。
暂停:暂停正在全速执行的程序。
复位:终止调试过程,程序将被复位。如果程序正在全速执行,则应先停止。
设置PC:设置程序指针PC到光标所在行,程序将从光标所在行开始执行。
自动跟踪/单步:重复进行单步或跟踪执行程序。
添加观察项:观察变量或表达式的值,可以在观察窗口中看到。
设置/取消断点:在光标所在行设置断点。若已有断点,则取消该断点。
清除全部断点:清除程序中所有的断点。
6.窗口(W)(如图2-28)
图2-28 窗口菜单
项目窗口:打开项目窗口,以便在项目中加入模块或包含文件。
信息窗口:显示系统编译输出的信息。如果程序有错,会以图标形式指出,如图2-29所示。
图2-29
在编译信息行会有相关的生成文件,双击鼠标左键,或单击右键在弹出菜单中选择“打开”功能,可以打开相关文件。(如果有编译错误,双击左键可以在源程序中指出错误所在行,也可能在前一行或者后一行)
图2-30
例如图2-30中,双击错误提示,pusn行变红色惊叹号,可以看到,误将push写为pusn。
观察窗口:一个最简单的观察窗口如图2-31所示。项目编译正确后,可以在观察窗口中看到当前项目中的所有模块,各模块中的所在过程和函数,各个过程函数中的各个变量、结构。
图2-31 观察窗口
观察窗口也可以用观察数据时效分析,程序时效分析,代码覆盖以及影子存储器等分析结果。
表示当前项目,双击可以展开,观察到项目中的模块和项目所使用的变量。
表示项目中所包括的模块。双击可以展开,观察到项目中包含的过程函数。
表示模块中的函数,双击可以观察到模块中所用到的变量。
表示模块或函数中使用的简单变量。
表示模块或函数中使用的数组,双击可以展开数组,观察数组中各值的变化。
表示模块或函数中使用的结构,双击可以展开结构,观察结构内部变量值。
表示模块或函数中使用的指针。
表示模块或函数中使用的标号。
CPU窗口:通过CPU窗口,可以打开反汇编窗口(如图2-32),SFR窗口和REG窗口。在反汇编窗口中可观察编译正确的机器码及反汇编程序,可以更清楚地了解程序执行过程。SFR窗口中可以观察到单片机使用的SFR(特殊功能寄存器)值和位变量的值。REG窗口为R0…R7、A、DPTR等常用寄存器的值。在8086/8088体系中,没有REG。
图2-32 CPU窗口(反汇编窗口)
反汇编窗口内为程序地址,机器码,反汇编码。在机器码窗口内也支持点屏功能,在反汇编码处,点击寄存器,可以看到寄存器的值。
数据窗口:在数据窗口中可以看到CPU内部的数据值,红色的为上一步执行过程中改变过的值,窗口状态栏中为选中数据的地址,可以在选中的数据上直接修改数据的十六进制值,也可以用弹出菜单的修改功能。
弹出菜单(如图2-33):
图2-33
(1)修改:修改选中数据的值,可以输入十进制、十六进制、二进制的值,与直接修改不同的是用这种方法可以输入多种格式数据,而直接修改只能输入十六进制数据。47(十进制),2EH(十六进制),00101110B(二进制)都是有效的数据格式。
(2)转到指定地址/标号:将数据地址直接转到指定的地址和标号所在的位置。
(3)生成数据源码:将窗口中某段数据转换成源程序方式的数据,可以贴到源程序中。
(4)块操作:对窗口中的数据块进行填充、移动、写文件、读入等操作。
(5)显示为:选择不同的数据类型显示数据内容,可以是字节方式(BYTE),也可以是字方式(WORD),可以是长整型(LOINGINT),也可以是实数型(REAL)。这里是选择整个窗口的显示方式。
(6)显示列数:将窗口中数据以4列、8列、16列方式显示,适应不同需要。
断点窗口:通过断点窗口可以管理项目内的断点,可以在断点窗口中直观地看到断点的行号、内容,可以通过断点迅速定位程序所在的位置。
书签窗口:通过书签窗口可以管理项目内的书签,在项目中迅速定位程序位置。
跟踪窗口:显示跟踪器捕捉到的程序执行的轨迹,其中可以看到帧号、时标、反汇编程序、对应的源程序和程序所在的文件名。
逻辑分析窗口(如图2-34):在这窗口中观察到逻辑分析仪所采集到的波形,可以设置不同的采样方式,以满足各种情况下的需要。逻辑分析仪是数字设计中不可缺少的设备,通过它可以清楚地看到程序执行时各口输出的波形。
图2-34 逻辑分析窗口示例
工具条:可以打开/关闭菜单上的各个功能的快捷按钮。
排列窗口:对打开的程序窗口进行管理。
7.仿真器设置(O)
语言(如图2-35):
图2-35
注意: 以下命令行参数,除非用户对其非常了解并且确实需要修改这些参数,一般情况下,不要修改系统给出的缺省参数,以免不能正常编译。
(1)编译器路径:指明本系统汇编器,编译器所在位置。一般默认选择即可。
(2)ASM命令行:若使用英特尔汇编器,则需加上所需命令行参数。若使用伟福汇编器,则需选择是否使用伟福预定义的符号。一般默认选择即可。
(3)C命令行:项目中若有C语言程序,系统进行编译时,使用此行参数对C程序进行编译。一般默认选择即可。
(4)LINK命令行:系统对目标文件链接时,使用此参数链接。一般默认选择即可。
(5)编译器选择:选择如图2-35即可。
(6)缺省显示格式:制定观察变量显示的方式,一般为混合十/十六进制。
目标文件设置(如图2-36):
设置生成的目标文件的地址及生成目标文件的格式。
图2-36
仿真器设置(如图2-37):
图2-37
做8086/8088系列实验时,选择Lab9000→8086/88实验→8086或8088;做MCS51单片机实验时,则选择MCS51实验。
当连接实验箱时,将“使用伟福软件模拟器”前的√去掉。晶体频率除特殊要求外,使用默认值即可。
跟踪器/逻辑分析仪设置(如图2-38):
图2-38
(1)记时器:在程序下面的状态栏可以看到程序执行的时间。(在用硬件单步执行程序时,记时器显示的时间可能略高于实际值,这是因为仿真器在采样时间时加入了监控时间,在全速执行多条指令时,监控时间可以忽略不计)
(2)逻辑笔:通过逻辑笔可以方便地检测到电路的高低电平、脉冲频率和数量。
(3)跟踪器:通过跟踪器,可以方便地看到程序实际执行的过程,在跟踪器窗口中可以观察到程序执行时间、执行过的机器码、反汇编程序、源程序、源程序所在文件。跟踪程序动态执行过程,找出程序中一些不可预见的错误。
(4)逻辑分析仪:通过逻辑分析仪,可以看硬件工作时各点的状态,直观地用波形一一表达,更易检查出硬件、软件设计中的错误。
设置文本编辑器(如图2-39):
可在仿真器→设置文本编辑器中设置自己喜爱的文本编辑环境。
图2-39
8.帮助(H)
如图2-40所示,可在帮助菜单中设置语言或打开相关帮助手册。
图2-40
图2-41 工具栏
工具栏(如图2-41)是将菜单中的一些常用项提出,便于使用。将鼠标停留在其图标上即可显示其功能,故不再详细介绍。
第一步 新建项目。
首先选择菜单中的新建文件选项。
如图2-42所示,出现一NONAME1文件窗口,在该窗口输入用户的代码后选择保存。
出现如图2-43所示窗口,输入文件名后选择保存,注意文件名为XX.ASM格式。
图2-42 新建文件
图2-43 保存文件
选择文件菜单中的新建项目选项,出现添加模块文件窗口,如图2-44所示,选择刚才保存的文件添加。然后会出现添加包含文件窗口,如图2-45所示,本次没有包含文件可以直接点取消。最后会出现保存项目窗口(如图2-46),输入项目名后选择保存,则新建项目完成。
图2-44 加入模块文件
图2-45 加入包含文件
图2-46 保存项目
新建好项目后还需进行仿真器设置(如图2-47),根据用户的仿真需要选择相应的仿真器,这里选择8086仿真器,设置好后就可以开始调试程序。
图2-47 仿真器设置
第二步 程序调试。
程序调试一般采用跟踪或单步执行以及设置断点执行等调试方式,这样可以在SFR窗口清楚地观察到寄存器的值的变化,也可以打开数据窗口观察内存中的值的变化,这样就可以较容易地检查出错误的原因所在。
单步和跟踪都是一步一步地执行程序,区别在于单步执行不会进入子程序的执行,而跟踪会进入子程序。设置断点执行则是直接执行到断点。
我们可以在每一行的左侧点选设置或取消断点和书签,断点和书签也可以在断点窗口以及书签窗口进行管理。
书签可用于跳转到书签行(如图2-48)。
图2-48 断点和书签
调试程序时,我们可以打开CPU窗口(如图2-49)看到程序的机器码和对应存储在代码段的地址,我们也可以通过数据窗口(如图2-50)查看存储在CS(代码段)、DS(数据段)、SS(堆栈段)等地方的数据。
图2-49 CPU窗口
图2-50 数据窗口
另外我们还可以利用逻辑分析仪查看系统总线上的数据变化,调试程序(外接实验箱才有效)。首先打开菜单中仿真器→跟踪器/逻辑分析仪设置→勾选逻辑分析仪→选择好即可。在运行程序前在工具栏或窗口选项打开逻辑分析仪(如图2-51),运行程序时即可看到对应的总线波形。
图2-51 逻辑分析仪