实验一 仿真软件使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一仿真软件使用

*采用Keil uVision仿真软件

一、实验目的和要求

1. 掌握汇编语言的设计和调试的基本方法。

2. 熟悉仿真软件的应用。

二、实验设备

计算机仿真软件

三、仿真软件的使用

1.打开PC机电源,正常工作后,在显示器的桌面上点击快捷图标“Keil uVision”,进入仿真软件。

2.源文件的建立和打开:

(1) 选菜单栏点击Project 菜单,选择弹出的下拉式菜单中的New Project,在“文件名”中输入项目名称,“保存”后的文件扩展名为uv2,这是KEIL uVision2 项目文件扩展名,以后可以直接点击此文件以打开先前做的项目。

(2)选择所要的单片机,这里选择常用的Ateml 公司的AT89S52。

完成上面步骤后,就可以进行程序的编写了。

(3)首先在项目中创建新的程序文件。点击File中的New,输入相应程序。输入结束后用菜单File-Save 或快捷键Ctrl+S进行保存。如果是汇编语言编写的文件,文件的扩展名为“.ASM”,如果是C语言编写的C51文件,文件的扩展名为“.C”,

(4)将文件保存在项目所在的目录中。在图2.1屏幕左边的Source Group1 文件夹图标上右击弹出菜单,在这里可以做在项目中增加减少文件等操作。选“Add File to Group ‘Source Group 1’”弹出文件窗口,选择刚刚保存的文件,按ADD 按钮,关闭文件窗,程序文件已加到项目中了。这时在Source Group1 文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击它可以展开查看。

图2.1 图2.2 3.编译调试源文件

如果只是用做程序仿真,使用软件默认的编译设置,它不会生成用于芯片烧写的 HEX

文件。

图2.2中1、2、3 都是编译按钮,不同是 1 是用于编译单个文件。2 是编译链接当前项目, 3 是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。在 3 右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。5是菜单中的它们。在4中可以看到编译的错误信息和使用的系统资源情况等,6 是有一个小放大镜的按钮,这就是开启\关闭调试模式的按钮,它也存在于菜单Debug-Start\Stop Debug Session,快捷键为Ctrl+F5。

如图2.3所示。图中1 为运行,当程序处于停止状态时才有效,2 为停止,程序处于运行状态时才有效。3 是复位,模拟芯片的复位,程序回到最开头处执行。按4 可以打开5 中的串行调试窗口,这个窗口可以看到从51 芯片的串行口输入输出的字符。

图2.3 图2.4 运行程序时,首先打开调试窗口,再按运行键,就可以观察到程序运行的结果,最后要停止程序运行回到文件编辑模式中,就要先按停止按钮再按开启\关闭调试模式按钮。

如果让编译好的程序能通过编程器写入51芯片中,要先用编译器生成HEX文件,(具体步骤见硬件实验)。

4.观察程序运行结果

图2.5

(1)寄存器窗口:在调试状态下,点击View菜单下的Project Window命令或对应的按钮,就会显示或隐藏工程管理器窗口,然后点击窗口下边的寄存器标签,即显示出寄存器寄存器窗口程序窗口

变量窗口存储器窗口

调试命令窗口

窗口。“寄存器”中显示当前各寄存器中的内容。

两种修改寄存器(除了sec和states之外)值的方式:一是用鼠标直接点击左键进行修改;二是在图2.5所示的调试命令窗口直接输入寄存器的值,如输入“A=0x32”。

(2)变量窗口:在调试状态下,点击View菜单下的Watch & Call Stack Window命令或对应的按钮,就会显示或隐藏变量窗口。观察变量更简单的方法:在程序停止运行时,将光标放到要观察的变量上停大约1秒,就会出现对应变量的当前值。

变量窗口包含有4个显示区(标签),可以分别显示局部变量(Locals标签)、指定变量(Watch #1和Watch #2两个标签)、及堆栈调用(Call Stack标签);局部变量:显示的是当前函数中的变量,这些变量不用设置,自动出现在窗口中。其它变量:可以在Watch#1或Watch#2标签按F2输入变量名。在程序运行中,可以观察这些变量的变化,也可以用鼠标点击修改它们的值。

(3)存储器窗口:在调试状态下,点击View菜单下的Memory Window命令或对应的按钮,就会显示或隐藏存储器窗口。

“Address”栏输入不同类型的地址,可以观察不同的存储区域。

1)观察片内RAM直接寻址的data区:在Address栏输入D:xx(xx为十六进制数),便显示从xx地址开始的数据。高128字节显示的是特殊功能寄存器的内容。

2)观察片内RAM间接寻址的idata区:在Address栏输入I:xx,便显示从xx地址开始的数据。高128字节显示的也是数据区的内容。

3)观察片外RAM的xdata区:在Address栏输入X:xxxx,便显示从xxxx地址开始的数据。

4)观察程序存储器ROM code区:在Address栏输入C:xxxx,便显示从xxxx地址开始的程序代码

除程序存储器的内容不能修改外,其它3个区域数据的修改方法:用鼠标对准欲修改的单元,点击鼠标右键,在弹出的菜单中有一“Modify Memory at 0x…”命令,执行该命令,对又弹出的数据输入栏输入数据,然后用鼠标左键点击“OK”即可。

(4)串行口窗口:在调试状态下,点击View菜单下的Serial Window #1或Serial Window #2命令或对应的按钮,就会显示或隐藏串行口窗口。串行口窗口提供了一个调试串行口的界面,从串行口发送或接收的数据,都可以在该窗口显示或输入。

(5)片内外设的观察与修改:

(a)片内外设的观察:在调试状态下,点击Peripherals菜单下的不同外设选项命令,就会显示或隐藏对应外设的观察窗口。如显示定时器0窗口,点击Peripherals菜单下的Timer 下面的Timer0选项即可,如P1口,点击Peripherals菜单下的I/O ports下面的Port 1选项即可。

(b)刷新观察:在程序运行时,各个片内外设的状态会不断地变化,为了随时观察它们的变化,可以启用View菜单下的Periodic Windows Update命令,让Keil C自动周期刷新各个调试窗口。

(c) 片内外设的修改:可以在窗口中对设备直接进行设置,与程序中的命令设置一样,并且立即生效。

四、实验内容

首先单步运行程序,选主菜单/执行/单步运行或者选工具栏单步运行。运行一个循环,观察相关的寄存器和存储区的变化(R0,DPTR,A等)。

记录下数据区2000H~201FH中,在执行程序S1前后的内容变化。

相关文档
最新文档