收藏 分享(赏)

Keil μVision4 集成开发环境与C语言程序设计.doc

上传人:tangtianxu1 文档编号:3082353 上传时间:2018-10-02 格式:DOC 页数:39 大小:1.10MB
下载 相关 举报
Keil μVision4 集成开发环境与C语言程序设计.doc_第1页
第1页 / 共39页
Keil μVision4 集成开发环境与C语言程序设计.doc_第2页
第2页 / 共39页
Keil μVision4 集成开发环境与C语言程序设计.doc_第3页
第3页 / 共39页
Keil μVision4 集成开发环境与C语言程序设计.doc_第4页
第4页 / 共39页
Keil μVision4 集成开发环境与C语言程序设计.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、1附录 A Keil Vision4 集成开发环境与 C语言程序设计Keil 公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。Keil 公司由两家私人公司联合运营,分别是德国慕尼黑的 Keil Elektronik GmbH 和美国德克萨斯的Keil Software Inc。Keil 公司制造和销售种类广泛的开发工具,包括 ANSI C 编译器、宏汇编程序、调试器、连接器、库管理器、固件和实时操作系统核心(real-time kernel)。有超过10 万名微控制器开发人员在使用这种得到业界认可的解决方案。其 Keil C51 编译器自1988 年引入市场以来成为事实上的行业

2、标准,并支持超过 500 种 80C51 变种。Keil 公司在2007 年被 ARM 公司收购。其两家公司分别更名为 ARM Germany GmbH 和 ARM Inc 和。2009 年 2 月,Keil 公司发布了 Keil Vision4,Keil Vision4 引入灵活的窗口管理系统,使开发人员能够使用多台监视器,提供可在虚拟接口上随意放置窗口的完整控制能力。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的 80C51 兼容芯片及 ARM 芯片,还添加了一些其他新功能,如系统查看器(System Viewer)窗

3、口、多项目工作空间 (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嵌入式应用系统的开发过程:

4、全功能的源代码编辑器; 器件库用来配置开发工具设置; 项目管理器用来创建和维护项目; 集成的 MAKE 工具可以汇编、编译和连接用户的嵌入式应用; 所有开发工具的设置都是以对话框的形式出现的; 具有真正的源代码级的对 CPU 和外围器件的调试器; 高级 GDI 接口用来在目标硬件上进行软件调试以及和 Monitor-51 进行通信; 与开发工具手册、器件数据手册和用户指南有直接的链接。1.C51 编译器和 A51 汇编器源代码由 Vision4 创建,并被 C51 编译成 A51 汇编。编译器和汇编器从源代码生成可重定位的目标文件。Keil C51 编译器完全遵照 ANSIC 语言标准,支持

5、C 语言的所有标准特性。另外,直接支持 80C51 结构的几个特性被添加里面。Keil A51 宏汇编器支持 80C51 及其派生系列的全部指令集。2.LIB51 库管理器LIB51 库管理器允许从由编译器或汇编器生成的目标文件创建目标库。库是一种被特别地组织过并在以后可以被连接重用的对象模块。当连接器处理一个库时,仅仅那些被使用的目标模块才被真正使用。23.BL51 连接器/定位器BL51 连接器/定位器利用从库中提取的目标模块和由编译器或汇编器生成的目标模块创建一个绝对地址的目标模块。一个绝对地址目标模块或文件包含不可重定位的代码和数据。所有的代码和数据被安置在固定的存储器单元中。此绝对地

6、址目标文件可以用来:写入 EPROM 或其他存储器件。通过 Vision4 调试器来模拟和调试。通过仿真器来测试程序。4.OH51 目标文件转换器OH51 目标文件转换器可以把前面编译连接好的目标文件转换成能写入 EPROM 中的 HEX文件。5. Vision4 调试器Vision4 源代码级调试器是一个理想的快速、可靠的程序调试器。此调试器包含一个高速模拟器,能够模拟整个 8051 系统,包括片上外围器件和外部硬件。当从器件库中选择器件时,这个器件的特性将自动配置。Vision4 调试器为在实际目标板上测试程序提供了以下 2 种方法:安装 MON51 目标监控器到目标系统并且通过 Moni

7、tor-51 接口下载程序;利用高级的 GDI(AGDI)接口,把 Vision4 调试器绑定到目标系统。6.Monitor-51Vision4 调试器支持用 Monitor-51 进行目标板调试。此监控程序驻留在目标板的存储器里,它利用串口和 Vision4 调试器进行通信。利用 Monitor-51,Vision4 调试器可以对目标硬件实行源代码级的调试。7.RTX-51 实时操作系统RTX-51 实时操作系统是一个针对 8051 系统的多任务核。RTX-51 实时内核从本质上简化了对实时事件反应速度要求高的复杂应用系统的设计、编程和调试。RTX-51 实时内核是完全集成到 C51 编译器

8、中的,从而方便使用。任务描述表和操作系统的连接由 BL51 连接器/定位器自动控制。附 A.1.2 安装了解了 Keil Vision4 的一些基本概况后,下面开始在计算机上搭建 MCU 的集成开发环境。操作步骤如下:首先准备 Keil Vision4 安装源文件,双击 Vision4 的 Setup 安装文件,弹出Keil Vision4 安装的欢迎界面,如图 A-1 所示。3图 A-1 Keil Vision4 欢迎界面单击“Next”按钮,弹出“License Agreement”对话框,如图 A-2 所示。这里显示了一些用户安装的协议和许可的要求,选择“I agree to all t

9、he terms of the preceding License Agreement”即可,否则无法进入下一步。图 A-2 “License Agreement”对话框单击“Next”按钮,弹出“Folder Selection”对话框,如图 A-3 所示。系统默认安4装在“C:Keil”文件夹下。在这里,单击“Browse”按钮,可以选择安装的目录。图 A-3 “Folder Selection”对话框单击“Next”按钮,弹出”Customer Information”对话框,如图 A-4 所示。此时,用户需要输入用户名、公司名称和 E-mail,缺一不可。图 A-4 用户信息输入单击”

10、Next”按钮,下面便开始自动安装。5Keil Vision4 安装完成后,弹出安装完成对话框,如图 A-5 所示。这里的几个选项的含义如下。图 A-5 完成安装Show Release Notes:显示安装的版本注释信息。Add Example projects to the recently used project list:添加一个示例程序到当前项目列表中。Retain currentVision configuration:保持当前的设置(如果是第一次安装,则不存在这个选项) 。最后,单击“Finish“按钮,便可以结束 Keil Vision4 集成开发环境的安装。需要注意的是,刚

11、刚安装完的版本是试用版(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 后,如果是第一次运行,则打开工程项目“H

12、ello” ,如图 A-6 所示。6图 A-6 Keil Vision4 集成开发环境界面这里可以看到,Keil Vision4 集成开发环境具有典型的 Windows 界面风格。整个编程界面主要包括菜单栏、工具栏、项目管理区、源代码工作区和输出信息窗口。另外,还有一些功能窗口将在后面逐步介绍。下面我们将带领读者逐一认识 Keil Vision4 集成开发环境的主要组成部分。附 A.1.4 Keil Vision4 菜单命令Keil Vision4 的菜单栏提供了项目操作、编辑操作、编译调试及帮助等各种常用操作。所有的操作基本上都可以通过菜单命令来实现。为了快速执行 Keil Vision4

13、的许多功能,有些菜单命令在工具栏上还具有工具条。为了更快速执行一些功能,Keil Vision4 提供了比工具栏上的工具条更为快捷的操作,即快捷键。在 Keil Vision4 集成开发环境中不仅提供了常用功能的默认快捷键,同时用户也可以根据自己的需要自定义快捷键。下面就菜单命令、工具条、快捷键分别进行介绍。1File 菜单File 菜单和标准的 Windows 软件的 File 菜单类似,提供了项目和文件的操作功能。File 菜单各个命令的功能如表 A-1 所示。表 A-1 File 菜单菜单命令 工具条 快捷键 功能说明New Ctrl+N 创建一个新的空白文件Open Ctrl+O 打开

14、一个已存在的文件Close 关闭当前打开的文件Save Ctrl+S 保存当前打开的文件Save as 当前文件另存为Save all 保存所有打开的文件7Device Database 打开器件库License Management 产品注册管理Print Setup 设置打印机Print Ctrl+P 打印当前文件Print Preview 打印预览1 10 列出最近打开的源文件或文本文件Exit 退出 KeilVision42Edit 菜单Edit 菜单提供了常用的代码编辑操作命令。Edit 菜单各个命令的功能如表 A-2 所示。表 A-2 Edit 菜单菜单命令 工具条 快捷键 功能说

15、明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 Prev

16、ious 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 颜色、字体等高级配置3View 菜单View 菜单提供了在源代码编辑和仿真调试过程中,各个窗口和工具栏的显示和隐藏命令。View 菜单各个命令

17、的功能如表 A-3 所示。表 A-3 View 菜单菜单命令 工具条 功能说明Status Bar 显示/隐藏状态条Toolbars 显示/隐藏工具栏Project Window 显示/隐藏项目管理窗口Books Window 显示/隐藏参考书窗口Functions Window 显示/隐藏函数窗口8Templates Window 显示/隐藏模板窗口Source Browser Window 显示/隐藏资源浏览器窗口Build Output Window 显示/隐藏输出信息窗口Find in Files Window 显示/隐藏在所有文件中查找文本窗口Full Screen 显示/隐藏全屏显

18、示窗口调试模式下的菜单命令Command Window 显示/隐藏命令行窗口Disassembly Window 显示/隐藏反汇编窗口Symbols Window 显示/隐藏字符变量窗口Registers Window 显示/隐藏寄存器窗口Call Stack Window 显示/隐藏堆栈窗口Watch Windows 显示/隐藏变量子菜单观察窗口Memory Windows 显示/隐藏存储器子菜单窗口Serial Windows 显示/隐藏串行口观察子菜单窗口Analysis Windows 显示/隐藏分析子菜单窗口Trace 显示/隐藏跟踪子菜单窗口System Viewer 显示/隐藏外

19、设子菜单窗口Toolbox Window 显示/隐藏自定义工具条窗口Periodic Window Update 在程序运行时刷新调试窗口4Project 菜单Project 菜单提供了 MCU 项目的创建、设置和编译等命令。Project 菜单各个命令的功能如表 A-4 所示。表 A-4 Project 菜单菜单命令 工具条 快捷键 功能说明New Vision Project. 创建新项目New Multi-Project Workspace. 创建多项目工作空间Open Project. 打开一个已存在的项目Close Project 关闭当前项目Export 导出当前一个或多个项目为

20、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

21、+F7 编译当前文件Stop build 停止编译当前项目1 10 列出最近打开的项目(最多 10 个)95Flash 菜单Flash 菜单提供了下载程序、擦除 MCU 程序存储器等操作。这里的命令需要外部的编程器支持才可以使用。Flash 菜单各个命令的功能,如表 A-5 所示。表 A-5 Flash 菜单菜单命令 工具条 功能说明Download 下载 MCU 程序Erase 擦除程序存储器Configure Flash Tools. 打开配置工具6Debug 菜单Debug 菜单中的命令大多用于仿真调试过程中,提供了断点、调试方式及逻辑分析等功能。Debug 菜单各个命令的功能如表 A-

22、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

23、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 E

24、ditor (Open Ini File) 编辑调试函数和调试配置文件Debug Settings 设置调试参数7Peripherals 菜单Peripherals 菜单提供了 MCU 各种硬件资源的仿真对话框。这里的所有命令都只在仿真调试环境下才显示并可以使用,而且显示的资源内容随用户选择的 MCU 型号的不同而不同。这里列出一些常用到的 Peripherals 菜单命令的功能,如表 A-7 所示。表 A-7 Peripherals 菜单菜单命令 功能说明Interrupt 打开中断仿真对话框I/O Ports 打开并行端口仿真对话框10Serial 打开串口仿真对话框Timer 打开定时器

25、仿真对话框Watchdog 打开看门狗仿真对话框A/D Converter 打开 A/D 转换器仿真对话框D/A Converter 打开 D/A 转换器仿真对话框IC Controller 打开 I2C 总线控制器仿真对话框CAN Controller 打开 CAN 总线控制器仿真对话框8Tools 菜单Tools 菜单提供了一些第三方软件的支持,例如 PC-Lint。用户需要额外安装相应的软件才可以使用。Tools 菜单一般使用得比较少,这里仅列出各个命令的功能,如表 A-8 所示。表 A-8 Tool 菜单菜单命令 功能说明Set-up PC-Lint 配置 PC-Lint 程序Lint

26、 用 PC-Lint 程序处理当前编辑的文件Lint All C-Source Files 用 PC-Lint 程序处理项目中所有的 C 源代码文件Customize Tools Menu. 自定义工具菜单9SVSC 菜单SVSC 菜单提供了程序的版本控制,该菜单下仅包括“Configure Version Control”一个命令,用于配置软件版本。另外,Windows 菜单下提供了对工作区窗口布局的管理,Help 菜单提供了一些帮助信息,这里不再具体介绍。附 A.2 Keil Vision4 汇编语言程序的调试方法Keil Vision4 集成开发环境中包括一个项目管理器,它可以使基于 8

27、0C51 内核的MCU 应用系统设计变得简单。要创建一个应用,需要按下列步骤操作:1.启动 Keil Vision4 ,新建一个项目文件并从器件库中选择一个器件;2.新建一个源文件并把它加入到项目中;3. 设置目标硬件选项;4.编译项目并生成可以编程到程序存储器的 HEX 文件;5. 软件模拟调试及下载到 MCU 中进行仿真调试。下面通过一个实例,详细介绍如何在 Keil Vision4 集成开发环境中调试 80C51 系列MCU 的汇编语言程序。【例 A-1】假设晶振频率为 11.0592MHz,将 MCU 片外 RAM 中 40H5FH 单元中的内容全部移到片内相同地址区域,并将原数据区全

28、部清零。附 A.2.1 启动 Keil Vision4 并创建一个项目双击桌面 Keil Vision4 程序图标或单击开始菜单中的 Keil Vision4 程序项,启动Keil Vision4 集成开发环境。要新建一个项目文件,可以从 Keil Vision4 的 Project 菜单中选择 “New Project”项,11打开“Create New Project”对话框,如图 A-7 所示。图 A-7 “Create New Project”对话框在此对话框的“文件名”栏中输入项目文件名。建议为每一个项目建立一个独立的文件夹。首先,在下拉列表中选择要保存的位置,最好选择逻辑盘 D 或

29、 E(不要保存在系统盘 C,避免因系统重新安装而丢失文件) 。单击“新建文件夹” , ,得到一个空文件夹,给该文件夹重命名为“test” (文件夹的名字最好能够体现项目名称) 。双击该文件夹,在“文件名(N) ”栏中输入项目的名称,如 “movedata”,创建一个文件名为“movedata.uvproj”的新项目文件。单击“保存(S) ”按钮,将弹出“Select Device for Target Target 1”对话框,提示为项目选择一个 MCU。在该对话框中, “Data base”列表框中显示出各个 MCU 的生产商。首先找到选用的 MCU 生产商,单击前面的“+”号,显示出 Ke

30、il Vision4 所支持的该公司的 MCU 型号列表,单击其中选定的 MCU 型号。如本例中,选择 Atmel 公司的型号为AT89S52 的 MCU,如图 A-8 所示。12图 A-8 “Select Device for Target Target 1”对话框单击“OK”按钮,弹出如图 A-9 所示的对话框,提示是否将标准 8051 启动代码复制到项目文件夹中并将该文件添加到项目中去。图 A-9 复制启动代码提示对话框在 Keil Vision4 中,启动代码在复位目标系统后立即被执行。启动代码主要实现以下功能: 清除内部数据存储器; 清除外部数据存储器; 清除外部页存储器; 初始化

31、small 模式下的可重入栈和指针; 初始化 large 模式下的可重入栈和指针; 初始化 compact 模式下的可重入栈和指针; 初始化 8051 硬件栈指针; 传递初始化全局变量的控制命令或者在没有初始化全局变量时给 main 函数传递命令。13在每一个启动文件中,提供了可供用户自己修改有来控制程序执行的汇编常量。如果只是调试简单程序,可以选择“否(N ) ”,如果项目复杂可选择“是(Y ) ”。用户可根据需要修改启动代码,但一般不建议修改启动代码。附 A.2.2 新建一个源文件并把它加入到项目中从“File”菜单中选择“New”项新建一个源文件,或者单击工具栏上的按钮 ,打开一个空白的

32、编辑窗口,用户可以输入程序源代码。输入以下程序源代码:ORG 0000HLJMP MAINORG 0040HMAIN:MOV SP,#70HMOV R0,#40HMOV R1,#20HLOOP:MOV P2,#00H; 软件仿真时必须有MOVX A,R0MOV R0,AMOV A,#00HMOVX R0,AINC R0DJNZ R1,LOOPEND从“File”菜单中选择“Save”项或者单击工具栏中的保存按钮 ,将文件保存为想要的名字。如果使用汇编语言编写程序,则文件的后缀名是:.asm 或者.a51,如 test.asm,如图 A-10 所示(如果使用 C 语言编写程序,则文件的后缀名是:

33、.c,以下步骤与汇编语言程序相同) 。保存后,Keil Vision4 将高亮显示汇编语言语法字符,如图 A-11 所示。14图 A-10 保存源文件图 A-11 保存后程序显示界面源文件创建完成后,就可以将它加入到项目中(如不加入,则无法对此文件操作) 。Keil Vision4 提供了几种方法让用户把源文件加入到项目中。(1)在“Project Workspace”(项目管理器)窗口中单击“Target 1”前面的“+”号,展开下一层的“Source Group 1”文件夹,在“Source Group 1”文件夹上单击鼠标右键,弹出快捷菜单,如图 A-12 所示。从弹出的快捷菜单中单击“

34、Add Files to Group Source Group 1”项,弹出“Add Files to Group Source Group 1”对话框,如图 A-13 所示。15图 A-12 将源文件加入到项目中图 A-13 “Add Files to Group Source Group 1”对话框在该对话框中,默认的文件类型是“C Source file (*.c) ”。若使用汇编语言进行设计,则需要从“文件类型”下拉列表框中选择“Asm Source file (*.S*;*.src;*.a*) ”文件类型。这样,以.asm 为扩展名的汇编语言程序文件才会出现在文件列表框中。从文件列表

35、框中选择要加入的文件并双击即可添加到项目中;也可以单击选中文件,然后单击“Add”按钮将该文件加入项目中。添加文件后,对话框不会自动关闭,而是继续等待添加其它文件,用户可单击“Close”按钮,关闭对话框。当给项目添加文件成功后,项目管理器的“Source Group 1”文件夹前面会出现“+”号,单击它可看到 test.asm 文件已经包含在项目中了。双击它即可打开进行修改。附 A.2.3 设置目标硬件选项Keil Vision4 允许用户为目标硬件设置选项。可以通过单击工具条 图标、菜单“Project”的“ Options for Target Target 1”项或者在“Project

36、 Workspace”窗口的16“Target 1”上单击鼠标右键,打开“Options for Target Target 1”对话框。在各选项卡中,可以修改与目标硬件及所选 MCU 的片上集成器件的所有参数,如图 A-14 所示。图 A-14 Options for Target Target 1对话框主要设置 CPU 的时钟频率、编译器的存储模式等。晶振频率设置应与实际使用的晶振频率相同。如果仅进行软件模拟调试,则采用默认设置即可。附 A.2.4 编译项目并生成可以编程到程序存储器的 HEX 文件单击工具栏中的“Rebuild”图标 ,可以编译所有的源文件并生成应用。当程序中有语法错误时

37、,Keil Vision4 将在“Build Output”窗口显示错误或者警告信息。双击一行错误提示信息,将打开此信息对应的文件,并定位到语法错误处,如图 A-15 所示。在错误信息上双击鼠标,光标会自动定位到出现该错误的程序行上。例如,如图 A-15所示,出现“test.asm(15): error A45: UNDEFINED SYMBOL (PASS-2)”(未定义符号)错误信息,双击该信息,光标定位到出现该错误的行上。用户很容易发现错误原因是将标号“LOOP”错写成“LOO” ,漏掉字母 P。由输入引起的用户常犯的编译错误还有:错将数字 0 输成字母 o,使用中文输入法输入了全角逗号

38、(, )和冒号(:) ,大于 9FH(如A8H)的十六进制数忘记在前面加上数字 0(正确写法 0A8H)等。根据错误信息提示,修改程序中出现的错误,直到编译成功为止。一旦编译成功,则显示如图 A-16 所示信息。提示信息最后一行为“movedata“ - 0 Error(s), 0 Warning(s).”,不但没有错误,而且最好也没有警告。需要注意的是,Keil Vision4 默认是不生成 HEX 文件的。这时就需要设置目标硬件选项中的“Output”选项卡,选中 “Create HEX File”前面的复选框,如图 A-17 所示。 17图 A-15 编译出现错误信息时的提示图 A-16

39、 编译成功提示信息图 A-17 生成 HEX 文件的选项附 A.2.5 软件模拟调试及下载到 MCU 中进行仿真调试18一旦编译成功,就可以进行程序的仿真调试了。对于程序的调试,有两种方式:一种是软件模拟仿真调试,另一种就是下载到硬件仿真器或者 MCU 中进行在线仿真调试。一般情况下,首先使用软件模拟仿真调试,通过之后,再用硬件仿真器或者直接下载到 MCU中进行在线仿真调试。由于软件模拟仿真调试与在线仿真调试方法基本相同,所以就以软件模拟仿真调试为例,介绍程序的调试方法。为了对前面编写的程序能够在不连接硬件仿真器或者 MCU 的情况下进行仿真调试(即软件模拟) ,需对 Keil Vision4

40、 做一下设置。按照 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

41、Session”按钮 ,或者从“Debug”菜单中选中“Start/Stop Debug Session”项(其快捷键为 Ctrl+F5) , ,开始模拟调试过程。在调试过程中,可以进行如下操作:1.连续运行单击工具栏中的按钮 ,或者 “Debug”菜单中的“Run” (快捷键 F5) ,可以使程序全速运行。2.停止程序运行当程序全速运行时,可以单击工具栏中的按钮 ,或者“Debug ”菜单中的“Stop ”,使程序停止运行。3.复位 CPU当程序运行过一次以上后,累加器 A、某些寄存器或者其它资源的值修改了,而再次19运行需要恢复到初始状态,这时就需要执行复位 CPU 的命令。单击工具栏中的

42、按钮 ,或者“Debug”菜单中的“Reset CPU” ,可以使 MCU 恢复到初始状态。4.单步运行单击工具栏中的按钮 ,或者 “Debug”菜单中的“Step” (快捷键 F11) ,可以执行一行程序。如果遇到函数调用,则进入函数内部并单步运行。5.单步跳过函数运行单击工具栏中的按钮 ,或者 “Debug”菜单中的“Step Over”(快捷键 F10) ,可以执行一行程序。如果遇到函数调用,则将函数调用看做一行程序运行,不进入函数内部运行。6.运行到当前函数的结束这种情况出现在单步运行后进入到函数内部运行程序,通过单击工具栏中的按钮 ,或者“Debug” 菜单中的“Step Out”(

43、快捷键 Ctrl+F11) ,以运行到当前函数的结束。7.运行到光标行单击工具栏中的按钮 ,或者 “Debug”菜单中的“Run to Cursor Line”(快捷键Ctrl+F10) ,可以执行到光标所在的程序行。8.设置断点在要设置断点的程序行上双击鼠标左键,或者单击工具栏上的按钮 ,或者“Debug”菜单中的“Insert/Remove Breakpoint”(快捷键 F9) ,可以在当前行上插入或者删除断点。只要在当前行上设置了断点,则在当前行的最左边显示一个红色的小方块。连续运行程序后,执行到该行时,程序会暂停运行。此时用户可以查看程序运行的一些中间状态和结果(累加器 A、工作寄存

44、器、 SFR、数据存储器等) 。9.查看寄存器当进入调试状态后,Keil Vision4 集成开发环境中左侧的项目管理器,变成寄存器查看器。如图 A-19 所示。用户可以通过这个窗口观察工作寄存器、部分 SFR 的内容。图 A-19 观察寄存器的内容10.查看变量及堆栈在调试状态中,在 Keil Vision4 集成开发环境中的右下侧会出现如图 A-20 所示的窗20口,即调用堆栈和变量查看窗口(使用 C 语言编程调试的时候常用) 。图 A-20 调用堆栈和变量查看窗口11.查看存储器在图 A-20 中单击 Memory1 选项卡则在在 Keil Vision4 集成开发环境中的右下侧会出现如

45、图 A-21 所示的窗口,即存储器查看窗口。图 A-21 存储器查看窗口默认情况下,想查看内部 RAM(片内数据存储器)中的内容,需在“Address ”编辑框中输入“D:0”并按回车键即可。拖动窗口的左边框可以调整窗口的大小,经过调整,最佳的显示范围如图 A-22 所示。图 A-22 片内数据存储器查看窗口可以通过“View”菜单中的“Memory Windows”项,添加存储器查看窗口,这样可通过不同的窗口查看不同存储器的内容。例如,可再增加一个窗口查看外部 RAM 中的内容。如图 A-23 所示,在在“ Address”编辑框中输入“X:0”并按回车键即可。21图 A-23 片外数据存储

46、器查看窗口要改变某个地址单元中的内容,可在上面双击鼠标左键即可修改;或者在要修改内容的单元上单击鼠标右键,弹出菜单,选择“Modify Memory at ”修改。通过弹出菜单,还可修改进制、有符号数、无符号数、ASCII 码等“Address”编辑框一般输入格式如下:X:XXXX其中 X 为:D,查看内部 RAM;X,查看外部 RAM;I,查看间接访问的内部 RAM;C,查看程序 ROM。XXXX 为:查看的起始地址(0000HFFFFH) 。12.查看外部设备单击菜单“Peripherals”可选择查看所选 MCU 集成的不同外部设备。例如:(1) “Interrupt”打开中断向量表窗口

47、,在窗口里显示了所有的中断向量。如图 A-24所示。对选定的中断向量可以用窗口下面的复选框进行设置。图 A-24 中断向量表窗口(2) “I/O-Ports”:打开 I/O 端口(P0P3)的观察窗口,在窗口里显示了程序运行时的端口状态。可以随时查看并修改端口的状态,从而模拟外部的输入。例如,要查看 P222口的状态,可打开 P2 口的观察窗口,如图 A-25 所示。当运行到第 10 行时,则如图 A-26所示。图中标有“”的复选框表示这一位的值是 1,没有的为 0。对于不同的 MCU,可能图 A-25、图 A-26 的显示略有不同。图 A-25 刚进入调试状态时 P2 口的查看窗口图 A-2

48、6 运行到程序行第 10 行时 P2 口的查看窗口(3) “Serial”:打开串行口的观察窗口,可以随时修改窗口里显示的不同状态。(4) “Timer”:打开定时器的观察窗口,可以随时修改窗口里显示的不同状态。除此以外,对于不同公司生产的 MCU,在“Peripherals” 菜单中会出现很多与该型号MCU 相关的外部设备资源菜单项。掌握了上述的操作过程,就可以进行基本的程序调试工作了。只有不断调试程序,才能逐步积累经验,增强对 MCU 的使用,做到灵活运用,熟练掌握。附 A.3 Keil C51 语言虽然 MCU 上使用的 C 语言都是直接针对具体硬件的,但任何一家公司开发的 C 语言,都

49、必须符合 ANSI C 的标准,或者说,要与 ANSI C 兼容。因此,不论哪一家公司为 MCU开发的 C 语言,其主要部分必然要与 ANSI C 保持一致,不同的只是非 ANSI C 的扩展部分,Keil C51 也不例外。Keil C51 是一个兼容 ANSI C 的编译器,为了支持 80C51 系列 MCU 加入了一些扩展的内容。C51 编译器与 ANSI C 相比,扩展的内容包括:数据类型、存储器类型、存储模式、指针及函数(包括:定义函数的重入性、指定函数的寄存器组、指定函数的存储模式及定义中断服务程序) 。阅读本书的读者请注意,本书没有详细介绍标准的 C 语言,只是介绍 Keil C51 对ANSI C 的扩展。对于通用的 C 语言部分,如果需要,请查阅相关介绍 C 语言的教材。下面详细介绍 Keil C51 对 ANSI C 的扩展部分。附 A.3.1 数据类型23Keil C51 编译器支持的各种规格的数据类型列于表 A-8。除了这些数据类型以外,变量可以组合成结构、联合及数组。表 A-8 Kei

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 往来文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报