keil调试经验
- 格式:doc
- 大小:242.50 KB
- 文档页数:12
keil调试程序方法
一、Keil调试程序方法
1、打开Keil,新建工程,在工程目录下,右键选择“添加新建文件”,然后选择“源文件”。
这时会弹出“新建文件对话框”,在文件类型中选择“C文件”。
2、编写C代码,调试程序,为了方便调试,先在程序里加上调试的操作,如“printf”,“getchar”等。
3、如果添加多个C文件时,也可以选择“添加新建文件”,然后选择“工程文件”,在弹出的对话框里输入文件名,然后点击“确定”。
4、编译源代码,编译完成后,查看是否有编译错误,如果没有编译错误,就可以继续下一步。
5、点击编译器的“调试”按钮,它会自动加载要调试的程序,然后就可以进行调试了。
6、在Keil的调试界面上,可以使用鼠标画“断点”,程序运行时,就能自动地停在“断点”处。
7、当一段程序运行完成,可以按F11快捷键,让程序自动运行,或者按“运行”按钮,让程序在断点处暂停,然后再单步执行一行一行调试。
8、Keil调试界面可以编辑程序,也可以查看程序的运行结果,从而可以及时发现程序中的bug。
9、在Keil的调试界面上,可以编辑程序,也可以给变量赋值,从而方便快速地调试程序。
10、当完成调试后,可以按“重新编译”按钮,重新编译整个程序,再查看编译结果,最后保存这个工程,保存文件名为*.uv2文件。
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软件的使用及简单程序的调试方法一、实验目的掌握Keil的使用方法和建立一个完整的单片机汇编语言程序的调试过程及方法。
二、实验器材计算机1台三、实验内容1.Keil的使用方法。
2.建立一个单片机汇编语言程序的调试过程及方法四、实验步骤1.Keil的使用方法。
Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。
启动Keil 后的界面如下:几秒钟后即进入Keil的编辑界面。
用户便可建立项目及应用程序。
2.简单程序的调试方法Keil是通过项目工程来管理汇编程序的。
因此在调试程序前必须建立一个工程,工程名称及保存位置由用户来指定,注意每位同学的工程名称用“学号姓名实验*”来命名。
(1)建立一工程单击Project菜单,在弹出的下拉菜单中选中New Project选项。
并在弹出的对话框中确定保存的位置及工程名称。
又弹出一对话框,要求用户选择相应的硬件CPU及相关设置。
选择Atmel公司的AT89C51单片机。
如下图所示单击“确定”后在弹出的对话框中行选择“否”即工程建好了,但该工程没有任何语句,需要再建一个程序文件并将其添加到此工程中。
(2)建一文件单击“File”/“New”命令,则弹出文件的编辑窗口,此时该文件还没有指明其文件名称及保存位置,该文件还没有加载到所建立的工程中。
单击“File”/“Save”命令在弹出的对话框中指明文件的类型为.ASM汇编型及文件名后单击“保存”即可进行汇编源文件的编辑。
如下图所示。
(3)将文件添加到工程中单击“Target 1”前的“+”号则展开后变成“-”号,并右键单击“Source Group 1”在弹出的下拉菜单中执行“Add Files to Group ‘Source Group 1’”命令并弹出对话框在该对话框中的“文件类型”下拉列表中选择“Asm source file”后找到要添加的文件名并选中,单击“Add”即可。
1.keil debug中选择ST-Link调试时,弹出内存出错。
把能调试的程序的*.uvopt文件替换就行了。
(uvopt和uvproj都是keil工程文件,共同说明这你工程里有哪些文件,文件有没有被编译过,工程目录树是怎么组织的等等信息)
2.调试时点运行,程序会停在在startup_stm****.s处
勾选上即可。
3.局部变量显示<not in scope>。
修改options->c/c++中的优化等级
4.peripherals选项不全
Debug调试的动态链接库针对的是CM3的,改成STM的,修改如下:
5. MDK实时更新WATCH窗口
View-> Periodic Window Update,勾选
6.软件仿真时停在等待HSE处
修改Debug中的参数
7.使用printf时,串口输出中文时乱码
使用记事本打开文件,点击另存为,在右下方选择编码方式为ANSI,替换原文件,重新编译。
Keil 的调试命令、在线汇编与断点设置上一讲中我们学习了如何建立工程、汇编、连接工程,并获得目标代码,但是做到这一步仅仅代表你的源程序没有语法错误,至于源程序中存在着的其它错误,必须通过调试才能发现并解决,事实上,除了极简单的程序以外,绝大部份的程序都要通过反复调试才能得到正确的结果,因此,调试是软件开发中重要的一个环节,这一讲将介绍常用的调试命令、利用在线汇编、各种设置断点进行程序调试的方法,并通过实例介绍这些方法的使用。
一、常用调试命令 在对工程成功地进行汇编、连接以后,按Ctrl+F5或者使用菜单Debug->Start/Stop DebugSession 即可进入调试状态,Keil 内建了一个仿真CPU 用来模拟执行程序,该仿真CPU 功能强大,可以在没有硬件和仿真机的情况下进行程序的调试,下面将要学的就是该模拟调试功能。
不过在学习之前必须明确,模拟毕竟只是模拟,与真实的硬件执行程序肯定还是有区别的,其中最明显的就是时序,软件模拟是不可能和真实的硬件具有相同的时序的,具体的表现就是程序执行的速度和各人使用的计算机有关,计算机性能越好,运行速度越快。
进入调试状态后,界面与编缉状态相比有明显的变化,Debug 菜单项中原来不能用的命令现在已可以使用了,工具栏会多出一个用于运行和调试的工具条,如图1所示,Debug 菜单上的大部份命令可以在此找到对应的快捷按钮,从左到右依次是复位、运行、暂停、单步、过程单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令。
学习程序调试,必须明确两个重要的概念,即单步执行与全速运行。
全速执行是指一行程序执行完以后紧接着执行下一行程序,中间不停止,这样程序执行的速度很快,并可以看到该段程序执行的总体效果,即最终结果正确还是错误,但如果程序有错,则难以确认错误出现在哪些程序行。
实验一使用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是一款非常强大的集成开发环境(IDE),被广泛应用于嵌入式系统开发中。
以下是一些使用Keil的技巧,可帮助提高开发效率和代码质量。
1. 设置编译器选项和优化级别:Keil允许用户自定义编译器选项,如编译警告级别、优化级别等。
通过适当设置编译器选项和优化级别,可以提高代码的执行效率和可靠性。
2. 使用断点:Keil提供了强大的调试功能,包括设置断点、单步调试等。
合理使用断点可以帮助我们快速定位和解决问题。
3. 使用调试输出:Keil提供了在调试过程中显示输出信息的功能,通过使用printf函数等,可以将调试信息输出到终端或者调试窗口中,帮助我们了解代码执行过程中的状态和错误信息。
4. 使用宏定义:宏定义是一种在编译期间进行文本替换的机制,可以提高代码的可读性和可维护性。
在Keil中,可以使用宏定义来定义常量、简化代码等。
5. 使用内联汇编:Keil支持内嵌汇编,可以在C代码中嵌入汇编指令,以提高代码的执行效率和灵活性。
6. 正确使用C标准库函数:Keil提供了一套标准C库函数,如字符串处理函数、数学函数等。
正确使用这些函数可以简化代码,提高代码的可读性和可维护性。
7. 使用代码模板:Keil提供了一些代码模板,可帮助开发者快速生成常见的代码结构,如中断处理函数、定时器初始化函数等。
合理使用代码模板可以节省开发时间,提高代码质量。
8. 使用版本控制工具:在Keil中进行开发时,建议使用版本控制工具,如Git,来管理代码的版本。
版本控制工具可以帮助我们追踪代码的修改记录,恢复代码到任意历史版本,并协作开发。
总之,使用Keil进行开发时,合理配置编译器选项、使用断点和调试输出、使用宏定义和内联汇编、正确使用C标准库函数、使用代码模板以及使用版本控制工具等技巧,可以提高开发效率和代码质量,帮助我们更好地开发嵌入式系统。
Keil使⽤Debug调试模式时出现的⼏种错误总结Keil版本:keil4V4.60调试器:j_link1.在使⽤j-link下载程序时,target options中的debug选项中选择了j-link选项后,出现了J-LINK the connected emulator is a j-link clone问题,然后keil软件⾃⾏关闭。
解决⽅式:⽤SEGGER安装⽬录下的JLinkARM.dll替换掉MDK安装⽬录下的./ARM/Segger/JLinkARM.dll就可以了2.出现了TCK (pin 9) low, but should be high. Please check target。
的错误解决⽅式:⾸先先检查原理图中是不是接错线了(就我⽽⾔,错的实在是太离谱,电源和地接反,⽽且BOOT0引脚完全没有接地),当我将这些个问题解决掉了之后,设置target options->Debug->右上⾓Use->Setting->Debug->Port选择SW选项。
3.在解决第⼆个问题之后,出现了未发现CPU的错误。
解决⽅式:这个问题的解决⽅式是在target options中的Utilities选项中点击Settings在Programming Algorithm选择框内添加芯⽚的类型(就我⽽⾔是STM32F10x 128K的)就⾏。
4.在debug模式下进⾏调试时,发现程序没有从main函数进⾏运⾏,⽽是⼀直在汇编代码BKPT那⾥停下,当点复位时,到了systemInit那⾥解决⽅式:我在⽹上查找资料,⼀般的解决⽅式有以下的⼏种:1).⼯程所在⽬录存在汉字⽬录或⽬录路径过深(由于所⽤软件绝⼤部分为外国软件且可能都是破解版,导致对汉字⽀持较差);实测⼯程汉字⽬录较长(⼤概30个汉字)且⽬录路径较深(7级),导致进⼊调试模式单步执⾏了 2 步,就出现了 IDE 已停⽌⼯作,KEIL崩溃2).KEIL 软件本⾝⼀些必要的配置,即Target Options Configure的Dubug选项下⾯选择Run to main()3).程序中存在的问题,就好⽐上述使⽤了未实现 printf() 函数或未实现的函数、条件宏等;4).硬件问题,当然做个最简单的流⽔灯便能排除。
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字节组成双精度形式显示。
keil的调试步骤与方法Keil调试步骤与方法Keil是一款常用的嵌入式开发环境,用于编写和调试嵌入式系统的程序。
在进行嵌入式开发过程中,调试是一个非常重要的环节,它可以帮助开发人员找出程序中存在的问题并进行修复。
本文将介绍Keil的调试步骤与方法,帮助读者更好地进行嵌入式开发与调试。
一、准备工作在使用Keil进行调试之前,我们需要先进行一些准备工作。
首先,我们需要安装Keil软件,并配置好开发板的硬件环境。
其次,我们需要将待调试的程序下载到开发板中,并连接上调试器。
最后,我们需要在Keil中打开待调试的项目文件,以便进行后续的调试操作。
二、设置断点在进行程序调试时,我们常常需要在程序中设置断点,以便在指定位置停下来观察程序的执行情况。
在Keil中,我们可以通过单击代码行号的方式来设置断点。
当程序执行到设置的断点位置时,会自动停下来,以便我们观察相关的变量值和程序执行流程。
三、单步执行单步执行是调试过程中常用的操作之一,它可以使程序以单步的方式执行,以便我们逐行观察程序的执行情况。
在Keil中,我们可以通过点击工具栏上的“单步执行”按钮来进行单步执行操作。
在单步执行过程中,我们可以观察变量的值的变化,以及程序的执行流程,帮助我们找出程序中的问题。
四、观察变量值在调试过程中,我们经常需要观察程序中的变量值,以便判断程序的执行是否符合预期。
在Keil中,我们可以通过“观察窗口”来观察变量的值。
在观察窗口中,我们可以添加需要观察的变量,并在程序执行过程中实时查看其数值的变化。
五、查看寄存器值在嵌入式系统中,寄存器是非常重要的硬件资源,它们直接影响着程序的执行。
在Keil中,我们可以通过“寄存器窗口”来查看寄存器的值。
在寄存器窗口中,我们可以查看各个寄存器的当前值,以便判断程序的执行是否符合预期。
六、调试输出除了观察变量和寄存器的值外,我们还可以通过调试输出来观察程序的执行情况。
在Keil中,我们可以使用printf函数来进行调试输出。
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 的值)。
⒌观察/修改寄存器的值Project 窗口在进入调试状态后显示 Regs 页的内容,包括工作寄存器 R0~R7 的内容和累加器 A、寄存器 B、堆栈指针 SP 的内容。
用户除了可以观察以外还可自行修改,例如将寄存器a 的值 0x62 改为 0x85。
方法一:用鼠标点击选中单元a,然后再单击其数值位置,出现文字框后输入0x85 按回车键即可;方法二:在命令行窗口,输入A=0x85,按回车键将把 A 的数值设置为 0x856.观察/修改存储器的数据点击菜单“视图View->储存器窗口Memory Windows”,便会打开储存器Memory 窗口(如窗口已打开,则会关闭), Memory 窗口可以同时显示 4 个不同的存储器区域,点击窗口下部分的编号可以相互切换显示。
在储存器1(Memory#1)的地址输入栏内输入“D:0e0h”,按回车键后,可以从内部可直接寻址 RAM 的e0H 地址处开始显示, e0H 地址的值就是寄存器 a 的值,应与主寄存器窗口下的值相同。
点击窗口下部分的储存器2(Memory#2),在 Address 输入栏内输入“D:0e0h”,按回车键后,可以从内部可间接寻址 RAM 的 e0H 地址处开始显示。
点击窗口下部分的Memory#3,在 Address 输入栏内输入“C:0x0021”,按回车键后,可以从代码区域 0000H 地址处开始显示,这时各地址值应与在反汇编窗口中的值相同。
点击窗口下部分的Memory#4,在 Address 输入栏内输入“X:00h”,按回车键后,可以从xdata RAM 区域 0000H 地址处开始显示。
通过 Memory 窗口修改数据在Memory 窗口中显示的数据可以修改。
例如,要改动 data 区域 OXE0 地址的数据内容:把鼠标移动到该数据的显示位置,按动鼠标右键在弹出的菜单中选中:更新储存器“Modify Memory at D:0xE0”,在弹出对话框的文本输入栏内输入相应数值,按回车键或点击 OK,修改完成。
通过命令行查看数据例如,我们想查看data 空间从 0x01 到 0x03 地址的内容,可在命令输入窗口输入“d d:0x01,03H”,回车即可完成,d 表示 data 空间,0x01 表示起始地址,03H 表示结束地址(注意两种 16 进制的表示方法在这里都可以接受),输出结果在信息输出窗口中显示出来。
通过命令行修改数据例如,我们想把 p1口的值从0x02数据修改成 0x04 ,可在命令输入窗口输入p1=0x04”,回车即可完成,此时如果p1口接有led,将立即看到led状态改变。
通过 Memory 窗口可以看到修改后的数据:在地址栏输入 d:00H然后回车。
储存器1 的d:0x90后的第一个数据就变成了04 ,这正是我们刚才修改的结果。
7.观察/修改变量的值在暂停程序运行时,可以观察到有关的变量值。
在监视/调用堆栈(Watch)窗口“局部”页自动显示当前正在使用的局部变量,不需要用户自己添加。
监视(Watch)页显示用户指定的程序变量。
(先按F2键,然后输入变量的名称例如“delay”然后回车)移动鼠标光标到要观察的变量“delay”上停留大约一秒钟,就弹出一个“变量提示”块出来。
将鼠标移动到一个变量名“d1”的上面,点击鼠标右键,出现快捷菜单,选中:“增加d1到观察窗口”(Add “d1” to Watch Windows…)选项,子菜单中会出现#1 和#2 的选项,点击后该变量就会加入对应的监视/调用堆栈(Watch) 窗口。
增加d1到观察窗口”(Add “d1” to Watch Windows…)选项后对应的监视窗口显示了d1 的值。
修改变量的数值方法:用鼠标左键点击该行的变量数据栏,然后按F2 键出现文本输入栏后,输入修改的数据,确认正确后按回车键。
8.复位如果用户想重新开始运行用户程序,可以点击工具栏上的复位按钮,对仿真器的用户程序进行复位。
仿真器复位后,程序计数器PC 指针将复位成 0000H,另外,一些内部特殊功能寄存器在复位期间也将重新赋值,例如 A 将变为 00H, DPTR 变为 0000H, SP 变为 07H, I/O 口变为 0FFH,此时用户板上的 P1 口所接 LED 指示灯会全部熄灭。
9.设置断点将光标移至待设置断点的源程序行,如“MOV P1,#0B6H”行。
点击工具栏上的“断点”图标,可以看到源程序窗口中该行的左边出现了一个红色的断点标记。
(如果再点一下这个图标则清除这个断点)同样的方法,您可以设置多个断点。
10.带断点的全速运行按动F5 启动全速运行,全速执行程序,当程序执行到第一个断点时,会暂停下来,这时你可以观察程序中各变量的值及各端口的状态,如下图:第一个断点在mov p1,#06dh 之后,此时在储存器窗口Memory Windows”, 储存器1(Memory#1)的地址输入栏内输入“D:000h”,按回车键后,可以从内部可直接寻址地址数据为6D 和程序设计的相同!此时用户目标板上会显示当前断点的状态,继续按动F5 启动全速运行,程序执行到第二个断点时,会暂停下来,在变量观察窗口中,RAM的值应为B6;继续按动 F5 启动全速运行,程序又会执行到第一个断点处暂停,此时用户目标板上的灯又显示相应的状态。
断点是仿真器调试的重要手段,请您仔细反复的练习直到熟练。
⒒清除程序中所有断点如果想取消全部的断点全速运行时,要是逐个取消将是很烦琐的事,我们只要点击工具栏相应的图标,就可清除程序中所有断点。
⒓执行到光标处在体验“执行到光标处”之前,我们先点击工具栏上复位的图标,对仿真器的用户程序进行复位,把鼠标放在想要停止的行点一下,再按“执行到光标处”程序全速执行到光标所在行,这与我们在前面看到的带断点的全速运行相类似。
13.退出仿真先点击调试工具栏“暂停”按钮,再点击调试工具栏的“复位”复位,再点击开启/关闭调试模式按钮,则退出仿真状态,就又重新回到编辑模式。
(如果不能正确退出,请按一下仿真器上的复位按钮)此时可以对程序修改,然后重新编译,再按开启/关闭调试模式按钮,就又进入仿真模式了。
请注意!由于KEIL软件在仿真状态时和仿真器始终保持通信联系,为此退出仿真的时候最好按照以上顺序退出,不要强行退出,否则容易造成电脑死机。
到这里也就完成了keil软件的标准操作过程,由于KEIL操作过程较复杂,请您自行练习直到熟练!常见问题FAQ:为何仿真状态不能正确的联机?1 您可能没有正确的安装好USB 驱动,如果安装正常,系统的:控制面板\系统\硬件\设备管理器中看到以下端口信息,表示系统已经正确的安装了USB驱动。
如果没有显示下面的信息,请你重新安装USB驱动或者换一台电脑安装USB 驱动:有的时候如果您更换了USB 口也可能需要重新安装USB驱动。
2仿真需要keil uv2 7.0以及以上的版本软件,(有些早期版本的KEIL 不能兼容请谨慎)并且注意这个软件必须安装在c盘的根目录,不能安装在其他的目录!建立文件的时候,也不要保存在其他的目录,更不要使用中文的文件名和文件夹。
3串口的选择是否正确(如果是新系统没有安装其他usb设备一般是com3)?由于仿真/烧写都需要用到串口,为此:仿真操作时,必须关闭掉XLISP烧写软件,串口调试等可能用串口的软件。
4 仿真器是否已经复位?请按一下仿真器的复位键,注意短按一下,喇叭“滴”的响一下表示复位ok. 如果是长按3秒以上喇叭“滴滴”响两下,是脱机运行状态并不是复位,需要重新按复位。
您可能没有把keil的通信速度设置到115200。
所有的选项如果您没有把握,必须严格按照上面说明的严格进行。
5 检查一下晶体频率设置,至少您要选择一个晶体系统才能运行,如果对此有疑问请您改一个晶体频率。
6检查您的仿真头的方向插入是否正确?特别注意,仿真头的第一脚(红色)对应cpu的第一脚。
可以用万用表检查一下。
如果插入目标板反了,则系统可能会发热,灯变暗,请立即调换方向。
7您的目标板可能本身不正常,没有正确的时钟和复位(虽然这些不是仿真器所必需的)您可以用直接烧片的方式运行,如果运行正常,则表示目标板正常。
8被仿真的目标板需要另外供电吗?仿真头本身可以提供5v500MA的电源供给外部目标板使用,一般情况下已经足够51系统的使用,如果您感觉不够也可以在外部目标板另外供给5V电源并联运行,系统设计了完善的保护,不会导致损坏。
9为何有些端口没有动作?有可能是仿真头接触不良,最好是打开仿真器的外壳用万用表量一下并自行修复,相信对您不是难事。
10被仿真的目标板的时钟和复位还有效吗?在使用51TRACER仿真器的时候,目标板的时钟和复位都被仿真器接管,无论目标板是否有时钟和复位。