keil单步调试解析

合集下载

keil使用介绍 -回复

keil使用介绍 -回复

keil使用介绍-回复Keil使用介绍Keil是一款广泛应用于嵌入式系统开发中的集成开发环境(IDE),其提供了一套全面的工具链,包括了编译器、汇编器、调试器以及仿真器等,帮助开发人员进行嵌入式软件的开发与调试。

本文将一步一步地介绍Keil 的安装、项目创建、编译与调试等相关操作,以帮助初学者快速上手使用Keil进行嵌入式开发。

一、Keil的安装1. 下载Keil安装包:首先,我们需要从Keil官方网站上下载合适的Keil安装包。

根据自己所使用的嵌入式处理器类型,选择对应的Keil版本进行下载。

2. 运行安装程序:下载完成后,双击安装程序进行安装。

按照安装程序的引导,选择安装路径和组件安装选项等,然后等待安装完成。

3. 激活Keil许可证:安装完成后,首次打开Keil时,系统会要求激活Keil许可证。

根据提示输入许可证信息,完成激活过程。

二、Keil项目创建1. 新建项目:打开Keil,点击菜单栏的“Project”选项,然后选择“New Project”来创建一个新的项目。

2. 选择处理器类型:在弹出的对话框中,选择适用于您的嵌入式处理器的型号。

如果您的处理器不在列表中,您可以选择最接近的型号。

3. 选择存储路径:在下一个对话框中,选择您想要存储项目的路径,并给您的项目命名。

单击“Save”按钮进行保存。

4. 配置工程选项:在项目创建完成后,Keil会自动打开“Options for Target”窗口。

在该窗口中,您可以配置项目的各项参数,包括编译器设置、目标设备选项和调试设置等。

三、Keil编写与编译1. 新建源文件:在项目资源管理器中,右键单击项目名称,选择“Add New Item”来添加新的源文件。

您可以选择添加C文件、汇编文件或者其他类型的源文件。

2. 编写源代码:双击新建的源文件,进入编辑器界面,开始编写您的嵌入式软件代码。

3. 编译项目:在Keil菜单栏中选择“Project”选项,然后选择“Build target”来编译您的项目。

keil调试高级用法

keil调试高级用法

keil调试高级用法Keil是一款非常常用的嵌入式开发工具,用于开发和调试嵌入式系统。

它具有强大的功能和灵活的调试选项,可以帮助开发人员有效地调试代码。

在本文中,我将介绍一些Keil调试的高级用法,以帮助用户更好地利用该工具进行嵌入式系统的调试。

一、单步调试单步调试是Keil中最基本的调试功能之一、通过单步调试,我们可以一次执行一条机器指令,以逐行检查代码的执行情况。

Keil提供了多种单步调试的选项,包括单步进入(Step Into),单步跳过(Step Over),单步返回(Step Return)等。

- 单步进入(Step Into): 当程序运行到函数调用语句时,可以使用这个选项进入被调用函数并逐行执行。

- 单步跳过(Step Over): 当程序运行到函数调用语句时,可以使用这个选项跳过被调用函数,直接执行下一行代码。

- 单步返回(Step Return): 当程序运行到函数返回语句时,可以使用这个选项返回到调用该函数的地方,并继续执行下一行代码。

通过这些单步调试选项,我们可以有效地检查代码的执行情况,查找代码中的错误。

二、设置断点设置断点是Keil中另一个常用的调试功能。

通过设置断点,我们可以在代码的其中一行上暂停程序的执行,以便检查变量的值和程序的状态。

Keil提供了多种类型的断点,包括软件断点(Software Breakpoint)、数据断点(Data Breakpoint)和条件断点(Conditional Breakpoint)等。

- 软件断点(Software Breakpoint): 在程序的其中一行上设置软件断点,程序执行到该行时将会暂停。

这对于调试复杂的代码非常有用。

- 数据断点(Data Breakpoint): 在一些特定的变量上设置数据断点,当该变量的值发生变化时,程序将会暂停。

这对于调试特定变量的值变化非常有用。

- 条件断点(Conditional Breakpoint): 在一些条件上设置断点,当条件满足时,程序将会暂停。

keil设置及调试程序的方法

keil设置及调试程序的方法

2) 按“运行到光标处”命令后, 运行到光标处”命令后, 按下key1(p3.2/int0)按钮后 PC指针停 按下key1(p3.2/int0)按钮后, PC指针停 按钮后, 到预置光标处, 到预置光标处,说明已经进入中断服务程 中断正常。 序,中断正常。 3)而后,按“运行”命令,连续运行。 而后, 断点方式不能调试中断程序。 断点方式不能调试中断程序 不能调试中断程序。 必须按“ 2) 断点方式调试必须按“运行”命令。 断点方式调试必须按 运行”命令。 3) PC指针停到断点处后,可以检查中间结果, PC指针停到断点处后 可以检查中间结果, 指针停到断点处后, 而后,可以继续“运行”或单步执行, 而后,可以继续“运行”或单步执行,直到程序 执行结束。 执行结束。
调试中断程序举例
按下key1(p3.2/int0)按钮后, 按下key1(p3.2/int0)按钮后, key1(p3.2/int0)按钮后 PC指针停到预置光标处 指针停到预置光标处, PC指针停到预置光标处,说明 已经进入中断服务程序, 已经进入中断服务程序,中断 正常. 正常.
1) 光标放在中断服务程序的 第一条可执行指令处
使用 Keil Monitor-51 Drive2
设置:串行口COM1或 设置:串行口COM1或COM2
调试程序的方法
单步方式: 单步方式: 步进:跟踪 步进: 步越:单步---子程序当一步执行 步越:单步---子程序当一步执行 连续执行方式: 连续执行方式: 运行 断点连续执行方式: 断点连续执行方式: 1)设置断点 2)执行“运行”命令 执行“运行” 运行到光标处:调试中断最佳方式 运行到光标处: 1)光标指到要停处 2)按“运行到光标处”命令 运行到光标处”
pc指针停到断点处后可以检查中间结果指针停到断点处后可以检查中间结果而后可以继续运行或单步执行直到程序而后可以继续运行或单步执行直到程序执行结束

keil调试经验

keil调试经验

KEIL调试高级技巧在调试状态,Debug 菜单项中的命令可以使用了,有关编译的工具栏按钮消失了,出现了一个用于运行和调试的工具栏,Debug 菜单上的大部份命令都有相应的快捷按钮。

从左到右依次是复位、运行、暂停、单步跟踪、单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮命令;然后按一下图示第二个“运行”按钮。

连接上相关的实验资源,本实验用一条8PIN的数据排线把实验仪的CPU部份的P1口(JP44)连接到八路指示灯部份的JP32。

这时你会看到实验仪的八个红色LED,轮流点亮,表示运行成功,也可以查看相关的变量和参数,非常方便。

⒈单步跟踪运行使用菜单Debug->Step 或上图第四个单步运行按钮或使用快捷键 F11 可以单步跟踪执行程序,在这里我们按下 F11 键,即可执行该箭头所指程序行,每按一次 F11,可以看到源程序窗口的左边黄色调试箭头指向下一行,如果程序中有Delay延时子程序,则会进入延时程序中运行。

⒉单步运行如果Delay 程序有错误,可以通过单步跟踪执行来查找错误,但是如果 Delay 程序已正确,每次进行程序调试都要反复执行这些程序行,会使得调试效率很低,为此,可以在调试时使用 F10 来替代 F11(也可使用菜单 Step Over 或相应的命令按钮),在 main 函数中执行到 Delay时将该行作为一条语句快速执行完毕。

为了更好的进行对比,我们重新进入仿真环境,将反汇编窗口关闭,不断按F10 键,可以看到在源程序窗口中的左边黄色调试箭头不会进入到延时子程序。

⒊全速运行点击工具栏上的“运行”按钮或按F5 键启动全速运行,全速执行程序,此时用户板上的 P1 口所接 LED 以流水灯状态显示。

⒋暂停点击工具栏上的按钮,此时用户板上的P1 口所接 LED 停止以流水灯状态显示,只有一个 LED 灯点亮(取决于暂停前的 P1 的值)。

keil与proteus的C单步联调

keil与proteus的C单步联调

keil与proteus的C单步联调好了,这时候就可以看到那发光管一闪一闪的了。

联调设置我们已经知道如何把keil里写的东西让proteus动起来了,现在我们来讲讲如何进行联调。

1.先把vdm51.dll复制到X:\Program Files\Keil\C51\BIN里(X是你keil安装的盘符。

)2.用记事本打开keil目录下的tools.ini,在[C51] 栏目下加入TDRV9=BIN\VDM51.DLL ("Proteus VSM Monitor-51 Driver" ) ,其中“TDRV9”中的“9”要根据实际情况写,不要和原来的重复。

还有“”里的文字其实就是你在keil选项里显示的文字,所以也可以自己定义。

如下图:3.在keil软件里的"options for target"target1→Debug"选项里选中右边的use,在下拉菜单中选择proteus vsm simulator。

如下图所示:4.在proteus 的debug 菜单中选中use remote debug monitor 。

如下图所示:1、已经安装了keil6.2和proteus7.82、安装keil与proteus联调驱动vdmagdi.exe,可以省去许多手动的设置,这个软件3、网上多了去。

4、打开keil和proteus软件,并各建立一个工程都保存在同一目录5、Keil设置(1)输出机器码(2)注意图中三个地方的设置注意:没有2,就没有c的联调,3是断点设置。

6、proteus设置(1)连接机器码(2)选远程调试7.调试(1)进入debug(2)一般选单步执行试验结果:。

keil与proteus的C单步联调

keil与proteus的C单步联调

keil与proteus的C单步联调好了,这时候就可以看到那发光管一闪一闪的了。

联调设置我们已经知道如何把keil里写的东西让proteus动起来了,现在我们来讲讲如何进行联调。

1.先把vdm51.dll复制到X:\Program Files\Keil\C51\BIN里(X是你keil安装的盘符。

)2.用记事本打开keil目录下的tools.ini,在[C51] 栏目下加入TDRV9=BIN\VDM51.DLL ("Proteus VSM Monitor-51 Driver" ) ,其中“TDRV9”中的“9”要根据实际情况写,不要和原来的重复。

还有“”里的文字其实就是你在keil选项里显示的文字,所以也可以自己定义。

如下图:3.在keil软件里的"options for target"target1→Debug"选项里选中右边的use,在下拉菜单中选择proteus vsm simulator。

如下图所示:4.在proteus 的debug 菜单中选中use remote debug monitor 。

如下图所示:1、已经安装了keil6.2和proteus7.82、安装keil与proteus联调驱动vdmagdi.exe,可以省去许多手动的设置,这个软件3、网上多了去。

4、打开keil和proteus软件,并各建立一个工程都保存在同一目录5、Keil设置(1)输出机器码(2)注意图中三个地方的设置注意:没有2,就没有c的联调,3是断点设置。

6、proteus设置(1)连接机器码(2)选远程调试7.调试(1)进入debug(2)一般选单步执行试验结果:。

Keil uVision入门2--程序调试入门

Keil uVision入门2--程序调试入门

keil教程KEIL C51标准C编译器为8051微控制器的软件开发提供了C语言环境,但是界面是英文的好多初学者看很多教程都是一头雾水,这个相对简单的教程。

KEIL C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品,其效率已经达到了相当搞的程度。

C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。

uVision2 IDE可为它们提供单一而灵活的开发环境。

Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。

下面介绍Keil C51软件的使用方法,这应该算一个入门教程,奉献给大家,本人建议结合HZ-C51 豪智单片机学习板实现边学边用进入Keil C51 后,屏幕如下图所示。

几秒钟后出现编辑界启动Keil C51时的屏幕进入Keil C51后的编辑界面简单程序的调试学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。

下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。

1)建立一个新工程单击Project菜单,在弹出的下拉菜单中选中New Project选项2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51 如下图所示,然后点击保存.3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,ke il c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定.4)完成上一步骤后,屏幕如下图所示到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。

5)在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项新建文件后屏幕如下图所示此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。

keil介绍

keil介绍

Ch1Keil介绍2010年春季NCUSE HYn 1.1概述n 1.2 Keil开发n 1.3 Keil调试n 1.4 Keil调试辅助工具1.1 概述n对51单片机而言,使用最广泛的软件编写语言 主要是汇编语言和C语言。

n在实际工程中,除了一些小型的应用程序或对 执行效率要求较高的关键部分,一般不会采用 汇编语言作为系统开发的主语言,取而代之是 高级语言,如C语言。

n对于51单片机,最著名的开发工具是Keil Software公司(位于美国德克萨斯,已被ARM 公司收购)的uVision集成开发环境。

uVision3 集成开发环境n包括:q C编译器q宏汇编器q连接器q库管理q仿真调试器1.2 Keil开发n Keil C51开发示例 q Keil_demoXtal后面的数值是晶振频 率值,默认值是所选目标 CPU 的最高可用频率 值,对于所选的AT89C51 而言是24M, 该数值与最终产生的目标 代码无关,仅用于软件模 拟调试时显示程序执行时 间。

正确设置该数值可使 显示时间与实际所用时间 一致,一般将其设置成与 你的硬件所用晶振频率相 同。

确认是否仅使用片内 ROM(注意:选中该项 并不会影响最终生成的目 标代码量)Memory Model用于设置 RAM使用情况,有三个 选择项,Small是所有变 量都在单片机的内部 RAM中(对于AT89C51,只有128字 节);Compact是可以使 用一页(256字节)外部 扩展RAM,而Larget 则 是可以使用全部外部的扩 展RAM。

Code Model用于设置 ROM空间的使用,同样 也有三个选择项,即 Small模式,只用低于2K 的程序空间;Compact模 式,单个函数的代码量不 能超过2K,整个程序可 以使用64K程序空间; Large模式,可用全部64K空间。

Operating项是操作系统 选择,Keil提供了两种操 作系统:Rtx tiny和Rtx full,关于操作系统是另 外一个很大的话题了,对 于单片机而言,通常我们 不使用任何操作系统,即 使用该项的默认值: None(不使用任何操作 系统)。

实验1使用Keil输入和调试程序

实验1使用Keil输入和调试程序

实验一使用Keil输入和调试程序(一)实验目的:通过实验掌握Keil C51集成开发环境输入程序和调试程序的方法。

(二)实验仪器:计算机一台STC12学习板一套STC单片机仿真器一套USB连接电缆一根(三)实验内容及步骤:Keil C51 IDE又叫Keil集成开发环境或Keil C51μVision3。

实验要求使用Keil集成开发环境完成实验程序的输入、调试。

Keil是以工程项目的方法管理文件。

所有的文件(源程序文件、头文件和各种技术文档)都是放在工程项目里的统一管理。

下面通过一个实验程序学习使用Keil IDE建立应用程序和调试程序的步骤:✓新建一个工程项目。

✓为工程项目选择目标器件。

✓建立源程序文件,输入程序代码并保存。

将源程序文件添加到工程项目里。

✓为工程项目设置软件、硬件的调试环境。

✓输入、调试和运行实验程序。

要创建的工程项目是:设计一个程序,使学习板上的LED1灯闪亮,电路图如图2-1所示(在第14页)。

该实验工程项目的建立过程如下:1、启动Keil C51的IDE开发环境并建立一个工程项目双击计算机桌面上的Keil C51 IDE图标即可启动Keil C51 IDE开发环境。

如果以前已经建立了工程项目,Keil51 IDE启动后会直接显示原来打开的工程项目。

也可以打开原来已经存在的工程项目。

打开已经存在的项目方法是,从“Project”菜单中选择“Open Project”菜单项,从弹出的对话框中选择要打开的项目。

新建项目文件时,从“Project”菜单中选择“New Project”菜单项,将打开“Create New Project”对话框。

如图1-1所示。

在“Create New Project”对话框中做以下的工作:✧为工程项目选择一个存放路径,在此选择STC51文件夹(若计算机中没有STC51文件夹,则需要建立它)。

✧在文件名输入框里输入,这是为实验工程项目取的工程项目文件名(扩展名是.uv2)。

keil单步调试

keil单步调试
观察窗口
• 观察窗口中变量的值不仅可以观察,还可以修 改,以该程序为例,I须加10次才能到10,为 快速验证是否可以正确执行到P1_0=!P1_0行, 点击I后面的值,再按F2,该值即可修改,将 I的值改到9,再次按F10单步执行,即可以很 快执行到P1_0=!P1_0程序行。该窗口显示的 变量值可以以十进制或十六进制形式显示,方 法是在显示窗口点右键,在快捷菜单中选择如 图5所示。
• 学习程序调试,必须明确两个重要的概念:单步执行 与全速运行。 • 全速执行是指一行程序执行完以后紧接着执行下一行 程序,中间不停止,这样程序执行的速度很快,并可 以看到该段程序执行的总体效果,即最终结果正确还 是错误,但如果程序有错,则难以确认错误出现在哪 些程序行。 • 单步执行是每次执行一行程序,执行完该行程序以后 即停止,等待命令执行下一行程序,此时可以观察该 行程序执行完以后得到的结果,是否与我们写该行程 序所想要得到的结果相同,借此可以找到程序中问题 所在。程序调试中,这两种运行方式都要用到。
• 使用菜单STEP或相应的命令按钮或使用 快捷键F11可以单步执行程序,使用菜单 STEP OVER或功能键F10可以以过程单 步形式执行命令,所谓过程单步,是指 将汇编语言中的子程序或高级语言中的 函数作为一个语句来全速执行。
观察窗口
• 观察窗口是很重要的一个窗口,工程窗口中仅 可以观察到工作寄存器和有限的寄存器如A、 B、DPTR等,如果需要观察其它的寄存器的 值或者在高级语言编程时需要直接观察变量, 就要借助于观察窗口了。
• 程序调试中常使用设置断点然后全速运行的方 式,在断点处可以获得各变量值,但却无法知 道程序到达断点以前究竟执行了哪些代码,而 这往往是需要了解的,为此,Keil提供了跟踪 功能,在运行程序之前打开调试工具条上的允 许跟踪代码开关,然后全速运行程序,当程序 停止运行后,点击查看跟踪代码按钮,自动切 换到反汇编窗口,如图6所示,其中前面标有 “-”号的行就是中断以前执行的代码,可以按 窗口边的上卷按钮向上翻查看代码执行记录。

C51程序在Keil C51下的调试步骤

C51程序在Keil C51下的调试步骤

C51程序在Keil C51下的调试步骤现在广泛使用的C51集成开发环境是Keil软件。

要使用Keil软件,首先要正确安装Keil软件,该软件的Eval版本可以直接去http://www. 下载,其步骤与一般Windows 程序安装类似,这里就不再赘述了。

Keil软件的详细说明见相关资料,这里仅作简要说明,以便于读者在后面的章节中实际动手调试、仿真程序。

1.建立工作项目文件图1启动Keil μVison2启动Keil μVison2,如果打开后就有打开的文件,单击“Project->Close Project”菜单将其关闭。

单击“File->New... ",打开一个新的文件输入窗口,在这个窗口里输入上述源程序。

输入完毕之后,选择“File-->Save",给这个文件取名保存,取名字的时候必须要加上扩展名,一般C语言程序均以“.c”为扩展名(一定要加扩展名,否则后面添加文件就找不到该文件,这是初学者很容易忘记的),这里将其命名为mytest.c。

图2 建立工程文件单击“Project->New Project...",出现对话框,要求给将要建立的工程起一个名字,这里起名为test,不需要输入扩展名。

单击“保存”按钮,出现第二个对话框,如图3所示:图3 CPU选择窗口这个对话框要求选择工程中所用的单片机型号,这里选择Atmel公司的89S52芯片。

单击ATMEL前面的“+”号,展开该层,单击其中的89S52,然后再单击“确定”按钮,会出现一个对话框,询问是否要将标准的8052启动代码加入工程,单击“是”按钮。

此时,在工程窗口的文件页中出现了“Target 1”,前面有“+”号,单击“+”号展开,可以看到下一层的“Source Group 1 ",需要手动把刚才编写好的源程序加入,方法如下:单击“Source Group 1 ",使其反白显示,然后单击鼠标右键,出现一个下拉菜单,如图4所示。

Keil软件及其调试功能简介.

Keil软件及其调试功能简介.

Keil软件及其调试功能简介目前流行的51系列单片机开发软件是德国Keil公司推出的Keil C51软件,它是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程,其6.0以上的版本将编译和仿真软件统一为μVision(通常称为μV2)。

Keil提供包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,由以下几部分组成:μVision IDE集成开发环境(包括工程管理器①、源程序编辑器②、程序调试器③,见图2)、C51编译器、A51汇编器、LIB51库管理器、BL51连接/定位器、OH51目标文件生成器以及Monitor-51、RTX51实时操作系统。

应用Keil进行软件仿真开发的主要步骤为:编写源程序并保存—建立工程并添加源文件—设置工程—编译/汇编、连接,产生目标文件—程序调试。

Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。

工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。

首先选择菜单File-New…,在源程序编辑器中输入汇编语言或C语言源程序(或选择File-O pen…,直接打开已用其它编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c;然后选择菜单Project-New Project…,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2);工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。

这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择Source Group1,右击鼠标弹出快捷菜单,选择“Add File to Group ‘Source Group1’”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件)。

keil和iar调试方法

keil和iar调试方法

keil和iar调试方法Keil和IAR是两种常用的嵌入式开发工具,可以用于编写和调试嵌入式系统的程序。

本文将介绍如何使用Keil和IAR进行调试,并比较两者的优劣。

我们来介绍Keil调试方法。

Keil是一款功能强大的集成开发环境(IDE),广泛用于ARM处理器的嵌入式系统开发。

在Keil中,调试功能十分丰富,可以帮助开发者快速定位和解决程序中的错误。

在Keil中进行调试的第一步是创建一个工程,并将程序源代码添加到工程中。

之后,我们需要对程序进行编译,生成可执行文件。

在编译过程中,Keil会对代码进行语法检查,并生成编译器的警告或错误信息,方便开发者进行修正。

接下来,我们可以通过在程序中插入断点的方式来进行调试。

断点是一种调试工具,可以让程序在运行到指定位置时停止执行,从而可以查看此时的程序状态。

在Keil中,我们可以通过单击源代码左侧的行号来设置断点。

当程序运行到断点位置时,Keil会自动切换到调试模式,并在代码窗口中高亮显示当前执行的代码行。

此时,我们可以使用Keil提供的调试工具来查看变量的值、寄存器的状态等信息。

同时,Keil还提供了逐条执行、单步调试等功能,可以帮助开发者逐步查看程序的执行过程,从而找出错误所在。

除了断点调试外,Keil还支持远程调试功能。

通过使用Keil提供的调试器和调试适配器,我们可以将目标设备与开发电脑连接起来,并在开发电脑上进行远程调试。

这种方式适用于无法直接在开发电脑上运行程序的嵌入式系统,可以极大地提高调试效率。

而IAR也是一款常用的嵌入式开发工具,与Keil相比,IAR具有更加友好的界面和更强大的调试功能。

在IAR中,调试的操作方式与Keil类似,同样需要创建工程、编译程序,并设置断点来进行调试。

与Keil相比,IAR的一个优势是其更强大的性能分析功能。

IAR提供了丰富的性能分析工具,可以帮助开发者分析程序的执行时间、函数调用关系等信息。

这对于优化程序性能、提高系统响应速度非常有帮助。

keil调试各种窗口用途介绍

keil调试各种窗口用途介绍

Keil 程序调试窗口上一讲中我们学习了几种常用的程序调试方法,这一讲中将介绍Keil 提供各种窗口如输出窗口、观察窗口、存储器窗口、反汇编窗口、串行窗口等的用途,以及这些窗口的使用方法,并通过实例介绍这些窗口在调试中的使用。

Keil软件在调试程序时提供了多个窗口,主要包括输出窗口(Output Windows )、观察窗口(Watch&Call Statck Windows )、存储器窗口(Memory Window )、反汇编窗口(Dissambly Window )串行窗口(Serial Window )等。

进入调试模式后,可以通过菜单View 下的相应命令打开或关闭这些窗口。

图1是输出窗口、观察窗口和存储器窗口,各窗口的大小可以使用鼠标调整。

进入调试程序后,输出窗口自动切换到Command 页。

该页用于输入调试命令和输出调试信息。

对于初学者,可以暂不学习调试命令的使用方法。

1、存储器窗口存储器窗口中可以显示系统中各种内存中的值,通过在Address 后的编缉框内输入“字母:数字”即可显示相应内存值,其中字母可以是C 、D 、I 、X ,分别代表代码存储空间、直接寻址的片内存储空间、间接寻址的片内存储空间、扩展的外部RAM 空间,数字代表想要查看的地址。

例如输入D :0即可观察到地址0开始的片内RAM 单元值、键入C :0即可显示从0开始的ROM 单元中的值,即查看程序的二进制代码。

该窗口的显示值可以以各种形式显示,如十进制、十六进制、字符型等,改变显示方式的方法是点鼠标右键,在弹出的快捷菜单中选择,该菜单用分隔条分成三部份,其中第一部份与第二部份的三个选项为同一级别,选中第一部份的任一选项,内容将以整数形式显示,而选中第二部份的Ascii 项则将以字符型式显示,选中Float 项将相邻四字节组成的浮点数形式显示、选中Double 项则将相邻8字节组成双精度形式显示。

第一部份又有多个选择项,其中Decimal 项是一个开关,如果选中该项,则窗口中的值将以十进制的形式显示,否则按默认的十六进制方式显示。

Keil 的调试命令、在线汇编与断点设置

Keil 的调试命令、在线汇编与断点设置

Keil 的调试命令、在线汇编与断点设置上一讲中我们学习了如何建立工程、汇编、连接工程,并获得目标代码,但是做到这一步仅仅代表你的源程序没有语法错误,至于源程序中存在着的其它错误,必须通过调试才能发现并解决,事实上,除了极简单的程序以外,绝大部份的程序都要通过反复调试才能得到正确的结果,因此,调试是软件开发中重要的一个环节,这一讲将介绍常用的调试命令、利用在线汇编、各种设置断点进行程序调试的方法,并通过实例介绍这些方法的使用。

一、常用调试命令在对工程成功地进行汇编、连接以后,按Ctrl+F5 或者使用菜单Debug->Start/Stop Debug Session 即可进入调试状态,Keil 内建了一个仿真CPU 用来模拟执行程序,该仿真CPU 功能强大,可以在没有硬件和仿真机的情况下进行程序的调试,下面将要学的就是该模拟调试功能。

不过在学习之前必须明确,模拟毕竟只是模拟,与真实的硬件执行程序肯定还是有区别的,其中最明显的就是时序,软件模拟是不可能和真实的硬件具有相同的时序的,具体的表现就是程序执行的速度和各人使用的计算机有关,计算机性能越好,运行速度越快。

进入调试状态后,界面与编缉状态相比有明显的变化,Debug 菜单项中原来不能用的命令现在已可以使用了,工具栏会多出一个用于运行和调试的工具条,如图 1 所示,Debug 菜单上的大部份命令可以在此找到对应的快捷按钮,从左到右依次是复位、运行、暂停、单步、过程单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令。

? 图1 调试工具条学习程序调试,必须明确两个重要的概念,即单步执行与全速运行。

全速执行是指一行程序执行完以后紧接着执行下一行程序,中间不停止,这样程序执行的速度很快,并可以看到该段程序执行的总体效果,即最终结果正确还是错误,但如果程序有错,则难以确认错误出现在哪些程序行。

keil uvision4无法单步运行(LPC1114)

keil uvision4无法单步运行(LPC1114)

最近在做LPC1114芯片的开发,编译器用的Keil uVision4,如下问题:仿真器用的JLink的,运行开发板的例程,可以仿真。

Ctrl+F5后,代码区左边的箭头会指到程序的开始(main()函数的第一句)。

自己建了一个工程,Ctrl+F5后,看不到左边的箭头,调试工具栏的逐语句、逐过程等钮也是灰的即不能单步运行。

下面是Ctrl+F5后正常的截图:解决方法:在网上找到一个同样问题的帖子说是“是启动代码的配置问题。

跟startup.s里面的某一段汇编代码有关系。

”。

不过他用的芯片不是LPC1114。

/forum.php?mod=viewthread&tid=283475。

借鉴这哥们儿的方法,逐一查找自建的工程与正常工程的设置,弄了好一会儿,还是不行,有别的事就先放下了。

第二天一早,再对与正常工程的设置,发现有个地方没有打勾,option->Target里的Use MicroLIB复选框(查了关于MicroLIB的资料,还是不太明白,难道LPC1114芯片,编译不选这个,就不能仿真吗?),解决了问题,下面把正常设置的截图贴上。

Target:对我这个问题,这个是重点。

/////////////////////////////////////////////////////////Output://///////////////////////////////////////////////////////////// Listing://////////////////User://////////////////////////////////////////////////////////C/C++:下面红色框里是可选项,跟本问题应该没有关系。

////////////////////////////////////Asm: 打了Use MicroLIB后,下面框里就变了。

//////////////////////////////////////////////////// Linker://////////////////////////////////Debug://///////////////////////////////////////////////////////////////////////// Utilities:。

Keil C51程序调试过程

Keil C51程序调试过程

如何使用Keil C软件调试单片机程序调试普通都是在发生错误与意外的情况下使用的。

如果程序能正常执行,调试不少时候都是用不上的。

所以,最高效率的程序开辟还是程序员自己做好规范,而不是指望调试来解决问题。

单片机的程序调试分为两种,一种是使用软件摹拟调试,第二种是硬件调试。

使用软件摹拟调试,就是用计算机去摹拟单片机的指令执行,并虚拟单片机片内资源,从而实现调试的目的。

但是软件调试存在一些问题,不可能像真正的单片机运行环境那样执行的指令能在同一个时间完成(往往比单片机慢)。

软件调试只能是一种初步的,小型工程的调试,比如一个惟独几百上千行的代码的程序,软件调试能很好的完成。

硬件调试其实也需要计算机软件的配合,大致过程是这样的:计算机软件把编译好的程序通过串行口、并行口或者USB口传输到仿真器,然后与单片机一样执行。

仿真器仿真全部的单片机资源(所有的单片机接口,并且有真正的引脚输出)。

仿真器会将单片机内部内存与时序等情况返回给计算机,这样 就可以在计算机里看到单片机程序真正的执行情况。

不仅如此,还可以通过计算机的软件实现单步、全速、运行到光标的常规调试手段。

仿真器可以接入实际的电路中。

图1:仿真器下面将具体介绍如何使用Keil uVision 软件来调试单片机程序。

首先:打开一个已经编译通过的单片机项目。

选择Debug下面的Start/Stop Debug Session,这个选项可以打开调试也可以关闭调试。

接下来看到的窗口就是调试窗口了:下面具体说说相关子窗口的功能:1、左侧的ProjectWorkspaceRegs是片内内存的相关情况值;Sys是系统一些累加器、计数器等。

Regs很简单就不多说。

具体介绍一下Sys:a 累加器ACC,往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。

b 寄存器B,主要用于乘法和除法操作。

spsp_maxdptr 数据指针DPTR。

PC $states 执行指令的数量。

keil的调试步骤与方法

keil的调试步骤与方法

keil的调试步骤与方法Keil调试步骤与方法Keil是一款常用的嵌入式开发环境,用于编写和调试嵌入式系统的程序。

在进行嵌入式开发过程中,调试是一个非常重要的环节,它可以帮助开发人员找出程序中存在的问题并进行修复。

本文将介绍Keil的调试步骤与方法,帮助读者更好地进行嵌入式开发与调试。

一、准备工作在使用Keil进行调试之前,我们需要先进行一些准备工作。

首先,我们需要安装Keil软件,并配置好开发板的硬件环境。

其次,我们需要将待调试的程序下载到开发板中,并连接上调试器。

最后,我们需要在Keil中打开待调试的项目文件,以便进行后续的调试操作。

二、设置断点在进行程序调试时,我们常常需要在程序中设置断点,以便在指定位置停下来观察程序的执行情况。

在Keil中,我们可以通过单击代码行号的方式来设置断点。

当程序执行到设置的断点位置时,会自动停下来,以便我们观察相关的变量值和程序执行流程。

三、单步执行单步执行是调试过程中常用的操作之一,它可以使程序以单步的方式执行,以便我们逐行观察程序的执行情况。

在Keil中,我们可以通过点击工具栏上的“单步执行”按钮来进行单步执行操作。

在单步执行过程中,我们可以观察变量的值的变化,以及程序的执行流程,帮助我们找出程序中的问题。

四、观察变量值在调试过程中,我们经常需要观察程序中的变量值,以便判断程序的执行是否符合预期。

在Keil中,我们可以通过“观察窗口”来观察变量的值。

在观察窗口中,我们可以添加需要观察的变量,并在程序执行过程中实时查看其数值的变化。

五、查看寄存器值在嵌入式系统中,寄存器是非常重要的硬件资源,它们直接影响着程序的执行。

在Keil中,我们可以通过“寄存器窗口”来查看寄存器的值。

在寄存器窗口中,我们可以查看各个寄存器的当前值,以便判断程序的执行是否符合预期。

六、调试输出除了观察变量和寄存器的值外,我们还可以通过调试输出来观察程序的执行情况。

在Keil中,我们可以使用printf函数来进行调试输出。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Keil的调试命令
电子工程系 2010.12
调试的重要性
• 以前我们学习了如何建立工程、写C源文件、 连接工程,并获得目标代码,但是做到这一步 仅仅代表你的源程序没有语法错误,至于源程 序中存在着的其它错误,必须通过调试才能发 现并解决。事实上,除了极简单的程序以外, 绝大部份的程序都要通过反复调试才能得到正 确的结果,因此,调试是软件开发中重要的一 个环节。
• 点击View->Dissambly Window可以打开反汇编窗口, 该窗口可以显示反汇编后的代码、源程序和相应反汇 编代码的混合代码,可以在该窗口进行在线汇编、利 用该窗口跟踪已找行的代码、在该窗口按汇编代码的 方式单步执行,这也是一个重要的窗口。打开反汇编 窗口,点击鼠标右键,出现快捷菜单,如图6所示, 其中Mixed Mode是以混合方式显示,Assembly Mode是以反汇编码方式显示。
• 编译、连接后按Ctrl+F5进入调试,按F10单步执行。 注意观察窗口,其中有一个标签页为Locals,这一页 会自动显示当前模块中的变量名及变量值。可以看到 窗口中有名为I的变量,其值随着执行的次数而逐渐 加大,如果在执行到mDelay(10)行时按F11跟踪到 mDelay函数内部,该窗口的变量自动变为DelayTime 和j。另外两个标签页Watch #1和Watch #2可以加 入自定义的观察变量,点击“type F2 to edit”然后再 按F2即可输入变量,试着在Watch #1中输入I,观察 它的变化。
观察窗口
• 观察窗口中变量的值不仅可以观察,还可以修 改,以该程序为例,I须加10次才能到10,为 快速验证是否可以正确执行到P1_0=!P1_0行, 点击I后面的值,再按F2,该值即可修改,将 I的值改到9,再次按F10单步执行,即可以很 快执行到P1_0=!P1_0程序行。该窗口显示的 变量值可以以十进制或十六进制形式显示,方 法是在显示窗口点右键,在快捷菜单中选择如 图5所示。
ห้องสมุดไป่ตู้
• 学习程序调试,必须明确两个重要的概念:单步执行 与全速运行。 • 全速执行是指一行程序执行完以后紧接着执行下一行 程序,中间不停止,这样程序执行的速度很快,并可 以看到该段程序执行的总体效果,即最终结果正确还 是错误,但如果程序有错,则难以确认错误出现在哪 些程序行。 • 单步执行是每次执行一行程序,执行完该行程序以后 即停止,等待命令执行下一行程序,此时可以观察该 行程序执行完以后得到的结果,是否与我们写该行程 序所想要得到的结果相同,借此可以找到程序中问题 所在。程序调试中,这两种运行方式都要用到。
• 使用菜单STEP或相应的命令按钮或使用 快捷键F11可以单步执行程序,使用菜单 STEP OVER或功能键F10可以以过程单 步形式执行命令,所谓过程单步,是指 将汇编语言中的子程序或高级语言中的 函数作为一个语句来全速执行。
观察窗口
• 观察窗口是很重要的一个窗口,工程窗口中仅 可以观察到工作寄存器和有限的寄存器如A、 B、DPTR等,如果需要观察其它的寄存器的 值或者在高级语言编程时需要直接观察变量, 就要借助于观察窗口了。
• 程序调试中常使用设置断点然后全速运行的方 式,在断点处可以获得各变量值,但却无法知 道程序到达断点以前究竟执行了哪些代码,而 这往往是需要了解的,为此,Keil提供了跟踪 功能,在运行程序之前打开调试工具条上的允 许跟踪代码开关,然后全速运行程序,当程序 停止运行后,点击查看跟踪代码按钮,自动切 换到反汇编窗口,如图6所示,其中前面标有 “-”号的行就是中断以前执行的代码,可以按 窗口边的上卷按钮向上翻查看代码执行记录。
• • • • • • • • • • • • • • • • • • • •
#include"reg51.h" sbit P1_0=P1^0; void mDelay(unsigned char DelayTime) { unsigned int j=0; for(;DelayTime>0;DelayTime--) {for(j=0;j<125;j++) {;} } } void main() { unsigned int i; for(;;) { mDelay(10); i++; if(i==10) { P1_0=!P1_0; i=0; } } }
• 利用工程窗口可以观察程序执行的时间,下面我们观 察一下该例中延时程序的延时时间是否满足我们的要 求,即是否确实延时10毫秒,展开工程窗口Regs页中 的Sys目录树,其中的Sec项记录了从程序开始执行到 当前程序流逝的秒数。点击RST按钮以复位程序, Sec的值回零,按下F10键,程序窗口中的黄色箭头指 向mDelay(10)行,此时,记录下Sec值为 0.00038900,然后再按F10执行完该段程序,再次查 看Sec的值为0.01051200,两者相减大约是0.01秒, 所以延时时间大致是正确的。读者可以试着将延时程 序中的unsigned int改为unsigned char试试看时间是 否仍正确。注意,使用这一功能的前提是在项目设置 中正确设置晶振的数值。
主要内容
• 常用调试命令 • 常用窗口 输出窗口 观察窗口 反汇编窗口 • 结合实例
常用调试命令
• 在对工程成功地进行汇编、连接以后, 按Ctrl+F5或者使用菜单Debug>Start/Stop Debug Session即可进入 调试状态,Keil内建了一个仿真CPU用来 模拟执行程序,该仿真CPU功能强大, 可以在没有硬件和仿真机的情况下进行 程序的调试
• 进入调试状态后,界面与编缉状态相比有明显的变化, Debug菜单项中原来不能用的命令现在已可以使用了, 工具栏会多出一个用于运行和调试的工具条,如图1所 示,Debug菜单上的大部份命令可以在此找到对应的 快捷按钮,从左到右依次是复位、运行、暂停、单步、 过程单步、执行完当前子程序、运行到当前行、下一 状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、 代码作用范围分析、1#串行窗口、内存窗口、性能分 析、工具按钮等命令。
相关文档
最新文档