Keil软件仿真的方法: μVision5 调试器 (自动补全、注释/取消注释快捷键)


软件仿真是利用PC的CPU来模拟单片机的运行,在模拟运行的过程中,通过监测程序的方向、时间、寄存器以及变量值等关键因素来分析程序,找出存在的问题。对于8051单片机进行软件仿真的方法是使用集成开发环境提供的软件模拟器,它不需要有专用的硬件编程器或系统板的配合,可以独立完成单片机的模拟运行,接下来我们就以位操作流水灯的程序为例,来说明如何对8051系列单片机进行软件仿真。


1. μVision2调试器

μVision2集成开发环境中集成了专用的调试器,其内部有一个高速的软件模拟器,可以模拟整个8051单片机CPU、片上外围器件和寄存器的运行,并可以直观地查看程序运行时单片机的状态。

μVision2集成开发环境有两种工作模式,一种是创建模式,它是μVision2集成开发环境默认的工作模式,在为8051系列单片机开发应用程序时使用的是创建模式。

另一种工作模式是调试模式,用于对创建模式下编译完成的程序代码进行仿真调试。

这里需要说明的是,调试的过程不是软件开发所必需的,只有当我们有需要的时候才进入到该状态。为了得到正确的仿真结果,在进入到调试模式之前,需要完成以下两个步骤的设置:

1)更改晶振频率。方法是单击工具栏上的“目标选项”按钮,在“目标”选项卡中将晶振的频率设成和系统板一致的11.0592M,具体方法如图:

在这里插入图片描述

2)编译应用程序。程序在开始调试前需要进行一次成功的编译,以使所有的设置和代码生效,成功编译后会有相应提示,如图:

在这里插入图片描述

2. 调试工具

在更改了晶振频率并对程序进行正确编译后,就可以开始仿真调试了。首先需要将集成开发环境置于调试模式,方法是单击工具栏上的“开始/停止调试”按钮,将集成开发环境置于调试模式,如图

在这里插入图片描述

进入到调试模式后,软件界面有两个明显的变化,一个是工具栏上的“建造工具”按钮组会被“调试工具”按钮组替代,另一个是黄色的程序指针会出现在主函数的入口处,如图

在这里插入图片描述

μVision2集成开发环境下调试任务可以通过使用按钮来完成,这些按钮如图所示,按钮所能实现的功能也可以在“调试”菜单中找到。
在这里插入图片描述

在这里插入图片描述

μVision5集成开发环境下:
在这里插入图片描述

以下,我们要分别介绍一下这些调试按钮的功能:

1) 复位:复位后单片机各寄存器恢复到默认设置,RAM全部清零。

2)运行:程序开始全速运行,遇到断点或按下“停止”按钮会停止运行。

3)暂停:当程序处于运行状态时,执行此命令将中止程序的运行。当程序停止时,所有窗口中的信息将会被更新。

4) 跟踪:单步跟踪运行程序。每次按下该按钮,程序都会执行一条指令,如果待运行的语句是调用子函数的语句,使用“跟踪”按钮将会进入子函数的内部运行程序。

5) 单步:单步执行程序,跳过子函数。与“跟踪”功能相似,每按下一次该按钮,程序都会执行一条指令,但在运行子函数时,不会进入到子函数内部,而是将子函数作为一步执行完毕,程序指针指向下一条语句。

6) 运行到退出:单步运行并跳出子程序。如果程序当前运行在子函数内部,使用“运行到退出”按钮将会全速完成该子函数的运行并退出子函数,程序指针指向下一条语句。

7) 运行到光标行:程序将运行到光标所在位置。

8) 下一状态:表明该程序指针指示的程序行将在下一步时运行。

9) 使能/禁止跟踪记录:使能或禁止程序运行轨迹的标识。

10) 观察跟踪记录:观察程序运行的轨迹。

11) 反汇编窗口:将C代码反汇编为汇编代码并在编辑器中进行察看。

12) 查看调用堆栈窗口:打开调用堆栈 窗口。

13) 代码覆盖窗口:打开代码覆盖窗口。

14)串行口窗口:打开串行口窗口。

15) 存储器窗口:打开存储器窗口。

16) 性能分析器窗口:打开设置性能分析的窗口。

17) 工具栏:打开工具栏更新窗口。

3. 单步调试

以下将使用调试工具按钮,让程序在我们的控制下分步运行,并观察程序运行时间的变化。

1)进入调试模式后,我们会发现程序指针已经停留在主函数的第一个程序行前,程序运行到此处,花费的时间为0.00042209s,即422.09μs,如图:
在这里插入图片描述
2)单击“复位”按钮,各寄存器恢复为初始状态,时间从0开始,如图
在这里插入图片描述
3)单击“单步”按钮,程序运行至主函数的程序入口处,所用时间是422.09μs,如图
在这里插入图片描述

4)单击“单步”按钮,程序执行到下一步,所用时间是423.18μs,程序从上一步运行到这里,所用时间为1.09μs,如图
在这里插入图片描述
5)单击“单步”按钮,程序执行下一步,所用时间是424.26μs。程序从上一步运行到这里,所用时间同样为1.08μs,如图
在这里插入图片描述
6)多次单击“单步”按钮,程序执行至延时函数之后,所用时间变为441523.44μs,据此我们可以大致推断出延时函数的延时时间为441ms。更改延时函数的入口参数,多次使用软件调试的方法,可以将延时函数的延时时间精确地调整为500ms,如图
在这里插入图片描述

4. 使用断点调试

为了便于调试,我们通常会**在程序里设置一个或多个断点(Breakpoint),程序运行至断点处会停止,再次启动时程序会从断点处继续运行。**设置断点的方法有几种,最简单的是双击程序行,当程序行的前面出现红色的方块形图标时,断点即设置完成。再次在该程序行上双击鼠标,可以取消该断点,断点的设置和使用方法如下:

1)在要设置断点的地方双击鼠标,就可以在此处设置断点(红色方块)可以在程序行前点击鼠标 右键,在出现的菜单中选择“插入/删除断点”项来设置断点,如图

在这里插入图片描述

在这里插入图片描述
2)单击“运行”按钮,让程序全速运行,当程序运行至断点处时会自动停止。

在这里插入图片描述
3)再次单击“运行”按钮,程序执行完后,又回到断点处停止。
在这里插入图片描述

4)在已经设置了断点的程序行上,再次在鼠标右键菜单中,选择“插入/删除断点”项来取消断点,或选择“有效/禁止断点项”来使能或失能断点,同样的功能也可以在“调试”菜单中找到,如图

在这里插入图片描述

5. 使用监视窗口调试

在调试的过程中,可以使用观察窗口来查看寄存器的状态、时间值、变量值等。打开观察窗口的方法可以使用调试工具栏上的相关按钮,也可以在“视图”和“外围设备”菜单中打开。使用监视窗口进行调试的方法如下:

在这里插入图片描述
在这里插入图片描述

6. 调试按钮的功能

在调试工具栏上,有四个按钮从外观上看有着相似之处,它们分别为:“单步”“跟踪”“运行到退出”和“运行到光标行”按钮。

在这里插入图片描述

1.“单步”按钮

这个按钮的英文名字为“step over”,意思就是单步运行完一条指令的意思,如果待运行的语句是调用子程序的语句,使用“单步”按钮将全速运行完该子程序,并停在下一条指令处。也就是说,使用“单步”按钮,执行到调用子程序语句时,也只是用一步就执行完成,程序指针指向下一条语句上。

2.“跟踪”按钮

“跟踪”按钮在英文名称是“step into”,意思为单步跟踪运行一条指令,如果待运行的语句是调用子程序的语句,使用“跟踪”按钮将会跟踪进入子程序的内部。

3.“运行到退出”按钮

“运行到退出”按钮英文名称是“step out”,意思是“单步全速运行并跳出子程序”。

如果当前运行的是调用子程序的语句,使用“单步全速运行并跳出子程序”按钮将会全速完成子程序的运行,停在调用子程序语句的下面一行上。

例如:当程序指针运行至延时函数内部时,按下“运行到退出”按钮,程序会立即运行完延时函数,跳转到主程序中,并指向调用“delay_ms(500); ”语句的下面一行,如图。
在这里插入图片描述

4.“运行到光标行”按钮

在程序调试时,我们将光标放置在我们想让程序到达的地方,点击“运行到光标行”按钮,程序全会全速运行到光标所在位置,并且停留在这一行上,如图。

在这里插入图片描述
在这里插入图片描述

7. 程序执行时间

在这里插入图片描述

8.注释/取消注释

在这里插入图片描述

9. 自动补全

在这里插入图片描述


参考资料

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Naiva

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值