Keil C51集成开发环境是基于80C51内核的微处理器软件开发平台,用户可以在集成开发环境下学习编写、调试单片机程序。通过学习,实验用户可以掌握运用单片机进行项目开发的过程、步骤和方法,积累一定的调试方法、技巧。
安装Keil C51 软件后,点击桌面Keil C51 快捷图标即可进入如图所示的集成开发环境,各种调试工具、命令菜单都集成在此开发环境中。以下列出的是常用菜单项的主要功能及对应的快捷键,工具栏上有常用菜单命令对应的工具按钮。
2.1 创建一个Keil C51工程(项目)
在Keil C51集成开发环境下使用Project(工程,也叫项目)来管理程序包含的所有文件模块,包括源程序(C程序,汇编程序)文件、头文件甚至说明性的技术文档。对于刚刚使用Keil C51的用户来讲,一般可以按照下面的步骤来创建一个Keil C51工程(项目)。
1、双击桌面的Keil C51 快捷图标,进入Keil C51集成开发环境。
2、执行Project菜单中的New Project命令,新建一个工程。在工程保存对话框中为工程取一个名字,工程名应能反映其功能且名字不宜太长(最好不超过8个西文字符),每个工程最好单独建一个目录(文件夹)。
3、接下来会立即弹出一个器件选择窗口。器件选择的目的是告诉最终使用的51芯片是哪一家公司的哪一种型号。因为不同型号的51芯片其内部资源不完全相同,可以根据所选器件进行SFR的预定义,在软硬件仿真过程中可提供相应的外设浮动窗口等。
4、到现在已经建立了一个空的工程项目,并为工程选择好了目标器件,但是这个工程里没有任何程序文件。下面先用Keil C51集成开发环境自带的编辑器创建一个源程序文件。执行File菜单中的New命令,会出现名为Text1的新文件窗口(如果多次执行New命令则会出现Text2,Text3等多个新文件窗口)。在此窗口中输入自己的源程序并保存为*.asm。以下是*.asm源程序清单:
MAIN: XRL P1,#0FFH ; 使P1口翻转
ACALL DELAY ; 延时一段时间
SJMP MAIN
DELAY: MOV R2,#5
DELAY2: MOV R3,#100
DELAY3: MOV R4,#100
DJNZ R4,$
DJNZ R3,DELAY3
DJNZ R2,DELAY2
RET
END
5、接下来再把*.asm源程序文件添加到*.µV工程中。在工程管理窗口内,展开Target1,用鼠标右键单击Source Group1,执行快捷菜单中的Add existing files to Group ‘Source Group1’命令,出现“添加源程序文件”窗口,找到并选择*.asm并单击Add按钮即可把已经编好的源程序文件*.asm添加到工程中。可以将多个文件加到工程中(*.µV只需要*.asm一个源程序文件就够了),添加完以后,按Close结束。
2.2 程序文件的编译(汇编)、连接
1、工程选项的设置
用鼠标右键单击Target1,执行快捷菜单中的Options for Target ‘Target 1’命令,出现如图2.2所示的工程选项设置窗口,该窗口包含多组选项。一般情况下只需设置部分组中的部分选项。点击Output标签,选中其中的“Create Hex File”,系统将在编译(汇编)、连接进制程序)。
还可根据需要对其它选项进行相应的设置。最后选“确定”退出。
2、程序的编译(汇编)、连接
接下来就可以对程序进行编译(汇编)、连接处理了。执行Project菜单中的Build Target或Rebuild All Target Files命令可对程序进行编译(汇编)、连接、生成HEX文件等一系列连续操作,可以在Build 输出窗口看到处理过程的相关信息。如果有错误发生,用户可根据系统提示修改程序中的语法错误或环境设置方面存在的问题,直到完全正确(0 Error(s),0 Warning(s))为止。
但是,是否完全符合设计要求、是否含有潜在的BUG(逻辑错误),还是不敢肯定的。一个符合要求的、好的工程项目(系统、文件或程序)是要经得起考验的。它往往还需要经软件模拟、硬件仿真、现场系统调试等反复修改、更新的过程。
3、Debug调试模式的设置
从图2.3可以看出,µVision的两种工作模式分别是:Use Simulator(软件模拟)和Use(硬件仿真)。在实验中选择使用软件模拟方式。
软件模拟工作方式选择其中Use Simlator选项,将µVision调试器设置成软件模拟仿真,它只能对程序的语法及其结构做一般性的分析,与硬件没有联系。在此模式下不需要实际的目标硬件就可以模拟80C51微控制器的很多功能,在准备硬件之前就可以测试您的应用程序,这是很有用的。在纯软件模拟工作方式下,用户程序仍定位于0000H,源程序的起始定位也不需变。当然,因为是软件模拟调试,程序中对外设的访问就无法观察运行效果,如灯亮、电机转等。但是Keil C51集成开发环境也提供了一个外设窗口来模拟外设动作,对于简单的应用程序基本上也够用了。
在调试过程中可交替采用连续、断点、单步(step into)、宏单步(step over)、到光标所在行等运行方式,还可以复位CPU,重新开始程序的调试。
断点:
巧妙的设置一些断点,能够更好帮助用户分析程序的运行机制、程序中变量的变化状况,提高工作效率。 µVision可以用几种不同的方法定义断点,即使在程序代码编译前,您也可以在编辑源程序的时候设置Execution Breaks,设断点前要从View菜单中选中File Toolbar选项,让主窗口的顶部出现File Toolbar工具栏。
断点可以用以下的方法定义和修改:
1)用File Toolbar按纽。在Editor或Disassembly窗口中的代码行点击断点按钮即可在该设置断点。
2)用快捷菜单的断点命令。在Editor或Disassembly窗口中的代码行点击鼠标右键在打开的快捷菜单中选择Insert/Remove Breakpoint命令也同样可以在该行设置断点。
3)在Output Window-Command输入框,可以使用Breakset、Breakkill、BreakEnable、Breaklist、Breakpoint命令来设置断点。 如果已经在某行设置了断点,再次在此行设置断点将取消该断点,断点设置成功后,会在该行的行首出现红颜色的断点标志。
复位CPU:
用Debug菜单或工具栏的Reset CPU命令。在不改变程序的情况下,若想使程序重新开始运行,这时执行此命令即可,执行此命令后程序指针返回到0000H地址单元,另外,一些内部特殊功能寄存器在复位期间也将重新赋值,例如A将变为00H,DPTR为0000H,SP为07H,I/O口变为0FFH。
单步跟踪(F11):
用Debug工具栏的Step或快捷命令StepInto命令按钮可以单步跟踪程序,每执行一次此命令,程序将运行一条指令(以指令为基本执行单元),当前的指令用黄色箭头标出,每执行一步箭头都会移动,已执行过的语句呈现绿色。单步跟踪在C语言环境调试下最小的运行单位是一条C语句,如果一条C语句只对应一条汇编指令,则单步跟踪 一次可以运行C语句对应一条汇编指令;如果一条C语句对应多条汇编指令,则一次单步跟踪要运行完对应的所有汇编指令。在汇编语言调试下,可以跟踪到每一个汇编指令的执行。
单步运行(F10):
用Debug工具栏的Step Over或快捷命令Step Over按钮即可实现单步运行程序,此时单步运行命令将把函数和函数调用当作一个实体来看待,因此单步运行是以语句(这一条语句不管是单一命令行还是函数调用)为基本执行单元。
执行返回(Ctrl+F11):
在用单步跟踪命令跟踪到了子函数或子程序内部时,可以使用Debug菜单栏中的Step Out of Current Function或快捷命令按钮Step Out 即可实现程序的PC指针返回到调用此子程序或函数的下一条语句。
执行到光标所在命令行(Ctrl+F10):
用工具栏或快捷菜单命令Run to Cursor Line 即可执行此命令,使程序执行到光标所在行,但不包括此行,其实质是把当前光标所在的行当作临时断点。
全速运行(F5):
用Debug工具栏的Go快捷命令Run命令按钮即可实现全速运行程序,当然若程序中已经设置断点,程序将执行到断点处,并等待调试指令。
经过在Keil C51集成开发环境下的软件模拟、或是实验仪联机进行的硬件仿真,用户程序中的错误和不足已基本上得到了纠正。但在实际的工作环境中它是否仍然符合用户的要求呢?还需要将调试好的程序下载到样机并“脱机运行”才可以确定(单片机实验系统脱离主机,独立运行)。在下载程序前首先需要确定Keil C51软件的编译环境:
1、点击菜单栏上的Project 项,在弹出的下拉式菜单中选择Option for target ‘target 1’命令,在Output选项中选中Create Hex File,即表示在编译连接后自动生成目标文件(*.HEX),点击确定命令按钮加以确认。
2、用Build或Rebuild命令重新编译连接程序,生成所需的HEX文件。
3、将HEX文件下载到实验箱中。