2.3 Keil C51 μVision2 的使用
推荐给好友
打印
加入收藏
更新于2009-06-19 08:52:31

2.3.1 单片机的仿真过程

当你写好的程序编译通过,只能说明源程序没有语法错误。要使你的应用系统达到设计目的,还要对目标板进行排错、调试和检查。这就是通常所说的仿真。仿真通常有两种方式:一种是通过硬件仿真器与试验样机联机进行的“实时”在线仿真;另外一种是在微饥上通过软件进行的模拟仿真。“实时”在线仿真的优点是可以利用仿真器的软、硬件完全模拟样机的工作状态,使试验样机在真实的工作环境中运行,可以随时观察运行结果和解决问题,缺点是价格较高。模拟仿真的方式简单易行,它是在PC机上通过运行仿真软件来创造一个模拟目标单片机的模拟环境,不需单独购买仿真器,可以进行大多数的软件开发,如数值计算、I/O口状态的变化等;缺点是对一些“实时”性很强的应用系统的开发显得无能为力,如一些接口芯片的软硬件调试。另外,如果软件模拟调试通过后,还必须通过编程器将代码写入到目标板的单片机或程序存储器中,这时才能观察到目标板的实际运行状态。典型的51系列单片机的模拟仿真软件有SIM 8051和Keil 51的Dscope 51。Keil 51的Dscope51软件仿真器则是其中的佼佼者。Keil 51不但内含功能强大的软件仿真器,而且还可以通过计算机串口方便地和硬件仿真器相连,这种硬件仿真器依托KeiI 51强大的集成仿真功能,可以实现单片机应用系统的在线仿真调试。Keil公司称这种硬件仿真器为MONITOR—51,即在国内单片机爱好者中广为流行的MON51。MON51造价便宜、制作简单、源代码公开,并且可以实现高档仿真器的大多数功能,因此深受单片机爱好者喜爱。国内许多公司都有类似产品,虽然型号不同,但功能和用法上是相同的。

2.3.2 MON51仿真器的特点

MON51仿真器是基于Keil 51集成开发设计环境的在线仿真器,其主要特点有:

  • 支持串口仿真,用户可以使用串口中断。
  • 可以仿真标准的89C51、89C52、89C58等51内核的单片机。
  • 完全仿真51单片机的P0、P2口。P0、P2口可以作为总线或普通I/O使用。
  • 可以同时支持10个断点,支持单步、断点、全速运行。
  • 支持Keil C51的IDE开发仿真环境Keil C51 μVision1、Keil C51 μVision2。支持汇编、C语言以及两种语言混合调试程序。
  • 可在线调试并观察单片机内部寄存器状态。

2.3.3 第一个实验
应用Keil C51 μVision2进行单片机的软件调试过程有以下步骤:
1. 建立一个工程项目。选择芯片,确定选项。
2. 建立汇编源文件或C源文件。
3. 用项目管理器生成各种应用文件。
4. 检查并修改源文件中的错误。
5. 编译连接通过后进行模拟仿真。
6. 编程操作。
7. 应用。

不管一个应用程序多复杂,其排错、调试过程都是由上述7步构成,只不过是程序的复杂程度不同、开发者经验不同,所需的反复次数多少不同而已。下面通过一个简单的程序实例来说明一个程序的调试过程。

1. 准备工作
假设读者已有为本书配套的实验板(下面简称实验板),或按照附录自己已经焊接、调试好实验板,把实验板通过配套的串口线连接到PC机的串口上,用配套的电源给实验板加电(可通过实验板上的发光管确认已上电)。然后按照前一节介绍的方法安装并设置好Keil C51 μVision2。

2. 建立源程序文件
单击“File”菜单,在下拉菜单中选择“New”,随后在编辑窗口中输入以下的源程序。(每条指令后面从分号“;”开始的部分可以不输入,不会影响实验的效果,这部分是对指令进行注释、说明的,但以后编程时一定要加这部分内容。另外,指令中所有的字符都必须是英文字母、数字和ASCII码中的符号,注意不能有汉字中的符号,如“#”、“;”等,但在英文的分号“;”后面可以出现包括汉字在内的任意字符。)


3. 用项目管理器生成各种应用文件
程序输入完成后,选择“File”,在下拉菜单中选中“Save as”,将该文件以扩展名为ASM格式(如HELLO.asm)保存在刚才所建立的一个文件夹中(my-test)。

4.添加文件到当前项目组中
单击工程管理器中“Targetl”前的“+”号,出现“Soource Groupl”后再单击,加亮后右击。在出现的下拉窗口中选择“AddFilestoGroupSourseGroup1”。在增加文件窗口中选择刚才以asm格式编辑的文件HELLO.asm,鼠标单击“Add”按钮,如图2-14、2-15所示,这时HELLO文件便加入到SourceGroup1这个组里了,随后关闭此对话窗口。

5.编译文件
选择主菜单栏中的“Project”,在下拉菜单中选中“Build target”,如图2-16所示,这时输出窗口出现源程序的编译结果。如果编译出错,将提示错误ERR0R(S)的类型和行号。


6.检查并修改源程序文件中的错误
我们可以根据输出窗口的提示重新修改源程序,直至编译通过为止,编译通过后将输出一个以HEX为后缀名的目标文件,如HELLO.HEX。

7.仿真调试
在主菜单中打开“Debug”栏,点击“Start/Stop Debug session”,出现2K代码限制的提示窗口后点确定,这时进入仿真调试界面(图2-17)。


点击“View”下拉菜单中的“Project Window”(图2-18),将出现图2-19中所示的片内存储器状态窗口。


点击“Peripherals”下拉菜单中的“I/O-Ports > Port3”(图2-20),将出现图2-21中所示的P3口引脚和寄存器的状态窗口。


用鼠标点击“RST”钮,使CPU复位。

下面介绍在仿真调试过程中经常要用到的几个命令。图2-22所示是将要介绍的几个调试命令在开发环境中的位置。


复位CPU(Reset CPU)。使单片机处于复位状态,即单片机的程序计数器(PC)中的值为0000H,在开发界面上使光标处于第一条指令处;使单片机的所有口线(P0~P3)都处于高电平。单片机的复位状态在以后还要详细介绍。

全速执行(Run)。按下此按钮后目标板上的单片机全速执行所建立工程(Project)中的程序。程序运行后若要停止则需要按下暂停按钮。

暂停按钮(Halt)。停止程序的全速运行。

单步或步进(Step into)。每按一次该按钮,执行光标所处的那一条指令(以下简称为当前指令或当前行),同时光标移到下一条指令行。也可用功能键F11替代。

宏单步或跳过(Step over)。对于有把握的子程序,不想费时用单步按钮调试时,可用该按钮一次越过调用子程序的指令。也可用功能键F10替代

跳出(Step out)。从子程序中跳出回到调用子程序的指令的下一条指令处。也可用组合功能键Ctrl-F11替代。

运行到光标处(Step to cursor line)。事先用鼠标点击一下所希望运行到的指令行,而后按下此按钮,程序将运行到光标处停止。也可用组合功能键Ctrl-F10替代。

设置/除去断点(Insert/Remove Breakpoint)。所谓断点是在某条或几条处设置的标记,当程序全速运行时到断点处时会自动暂停。设置断点时先把光标置于所需设置断点的指令行,然后按下此按钮。如果要除去某个断点,也要先把光标置于断点所在的指令行,然后按下此按钮。在设置断点的指令行左端将出现红色方块标记。

除去所有的断点(Kill All Breakpoints)。

使能/禁止断点(Enable/Disable Breakpoint)。当光标处于设置断点的指令行时,按下此按钮将禁止该断点,即该断点无效,表示断点的小方块变为白色。反之,当光标处于已禁止断点的指令行时,按下此按钮将使能该断点,即该断点有效,表示断点的小方块变为红色。

禁止所有的断点(Disable All Breakpoints)。

好,下面我们来实践一下。请按以下步骤操作并注意观察。

实验2-1:开发环境的使用和蜂鸣器控制
(1) 按下单步按钮,注意光标的位置及其变化(见图2-23)。
(2) 先注意一下右上角的P3口的状态,然后按下单步按钮,注意有什么变化。
(3) 再连续按4下单步按钮,此时程序已运行到标号“DELAY1S1”处,再次按下单步按钮,请注意“Project Window”窗口中寄存器R0的值有何变化。
(4) 继续多次按下单步按钮,注意有些什么样的现象。
(5) 可能你会不耐烦了,要按多少次单步按钮延时子程序才能结束、回到主程序呢,总共1048576次!好,换一个按钮:跳出按钮。按一下跳出按钮,怎么样?
(6) 赶快再按下单步按钮,把蜂鸣器关掉,否则初步成功的喜悦就要被蜂鸣器的不停鸣叫给赶跑了。
(7) 再按下全速执行按钮,蜂鸣器在鸣叫一秒钟,停止一秒钟,再鸣叫一秒钟,停止一秒钟,……。只要不按暂停按钮或关掉实验板的电源,蜂鸣器将一直这样鸣叫下去。
(8) ……
限于篇幅和相信读者的探索、自学能力,请读者自己去摸索上面已经介绍过的按钮和Keil C51 μVision2 集成开发环境的其他功能。

为帮助读者树立足够的信心,这里给出两点提示:
(1) 不管你对Keil C51 μVision2 集成开发环境中的各种命令、设置如何操作,都不会对计算机、实验板和Keil C51 μVision2 集成开发环境造成任何损害。万一出现不能解决的问题,复位计算机和实验板,再不行,重装Keil C51 μVision2 集成开发环境和按照本节的指导重新设置。
(2) 世界上的第一位大学教师绝对没有上过大学,本教材的作者们也是自学单片机的,我们行,你也行,何况Keil C51 μVision2 集成开发环境有极好的在线帮助。


8.烧录程序(编程操作)
有条件的话,可以把调试好的程序烧录到AT89C52单片机中。
9.查看结果
将烧录好程序的AT89C51芯片插回试验板上,加上电源。调试单片机并不难。请读者大胆实践吧,你一定会成为开发单片机的高手。

思考题与习题
2-1 如何开发单片机应用系统?
2-2 开发单片机有哪些工具?各起什么作用?
2-3 Keil C51 μVision2 是什么?如何安装、设置Keil C51 μVision2?Keil C51 μVision2的几个常用命令。
2-4 本章中所给程序中的指令有什么含义和功能?
2-5 总结一下用本章中所给程序和介绍的命令。

 

上一节                    下一节

相关链接


 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.