资源描述
附录A Keil μVision4 集成开发环境与C语言程序设计
Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。Keil公司由两家私人公司联合运营,分别是德国慕尼黑的Keil Elektronik GmbH和美国德克萨斯的Keil Software Inc。Keil公司制造和销售种类广泛的开发工具,包括ANSI C编译器、宏汇编程序、调试器、连接器、库管理器、固件和实时操作系统核心(real-time kernel)。有超过10万名微控制器开发人员在使用这种得到业界认可的解决方案。其Keil C51编译器自1988年引入市场以来成为事实上的行业标准,并支持超过500种80C51变种。Keil公司在2007年被ARM公司收购。其两家公司分别更名为ARM Germany GmbH和ARM Inc和。
2009年2月,Keil公司发布了Keil μVision4,Keil μVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,提供可在虚拟接口上随意放置窗口的完整控制能力。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的80C51兼容芯片及ARM芯片,还添加了一些其他新功能,如系统查看器(System Viewer)窗口、多项目工作空间(Multi-Project Workspace)等。
附A.1 Keil μVision4 集成开发环境
附A.1.1简介
Keil μVision4集成开发环境(Integrated Development Environment,IDE)是一个基于Windows的开发平台,它包含高效的源代码编辑器、项目(Project)管理器和程序生成(MAKE)工具。Keil μVision4支持所有的80C51嵌入式应用工具,它包括C/C++编译器宏汇编器、连接/定位器和一个HEX文件生成器。Keil μVision4通过以下特性加速MCU嵌入式应用系统的开发过程:
★ 全功能的源代码编辑器;
★ 器件库用来配置开发工具设置;
★ 项目管理器用来创建和维护项目;
★ 集成的MAKE工具可以汇编、编译和连接用户的嵌入式应用;
★ 所有开发工具的设置都是以对话框的形式出现的;
★ 具有真正的源代码级的对CPU和外围器件的调试器;
★ 高级GDI接口用来在目标硬件上进行软件调试以及和Monitor-51进行通信;
★ 与开发工具手册、器件数据手册和用户指南有直接的链接。
1.C51 编译器和A51汇编器
源代码由μVision4创建,并被C51编译成A51汇编。编译器和汇编器从源代码生成可重定位的目标文件。
Keil C51编译器完全遵照ANSIC语言标准,支持C语言的所有标准特性。另外,直接支持80C51结构的几个特性被添加里面。
Keil A51宏汇编器支持80C51及其派生系列的全部指令集。
2.LIB51库管理器
LIB51库管理器允许从由编译器或汇编器生成的目标文件创建目标库。库是一种被特别地组织过并在以后可以被连接重用的对象模块。当连接器处理一个库时,仅仅那些被使用的目标模块才被真正使用。
3.BL51连接器/定位器
BL51连接器/定位器利用从库中提取的目标模块和由编译器或汇编器生成的目标模块创建一个绝对地址的目标模块。一个绝对地址目标模块或文件包含不可重定位的代码和数据。所有的代码和数据被安置在固定的存储器单元中。
此绝对地址目标文件可以用来:
写入EPROM或其他存储器件。
通过μVision4调试器来模拟和调试。
通过仿真器来测试程序。
4.OH51目标文件转换器
OH51目标文件转换器可以把前面编译连接好的目标文件转换成能写入EPROM中的HEX文件。
5. μVision4调试器
μVision4源代码级调试器是一个理想的快速、可靠的程序调试器。此调试器包含一个高速模拟器,能够模拟整个8051系统,包括片上外围器件和外部硬件。当从器件库中选择器件时,这个器件的特性将自动配置。
μVision4调试器为在实际目标板上测试程序提供了以下2种方法:
安装MON51目标监控器到目标系统并且通过Monitor-51接口下载程序;
利用高级的GDI(AGDI)接口,把μVision4调试器绑定到目标系统。
6.Monitor-51
μVision4调试器支持用Monitor-51进行目标板调试。此监控程序驻留在目标板的存储器里,它利用串口和μVision4调试器进行通信。利用Monitor-51,μVision4调试器可以对目标硬件实行源代码级的调试。
7.RTX-51实时操作系统
RTX-51实时操作系统是一个针对8051系统的多任务核。RTX-51实时内核从本质上简化了对实时事件反应速度要求高的复杂应用系统的设计、编程和调试。RTX-51实时内核是完全集成到C51编译器中的,从而方便使用。任务描述表和操作系统的连接由BL51连接器/定位器自动控制。
附A.1.2安装
了解了Keil μVision4的一些基本概况后,下面开始在计算机上搭建MCU的集成开发环境。操作步骤如下:
首先准备Keil μVision4安装源文件,双击μVision4的Setup安装文件,弹出Keil μVision4安装的欢迎界面,如图A-1所示。
图A-1 Keil μVision4欢迎界面
单击“Next”按钮,弹出“License Agreement”对话框,如图A-2所示。这里显示了一些用户安装的协议和许可的要求,选择“I agree to all the terms of the preceding License Agreement”即可,否则无法进入下一步。
图A-2 “License Agreement”对话框
单击“Next”按钮,弹出“Folder Selection”对话框,如图A-3所示。系统默认安装在“C:\Keil”文件夹下。在这里,单击“Browse”按钮,可以选择安装的目录。
图A-3 “Folder Selection”对话框
单击“Next”按钮,弹出”Customer Information”对话框,如图A-4所示。此时,用户需要输入用户名、公司名称和E-mail,缺一不可。
图A-4 用户信息输入
单击”Next”按钮,下面便开始自动安装。
Keil μVision4安装完成后,弹出安装完成对话框,如图A-5所示。这里的几个选项的含义如下。
图A-5 完成安装
Show Release Notes:显示安装的版本注释信息。
Add Example projects to the recently used project list:添加一个示例程序到当前项目列表中。
Retain currentμVision configuration:保持当前的设置(如果是第一次安装,则不存在这个选项)。
最后,单击"Finish"按钮,便可以结束Keil μVision4集成开发环境的安装。需要注意的是,刚刚安装完的版本是试用版(Evaluation Version),代码长度有2KB限制。如果代码长度超过2KB,可与Keil公司()联系,购买LIC(License ID Code)。
附A.1.3 Keil μVision4集成开发环境界面
安装完成后,会在桌面上出现Keil μVision4程序的图标,并在“开始”程序里增加“Keil μVision4”程序项。从“开始”程序里选择“Keil μVision4”程序项或者直接双击桌面上的Keil μVision4程序图标,即可启动Keil μVision4。启动Keil μVision4后,如果是第一次运行,则打开工程项目“Hello”,如图A-6所示。
图A-6 Keil μVision4集成开发环境界面
这里可以看到,Keil μVision4集成开发环境具有典型的Windows界面风格。整个编程界面主要包括菜单栏、工具栏、项目管理区、源代码工作区和输出信息窗口。另外,还有一些功能窗口将在后面逐步介绍。下面我们将带领读者逐一认识Keil μVision4集成开发环境的主要组成部分。
附A.1.4 Keil μVision4菜单命令
Keil μVision4的菜单栏提供了项目操作、编辑操作、编译调试及帮助等各种常用操作。所有的操作基本上都可以通过菜单命令来实现。为了快速执行Keil μVision4的许多功能,有些菜单命令在工具栏上还具有工具条。为了更快速执行一些功能,Keil μVision4提供了比工具栏上的工具条更为快捷的操作,即快捷键。在Keil μVision4集成开发环境中不仅提供了常用功能的默认快捷键,同时用户也可以根据自己的需要自定义快捷键。下面就菜单命令、工具条、快捷键分别进行介绍。
1.File菜单
File菜单和标准的Windows软件的File菜单类似,提供了项目和文件的操作功能。File菜单各个命令的功能如表A-1所示。
表A-1 File菜单
菜单命令
工具条
快捷键
功能说明
New
Ctrl+N
创建一个新的空白文件
Open
Ctrl+O
打开一个已存在的文件
Close
关闭当前打开的文件
Save
Ctrl+S
保存当前打开的文件
Save as
当前文件另存为
Save all
保存所有打开的文件
Device Database
打开器件库
License Management
产品注册管理
Print Setup
设置打印机
Print
Ctrl+P
打印当前文件
Print Preview
打印预览
1 .. 10
列出最近打开的源文件或文本文件
Exit
退出KeilμVision4
2.Edit菜单
Edit菜单提供了常用的代码编辑操作命令。Edit菜单各个命令的功能如表A-2所示。
表A-2 Edit菜单
菜单命令
工具条
快捷键
功能说明
Undo
Ctrl+Z
取消上次操作
Redo
Ctrl+Y
重复上次操作
Cut
Ctrl+X
剪切选定的内容
Copy
Ctrl+C
复制选定的内容
Paste
Ctrl+V
粘贴已复制的内容
Navigate Backwards
Ctrl+Shift+-
光标移动到使用Find或go to line命令的前一行
Navigate Forwards
Ctr+-
光标移动到使用Find或go to line命令的后一行
Insert/Remove Bookmark
Ctrl+F2
设置/取消当前行的标签
Go to Next Bookmark
F2
光标移动到下一个标签
Go to Previous Bookmark
Shift+F2
光标移动到上一个标签
Clear All Bookmarks
Ctrl+Shift+F2
清除当前文件的所有标签
Find
Ctrl+F
在当前文件中查找
Replace
Ctrl+H
替换
Find in Files
Ctrl+Shift+F
在多个文件中查找
Incremental Find
Ctrl+I
渐进式寻找
Outlining
源代码概要显示模式
Advanced
各种高级编辑命令
Configuration
颜色、字体等高级配置
3.View菜单
View菜单提供了在源代码编辑和仿真调试过程中,各个窗口和工具栏的显示和隐藏命令。View菜单各个命令的功能如表A-3所示。
表A-3 View菜单
菜单命令
工具条
功能说明
Status Bar
显示/隐藏状态条
Toolbars
显示/隐藏工具栏
Project Window
显示/隐藏项目管理窗口
Books Window
显示/隐藏参考书窗口
Functions Window
显示/隐藏函数窗口
Templates Window
显示/隐藏模板窗口
Source Browser Window
显示/隐藏资源浏览器窗口
Build Output Window
显示/隐藏输出信息窗口
Find in Files Window
显示/隐藏在所有文件中查找文本窗口
Full Screen
显示/隐藏全屏显示窗口
调试模式下的菜单命令
Command Window
显示/隐藏命令行窗口
Disassembly Window
显示/隐藏反汇编窗口
Symbols Window
显示/隐藏字符变量窗口
Registers Window
显示/隐藏寄存器窗口
Call Stack Window
显示/隐藏堆栈窗口
Watch Windows
显示/隐藏变量子菜单观察窗口
Memory Windows
显示/隐藏存储器子菜单窗口
Serial Windows
显示/隐藏串行口观察子菜单窗口
Analysis Windows
显示/隐藏分析子菜单窗口
Trace
显示/隐藏跟踪子菜单窗口
System Viewer
显示/隐藏外设子菜单窗口
Toolbox Window
显示/隐藏自定义工具条窗口
Periodic Window Update
在程序运行时刷新调试窗口
4.Project菜单
Project菜单提供了MCU项目的创建、设置和编译等命令。Project菜单各个命令的功能如表A-4所示。
表A-4 Project菜单
菜单命令
工具条
快捷键
功能说明
New µVision Project...
创建新项目
New Multi-Project Workspace...
创建多项目工作空间
Open Project...
打开一个已存在的项目
Close Project
关闭当前项目
Export
导出当前一个或多个项目为μVision3格式
Manage
管理项目的包含文件、库的路径及多项目工作空间
Select Device for Target name...
为当前项目选择一个MCU类型
Remove object
从当前项目中移除选择的文件或项目组
Options for object
Alt+F7
设置当前文件、项目或项目组的配置选项
Clean target
清除编译过程中创建的中间文件
Build target
F7
编译文件并生成应用文件
Rebuild all target files
重新编译所有文件并生成应用文件
Batch Build...
批量编译文件并生成应用文件
Translate file
Ctrl+F7
编译当前文件
Stop build
停止编译当前项目
1 .. 10
列出最近打开的项目(最多10个)
5.Flash菜单
Flash菜单提供了下载程序、擦除MCU程序存储器等操作。这里的命令需要外部的编程器支持才可以使用。Flash菜单各个命令的功能,如表A-5所示。
表A-5 Flash菜单
菜单命令
工具条
功能说明
Download
下载MCU程序
Erase
擦除程序存储器
Configure Flash Tools...
打开配置工具
6.Debug菜单
Debug菜单中的命令大多用于仿真调试过程中,提供了断点、调试方式及逻辑分析等功能。Debug菜单各个命令的功能如表A-6所示。
表A-6 Debug菜单
菜单命令
工具条
快捷键
功能说明
Start/Stop Debug Session
Ctrl+F5
开始/停止仿真调试模式
Reset CPU
复位CPU(MCU)
Run
F5
运行程序,直到遇到一个断点
Stop
停止运行程序
Step
F11
单步执行程序,遇到子程序则进入
Step over
F10
单步执行程序,跳过子程序
Step out
Ctrl+F11
程序执行到当前函数的结束
Run to Cursor line
Ctrl+F10
程序执行到光标所在行
Show Next Statement
显示下一条指令
Breakpoints
Ctrl+B
打开断点对话框
Insert/Remove Breakpoint
F9
设置/取消当前行的断点
Enable/Disable Breakpoint
Ctrl+F9
使能/禁止当前行的断点
Disable All Breakpoints
禁用所有断点
Kill All Breakpoints
Ctrl+Shift+F9
取消所有断点
OS Support
打开查看事件、任务及系统信息的子菜单
Execution Profiling
打开一个带有配置选项的子菜单
Memory Map
打开存储器空间配置对话框
Inline Assembly
对某一行进行重新汇编,可以修改汇编代码
Function Editor (Open Ini File)
编辑调试函数和调试配置文件
Debug Settings
设置调试参数
7.Peripherals菜单
Peripherals菜单提供了MCU各种硬件资源的仿真对话框。这里的所有命令都只在仿真调试环境下才显示并可以使用,而且显示的资源内容随用户选择的MCU型号的不同而不同。这里列出一些常用到的Peripherals菜单命令的功能,如表A-7所示。
表A-7 Peripherals菜单
菜单命令
功能说明
Interrupt
打开中断仿真对话框
I/O Ports
打开并行端口仿真对话框
Serial
打开串口仿真对话框
Timer
打开定时器仿真对话框
Watchdog
打开看门狗仿真对话框
A/D Converter
打开A/D转换器仿真对话框
D/A Converter
打开D/A转换器仿真对话框
I²C Controller
打开I2C总线控制器仿真对话框
CAN Controller
打开CAN总线控制器仿真对话框
8.Tools菜单
Tools菜单提供了一些第三方软件的支持,例如PC-Lint。用户需要额外安装相应的软件才可以使用。Tools菜单一般使用得比较少,这里仅列出各个命令的功能,如表A-8所示。
表A-8 Tool菜单
菜单命令
功能说明
Set-up PC-Lint
配置PC-Lint程序
Lint
用PC-Lint程序处理当前编辑的文件
Lint All C-Source Files
用PC-Lint程序处理项目中所有的C源代码文件
Customize Tools Menu...
自定义工具菜单
9.SVSC菜单
SVSC菜单提供了程序的版本控制,该菜单下仅包括“Configure Version Control”一个命令,用于配置软件版本。
另外,Windows菜单下提供了对工作区窗口布局的管理,Help菜单提供了一些帮助信息,这里不再具体介绍。
附A.2 Keil μVision4汇编语言程序的调试方法
Keil μVision4集成开发环境中包括一个项目管理器,它可以使基于80C51内核的MCU应用系统设计变得简单。要创建一个应用,需要按下列步骤操作:
1.启动Keil μVision4,新建一个项目文件并从器件库中选择一个器件;
2.新建一个源文件并把它加入到项目中;
3. 设置目标硬件选项;
4.编译项目并生成可以编程到程序存储器的HEX文件;
5. 软件模拟调试及下载到MCU中进行仿真调试。
下面通过一个实例,详细介绍如何在Keil μVision4集成开发环境中调试80C51系列MCU的汇编语言程序。
【例A-1】假设晶振频率为11.0592MHz,将MCU片外RAM中40H—5FH单元中的内容全部移到片内相同地址区域,并将原数据区全部清零。
附A.2.1启动Keil μVision4并创建一个项目
双击桌面Keil μVision4程序图标或单击开始菜单中的Keil μVision4程序项,启动Keil μVision4集成开发环境。
要新建一个项目文件,可以从Keil μVision4的Project菜单中选择“New Project”项,打开“Create New Project”对话框,如图A-7所示。
图A-7 “Create New Project”对话框
在此对话框的“文件名”栏中输入项目文件名。建议为每一个项目建立一个独立的文件夹。首先,在下拉列表中选择要保存的位置,最好选择逻辑盘D或E(不要保存在系统盘C,避免因系统重新安装而丢失文件)。单击“新建文件夹”,,得到一个空文件夹,给该文件夹重命名为“test”(文件夹的名字最好能够体现项目名称)。双击该文件夹,在“文件名(N)”栏中输入项目的名称,如“movedata”,创建一个文件名为“movedata.uvproj”的新项目文件。
单击“保存(S)”按钮,将弹出“Select Device for Target ‘Target 1’”对话框,提示为项目选择一个MCU。在该对话框中,“Data base”列表框中显示出各个MCU的生产商。首先找到选用的MCU生产商,单击前面的“+”号,显示出Keil μVision4所支持的该公司的MCU型号列表,单击其中选定的MCU型号。如本例中,选择Atmel公司的型号为AT89S52的MCU,如图A-8所示。
图A-8 “Select Device for Target ‘Target 1’”对话框
单击“OK”按钮,弹出如图A-9所示的对话框,提示是否将标准8051启动代码复制到项目文件夹中并将该文件添加到项目中去。
图A-9 复制启动代码提示对话框
在Keil μVision4中,启动代码在复位目标系统后立即被执行。启动代码主要实现以下功能:
★ 清除内部数据存储器;
★ 清除外部数据存储器;
★ 清除外部页存储器;
★ 初始化small模式下的可重入栈和指针;
★ 初始化large模式下的可重入栈和指针;
★ 初始化compact模式下的可重入栈和指针;
★ 初始化8051硬件栈指针;
★ 传递初始化全局变量的控制命令或者在没有初始化全局变量时给main函数传递命令。
在每一个启动文件中,提供了可供用户自己修改有来控制程序执行的汇编常量。如果只是调试简单程序,可以选择“否(N)”,如果项目复杂可选择“是(Y)”。用户可根据需要修改启动代码,但一般不建议修改启动代码。
附A.2.2新建一个源文件并把它加入到项目中
从“File”菜单中选择“New”项新建一个源文件,或者单击工具栏上的按钮,打开一个空白的编辑窗口,用户可以输入程序源代码。输入以下程序源代码:
ORG 0000H
LJMP MAIN
ORG 0040H
MAIN:
MOV SP,#70H
MOV R0,#40H
MOV R1,#20H
LOOP:
MOV P2,#00H; 软件仿真时必须有
MOVX A,@R0
MOV @R0,A
MOV A,#00H
MOVX @R0,A
INC R0
DJNZ R1,LOOP
END
从“File”菜单中选择“Save”项或者单击工具栏中的保存按钮,将文件保存为想要的名字。如果使用汇编语言编写程序,则文件的后缀名是:.asm或者.a51,如test.asm,如图A-10所示(如果使用C语言编写程序,则文件的后缀名是:.c,以下步骤与汇编语言程序相同)。保存后,Keil μVision4将高亮显示汇编语言语法字符,如图A-11所示。
图A-10 保存源文件
图A-11 保存后程序显示界面
源文件创建完成后,就可以将它加入到项目中(如不加入,则无法对此文件操作)。Keil μVision4提供了几种方法让用户把源文件加入到项目中。
(1)在“Project Workspace”(项目管理器)窗口中单击“Target 1”前面的“+”号,展开下一层的“Source Group 1”文件夹,在“Source Group 1”文件夹上单击鼠标右键,弹出快捷菜单,如图A-12所示。从弹出的快捷菜单中单击“Add Files to Group ‘Source Group 1’…”项,弹出“Add Files to Group ‘Source Group 1’…”对话框,如图A-13所示。
图A-12 将源文件加入到项目中
图A-13 “Add Files to Group ‘Source Group 1’…”对话框
在该对话框中,默认的文件类型是“C Source file (*.c)”。若使用汇编语言进行设计,则需要从“文件类型”下拉列表框中选择“Asm Source file (*.S*;*.src;*.a*)”文件类型。这样,以.asm为扩展名的汇编语言程序文件才会出现在文件列表框中。从文件列表框中选择要加入的文件并双击即可添加到项目中;也可以单击选中文件,然后单击“Add”按钮将该文件加入项目中。添加文件后,对话框不会自动关闭,而是继续等待添加其它文件,用户可单击“Close”按钮,关闭对话框。当给项目添加文件成功后,项目管理器的“Source Group 1”文件夹前面会出现“+”号,单击它可看到test.asm文件已经包含在项目中了。双击它即可打开进行修改。
附A.2.3设置目标硬件选项
Keil μVision4允许用户为目标硬件设置选项。可以通过单击工具条图标、菜单“Project”的“Options for Target ‘Target 1’…”项或者在“Project Workspace”窗口的“Target 1”上单击鼠标右键,打开“Options for Target ‘Target 1’…”对话框。在各选项卡中,可以修改与目标硬件及所选MCU的片上集成器件的所有参数,如图A-14所示。
图A-14 Options for Target ‘Target 1’对话框
主要设置CPU的时钟频率、编译器的存储模式等。晶振频率设置应与实际使用的晶振频率相同。如果仅进行软件模拟调试,则采用默认设置即可。
附A.2.4编译项目并生成可以编程到程序存储器的HEX文件
单击工具栏中的“Rebuild”图标,可以编译所有的源文件并生成应用。当程序中有语法错误时,Keil μVision4将在“Build Output”窗口显示错误或者警告信息。双击一行错误提示信息,将打开此信息对应的文件,并定位到语法错误处,如图A-15所示。
在错误信息上双击鼠标,光标会自动定位到出现该错误的程序行上。例如,如图A-15所示,出现“test.asm(15): error A45: UNDEFINED SYMBOL (PASS-2)”(未定义符号)错误信息,双击该信息,光标定位到出现该错误的行上。用户很容易发现错误原因是将标号“LOOP”错写成“LOO”,漏掉字母P。由输入引起的用户常犯的编译错误还有:错将数字0输成字母o,使用中文输入法输入了全角逗号(,)和冒号(:),大于9FH(如A8H)的十六进制数忘记在前面加上数字0(正确写法0A8H)等。根据错误信息提示,修改程序中出现的错误,直到编译成功为止。一旦编译成功,则显示如图A-16所示信息。提示信息最后一行为“"movedata" - 0 Error(s), 0 Warning(s).”,不但没有错误,而且最好也没有警告。
需要注意的是,Keil μVision4默认是不生成HEX文件的。这时就需要设置目标硬件选项中的“Output”选项卡,选中“Create HEX File”前面的复选框,如图A-17所示。
图A-15 编译出现错误信息时的提示
图A-16 编译成功提示信息
图A-17 生成HEX文件的选项
附A.2.5软件模拟调试及下载到MCU中进行仿真调试
一旦编译成功,就可以进行程序的仿真调试了。对于程序的调试,有两种方式:一种是软件模拟仿真调试,另一种就是下载到硬件仿真器或者MCU中进行在线仿真调试。一般情况下,首先使用软件模拟仿真调试,通过之后,再用硬件仿真器或者直接下载到MCU中进行在线仿真调试。由于软件模拟仿真调试与在线仿真调试方法基本相同,所以就以软件模拟仿真调试为例,介绍程序的调试方法。
为了对前面编写的程序能够在不连接硬件仿真器或者MCU的情况下进行仿真调试(即软件模拟),需对Keil μVision4做一下设置。按照2.3设置目标硬件选项打开“Options for Target ‘Target 1’…”对话框,选中“Debug”页,如图A-18所示。一般情况下,如果没有进行硬件仿真,则“Use Simulator”单选框是默认选中的,此时,进行软件模拟调试,其它选项不做修改;否则,则选中“Use:”单选框,并在其下拉框中选择相应的硬件驱动,并点击“Settings”按钮对目标仿真硬件进行设置。
图A-18 设置“Options for Target ‘Target 1’…”对话框中的“Debug”页
通过以上设置,就可以进行软件模拟调试了。
单击工具栏中的“Start/Stop Debug Session”按钮,或者从“Debug”菜单中选中“Start/Stop Debug Session”项(其快捷键为Ctrl+F5),,开始模拟调试过程。在调试过程中,可以进行如下操作:
1.连续运行
单击工具栏中的按钮,或者“Debug”菜单中的“Run”(快捷键F5),可以使程序全速运行。
2.停止程序运行
当程序全速运行时,可以单击工具栏中的按钮,或者“Debug”菜单中的“Stop”,使程序停止运行。
3.复位CPU
当程序运行过一次以上后,累加器A、某些寄存器或者其它资源的值修改了,而再次运行需要恢复到初始状态,这时就需要执行复位CPU的命令。单击工具栏中的按钮,或者“Debug”菜单中的“Reset CPU”,可以使MCU恢复到初始状态。
4.单步运行
单击工具栏中的按钮,或者“Debug”菜单中的“Step”(快捷键F11),可以执行一行程序。如果遇到函数调用,则进入函数内部并单步运行。
5.单步跳过函数运行
单击工具栏中的按钮,或者“Debug”菜单中的“Step Over”(快捷键F10),可以执行一行程序。如果遇到函数调用,则将函数调用看做一行程序运行,不进入函数内部运行。
6.运行到当前函数的结束
这种情况出现在单步运行后进入到函数内部运行程序,通过单击工具栏中的按钮,或者“Debug”菜单中的“Step Out”(快捷键Ctrl+F11),以运行到当前函数的结束。
7.运行到光标行
单击工具栏中的按钮,或者“Debug”菜单中的“Run to Cursor Line”(快捷键Ctrl+F10),可以执行到光标所在的程序行。
8.设置断点
在要设置断点的程序行上双击鼠标左键,或者单击工具栏上的按钮,或者“Debug”菜单中的“Insert/Remove Breakpoint”(快捷键F9),可以在当前行上插入或者删除断点。只要在当前行上设置了断点,则在当前行的最左边显示一个红色的小方块。连续运行程序后,执行到该行时,程序会暂停运行。此时用户可以查看程序运行的一些中间状态和结果(累加器A、工作寄存器、SFR、数据存储器等)。
9.查看寄存器
当进入调试状态后,Keil μVision4集成开发环境中左侧的项目管理器,变成寄存器查看器。如图A-19所示。用户可以通过这个窗口观察工作寄存器、部分SFR的内容。
图A-19 观察寄存器的内容
10.查看变量及堆栈
在调试状态中,在Keil μVision4集成开发环境中的右下侧会出现如图A-20所示的窗口,即调用堆栈和变量查看窗口(使用C语言编程调试的时候常用)。
图A-20 调用堆栈和变量查看窗口
11.查看存储器
在图A-20中单击Memory1选项卡则在在Keil μVision4集成开发环境中的右下侧会出现如图A-21所示的窗口,即存储器查看窗口。
图A-21 存储器查看窗口
默认情况下,想查看内部RAM(片内数据存储器)中的内容,需在“Address”编辑框中输入“D:0”并按回车键即可。拖动窗口的左边框可以调整窗口的大小,经过调整,最佳的显示范围如图A-22所示。
图A-22 片内数据存储器查看窗口
可以通过“View”菜单中的“Memory Windows”项,添加存储器查看窗口,这样可通过不同的窗口查看不同存储器的内容。例如,可再增加一个窗口查看外部RAM中的内容。如图A-23 所示,在在“Address”编辑框中输入“X:0”并按回车键即可。
图A-23 片外数据存储器查看窗口
要改变某个地址单元中的内容,可在上面双击鼠标左键即可修改;或者在要修改内容的单元上单击鼠标右键,弹出菜单,选择“Modify Memory at …”修改。通过弹出菜单,还可修改进制、有符号数、无符号数、ASCII码等
“Address”编辑框一般输入格式如下:
X:XXXX
其中X为:
D,查看内部RAM;
X,查看外部RAM;
I,查看间接访问的内部RAM;
C,查看程序ROM。
XXXX为:查看的起始地址(0000H~FFFFH)。
12.查看外部设备
单击菜单“Peripherals”可选择查看所选MCU集成的不同外部设备。例如:
(1)“Interrupt”打开中断向量表窗口,在窗口里显示了所有的中断向量。如图A-24所示。对选定的中断向量可以用窗口下面的复选框进行设置。
图A-24 中断向量表窗口
(2)“I/O-Ports”:打开I/O端口(P0~P3)的观察窗口,在窗口里显示了程序运行时的端口状态。可以随时查看并修改端口的状态,从而模拟外部的输入。例如,要查看P2口的状态,可打开P2口的观察窗口,如图A-25所示。当运行到第10行时,则如图A-26所示。图中标有“√”的复选框表示这一位的值是1,没有的为0。对于不同的MCU,可能图A-25、图A-26的显示略有不同。
图A-25 刚进入调试状态时P2口的查看窗口
图A-26 运行到程序行第10行时P2口的查看窗口
(3)“Serial”:打开串行口的观察窗口,可以随时修改窗口里显示的不同状态。
(4)“Timer”:打开定时器的观察窗口,可以随时修改窗口里显示的不同状态。
除此以外,对于不同公司生产的MCU,在“Peripherals”菜单中会出现很多与该型号MCU相
展开阅读全文