购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 Keil C51μVision2的使用

2.4.1 单片机的仿真过程

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

2.4.2 MON51仿真器的特点

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

①支持串口仿真,用户可以使用串口中断;

②可以仿真标准的 89C51、89C52、89C58和P89V51等 51内核的单片机;

③完全仿真51单片机的P0口、P2口(P0口、P2口可以作为总线或普通I/O接口使用);

④可以同时支持 10个断点,支持单步、断点、全速运行;

⑤支持Keil C51的IDE开发仿真环境Keil C51μVision1,Keil C51μVision2;支持汇编语言、C语言,以及两种语言混合调试程序;

⑥可在线调试并观察单片机内部寄存器状态。

2.4.3 第一个实验

应用Keil C51μVision2进行单片机的软件调试过程有以下步骤:

①建立一个工程项目。选择芯片,确定选项;

②建立汇编源文件或C语言源文件;

③用项目管理器生成各种应用文件;

④检查并修改源文件中的错误;

⑤编译连接通过后进行模拟仿真;

⑥编程操作;

⑦应用。

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

1.准备工作

假设读者已有为本书配套的实验板(下面简称实验板),或按照附录自己已经焊接、调试好实验板,把实验板通过配套的串口线连接到计算机的串口上,用配套的电源给实验板加电。然后按照 2.3节介绍的方法安装并设置好Keil C51μVision2。

2.建立源程序文件

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

3.用项目管理器生成各种应用文件

程序输入完成后,选择“File”,在下拉菜单中选中“Save as”,将该文件以扩展名为asm格式(如HELLO.asm)保存在刚才所建立的一个文件夹中(My-TEST)。

4.添加文件到当前项目组中

单击工程管理器中“Target 1”前的“+”号,出现“Source Group 1”后再单击,高亮后右击。在出现的下拉窗口中选择“Add Files to Group Sourse Group 1”。在增加文件窗口中选择刚才以asm格式编辑的文件HELLO.asm,单击“Add”按钮,如图 2-18和图 2-19所示,这时HELLO文件便加入到Source Group1这个组里了,随后关闭此对话窗口。

5.编译文件

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

6.检查并修改源程序文件中的错误

可以根据输出窗口的提示重新修改源程序,直至编译通过为止,编译通过后将输出一个以.hex为后缀名的目标文件,如HELLO.hex。

7.设置SoftICE模式

按照2.2节所介绍的过程与方法,利用Flash Magic软件设置将单片机设置在SoftICE模式。

出现如图 2-21所示的提示后,按下单片机实验板上的红色复位键,单片机进入SoftICE模式(ISP)。

然后再回到进入Keil C51μVision2界面进行下一步仿真调试。

图 2-18 添加文件到当前项目组中操作之一

图 2-19 添加文件到当前项目组中操作之二

图 2-20 “Build target”界面

图 2-21 仿真调试界面

8.仿真调试

在主菜单中打开“Debug”,单击“Start/Stop Debug Session”,出现 2KB代码限制的提示对话框后单击“确定”按钮,进入仿真调试界面。

单击“View”下拉菜单中的“Project Window”选项,如图 2-22所示,将出现如图 2-23所示的片内存储器状态窗口。

图 2-22 单击“View”下拉菜单中的“Project Window”选项

图 2-23 片内存储器状态窗口

单击“Peripherals”下拉菜单中的“I/O-Ports”→“Port 3”选项,如图 2-24所示,将出现如图 2-25所示的P3口引脚和寄存器的状态窗口。

图 2-24 单击“Peripherals”下拉菜单中的“I/O-Ports”中“Port 3”选项

图 2-25 P3口引脚和寄存器的状态窗口

单击如图 2-26所示中的“RST”按钮,使CPU复位。

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

图 2-26 复位CPU

图 2-27 在开发环境中的若干调试命令

(1) 复位CPU (Reset CPU)

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

(2) 全速执行(Run)

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

(3) 暂停按钮(Halt)

停止程序的全速运行。

(4) 单步或步进(Step Into)

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

(5) 宏单步或跳过(Step Over)

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

(6) 跳出(Step Out)

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

(7) 运行到光标处(Step to Cursor Line)

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

(8) 设置/除去断点(Insert/Remove Breakpoint)

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

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

(10) 使能/禁止断点(Enable/Disable Breakpoint)。

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

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

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

【实验 2-1】开发环境的使用和蜂鸣器控制。

①单击“单步”按钮,注意光标的位置及其变化,如图 2-28所示。

②先注意一下右上角的P3口的状态,然后单击“单步”按钮,注意有什么变化。

③再连续单击“单步”按钮,此时程序已运行到标号“DELAY1S1”处,再次单击“单步”按钮,请注意“Project workspace”窗口中寄存器r0的值有何变化。

④继续多次单击“单步”按钮,注意有些什么样的现象。

⑤可能你会不耐烦了,要单击多少次“单步”按钮延时子程序才能结束,回到主程序呢?总共 1 048 576次!好,换一个按钮:“跳出”按钮。单击一下跳出按钮,怎么样?

⑥赶快再单击“单步”按钮,把蜂鸣器关掉,否则初步成功的喜悦就要被蜂鸣器的不停鸣叫给赶跑了。

⑦再单击“全速执行”按钮,蜂鸣器会鸣叫一秒,停止一秒,再鸣叫一秒,再停止一秒……只要不单击“暂停”按钮或关掉实验板的电源,蜂鸣器将一直这样鸣叫下去。

⑧ ……

限于篇幅和相信读者的探索、自学能力,请读者自己去摸索上面已经介绍过的按钮和Keil C51μVision2集成开发环境的其他功能。为帮助读者树立足够的信心,这里给出两点提示:

图 2-28 调试程序时的开发环境

●不管你对Keil C51μVision2集成开发环境中的各种命令、设置如何操作,都不会对计算机、实验板和Keil C51μVision2集成开发环境造成任何损害。万一出现不能解决的问题,复位计算机和实验板;如果还不行,重装Keil C51μVision2集成开发环境和按照本节的指导重新设置。

●世界上的第一位大学教师绝对没有上过大学,本教材的作者们也是自学单片机的,我们行,你也行,何况Keil C51μVision2集成开发环境有极好的在线帮助。 P0gK8mXSW7yPyt8iX9Rb/eXvuh/xTC3pMV0RZEBTFQwlOWQnQuHemgeaB/dEOR4P

点击中间区域
呼出菜单
上一章
目录
下一章
×