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调试高级用法

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设置及调试程序的方法

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实例教程(三)Kei调试窗口

Keil实例教程(三)Kei调试窗⼝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环境下51单片机定时器应用程序调试

图2 启动ISIS 7 Professional
图3 打开sim51.DSN文件
图4 选择运行的代码
点击打开对话框,选择运行的代 码。
图5 控制程序运行
:连续运行仿真。 :以一个动画帧为单位,单步运行仿真。 :在连续运行时0时刻暂停。
:停止仿真。
图6 用虚拟示波器观察产生的波形
按住黄色箭头拖动,调节扫描速率
定时器程序练习2
要求: ;fosc=6MHz,使用定时器T0产生100ms定时,在P1.0口输出频 率为5Hz的方波,在P1.1口输出频率为2Hz的方波(1/2秒信 号),在P1.2口输出频率为1Hz的方波(秒信号)。 ;参考课本P127页例1。
图1 创建HEX文件选项
调试步骤:
1、在keil中建立项目lianxi,输入源程序保存为lianxi.asm。 2、点击 ,选择“Output”标签,在“Creat HEX File”前打“√”, 如图1所示,再编译,将产生lianxi.hex文件。 3、启动单片机仿真程序“ISIS 7 Professional”,如图2所示。 4、打开 “sim51.DSN”文件,如图3所示。 5、双击U1(80C51),弹出对话框如图4所示,选择要运行的代 码lianxi.hex。 6、按照图5所示,控制程序运行。 7、用虚拟示波器观察产生的波形,如图6。
按照练习1介绍的方法,进行调试运行,观察结果。
keil环境下51单片机定时器应用程序调试单片机定时器单片机定时器程序单片机定时器初值计算单片机定时器中断52单片机定时器2单片机定时器实验单片机定时器延时程序单片机定时器中断程序单片机定时器工作原理
C6定时器应用程序调试
山东职业学院
定时器程序练习1
要求: ;使用定时器T0产生1ms定时,在P1.0口输出频率为 500Hz的方波。 ;参考课本P118页例1。
如何在Keil (RVMDK) 中观察程序的执行时间

如何在Keil (RVMDK) 中观察程序的执行时间
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
ARM公司收购了Keil公司之后,升级了Keil,使之与ARM相结合,即我们常知的RealView MDK。
RVMDK的操作与原来的Keil 的单片机版本基本相同。
关于如何在Keil 中观察程序的执行时间,方法有二种:
(一)等你进入调试状态时,在Project_Workspace下的“寄存器”标签页下有一个“Sec”,这个就是用来模拟记录程序运行的时刻的,如果你要查看一段程序运行了多长时间,可以笔记记录运行到程序开头的时刻,在记录运行到程序尾的时刻,两者相减,就能得到运行的时间了。
(二)运行调试状态下的“性能分析器”(菜单“调试”---“性能分析器”),同样能通过两个时刻的相减来得到程序运行时间。
注意:(1)必须在软件仿真的前提下,你才可以使用这两种方式;
(2)在仿真之前设置你时钟频率和你实际使用的时钟频率一样(其实在Keil的设置是来模拟实际运行的情况的),方法:右键“目标1”---“为目标1设置选项”----“项目”标签页,在下面的“时钟”里设置你所用的频率。
Keil调试命令(转载)
Keil调试命令(转载)Keil调试命令(转载)在Memory窗口上输入address_type:address才能看到正确地址的变量debug~perfermance analyzer加入要察看的模块名称,然后view~perfermance analyzerwindow 可以察看各个模块运行时间①Display address_type:addressB:Bit addressC:Code MemoryBx:Code BankD D:80H 命令可以查看特殊寄存器 dataD I:0 命令可以查看内部RAM数据iData;D X:0 命令可以查看外部RAM数据xData;②R1 //显示R1 register~R1 //显示变量R1R1 = R7 //对寄存器Rx操作R1 = --R7R1 = 0x20③main //显示main()的开始地址d main //显示main()的代码④向RAM.ROM中写数据Enter data_type address_type:address expr,expr....data_type:int char double float longE char data:0x20 1,2,3,4 //向data区0x20开始的地址写1,2,3,4变量放在RAM的30H,要把定义放在main前面!另外特别注意,内部RAM通常供C程序存放中间变量等,所以一定要看看编译后的程序中是否存在存储单元冲突的情况,比如如果程序中使用了别的寄存器组的话,08-1FH单元就不能用了unsigned long data i _at_ 0x30如何用Keil的uVision2仿真外部中断?方法一:调试状态下,打开PeriPherals->I/O PORTS->P3 用鼠标将相应的端口变高或低即可产生中断方法二:在命令窗口中输入DEFINE BUTTON "INTERUPT","P3=0XFE"然后打开TOOLBOX,即可以看见按钮INTERUPT,按下按钮即可Define Button "button_label","command"注意:Define Button "show R5 Register","printf(\"R5=%04xh\\n\")"kill button x //x为按钮在toolbox上位置方法三:用调试函数,可参考uv2\hlp\gs51.pdf第五和第六章信号函数写在一个ini文件中,调试主程序时用debug-Function Editor调入,会有一个框出现,可在里面修改,然后complie。
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单步调试
观察窗口
• 观察窗口中变量的值不仅可以观察,还可以修 改,以该程序为例,I须加10次才能到10,为 快速验证是否可以正确执行到P1_0=!P1_0行, 点击I后面的值,再按F2,该值即可修改,将 I的值改到9,再次按F10单步执行,即可以很 快执行到P1_0=!P1_0程序行。该窗口显示的 变量值可以以十进制或十六进制形式显示,方 法是在显示窗口点右键,在快捷菜单中选择如 图5所示。
• 进入调试状态后,界面与编缉状态相比有明显的变化, Debug菜单项中原来不能用的命令现在已可以使用了, 工具栏会多出一个用于运行和调试的工具条,如图1所 示,Debug菜单上的大部份命令可以在此找到对应的 快捷按钮,从左到右依次是复位、运行、暂停、单步、 过程单步、执行完当前子程序、运行到当前行、下一 状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、 代码作用范围分析、1#串行窗口、内存窗口、性能分 析、工具按钮等命令。
Keil-C51--精确延时--程序执行时间
Keil C51 精确延时程序执行时间引言单片机因具有体积小、功能强、成本低以及便于实现分布式控制而有非常广泛的应用领域[1]。
单片机开发者在编制各种应用程序时经常会遇到实现精确延时的问题,比如按键去抖、数据传输等操作都要在程序中插入一段或几段延时,时间从几十微秒到几秒。
有时还要求有很高的精度,如使用单总线芯片 DS18B20时,允许误差范围在十几微秒以内[2],否则,芯片无法工作。
用51汇编语言写程序时,这种问题很容易得到解决,而目前开发嵌入式系统软件的主流工具为C语言,用C51写延时程序时需要一些技巧[3]。
因此,在多年单片机开发经验的基础上,介绍几种实用的编制精确延时程序和计算程序执行时间的方法。
实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。
1 使用定时器/计数器实现精确延时单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。
第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。
本程序中假设使用频率为12 MHz的晶振。
最长的延时时间可达216=65 536 μs。
若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。
在实际应用中,定时常采用中断方式,如进行适当的循环可实现几秒甚至更长时间的延时。
使用定时器/计数器延时从程序的执行效率和稳定性两方面考虑都是最佳的方案。
但应该注意,C51编写的中断服务程序编译后会自动加上PUSH ACC、PUSH PSW、POP PSW和POP ACC语句,执行时占用了4个机器周期;如程序中还有计数值加1语句,则又会占用1个机器周期。
这些语句所消耗的时间在计算定时初值时要考虑进去,从初值中减去以达到最小误差的目的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Keil软件查看程序运行时间
Keil5软件调试运行时间,精确度很高,在进行调试前需进行相关设置,直接上图:
点击“Target options”设置,或者“project->Options for file”,进入设置界面如下图:
“Device”所用芯片为STM32F103VE
然后设置第二项“Target”如下图
芯片型号为Cortex-M3 的STM32F103VE,晶振选72MHz,然后设置“C/C++”:
注意程序文件路径。
接着是“Debug”选项:
使用的常用调试工具“J-link/j-trace cortex”, 注意“Utilities”选项与”Debug”一致为Jlink
返回“Debug”选项,点击“Settings”如下图:
必须选择“SW”模式,速率可选“500khz”,然后进入选项“Trace”如下:
芯片工作频率选择“72MHZ”,”SW0 Settings”的选项“Autodetect max SW0 C1”打勾选中,然后“Enable”选项打勾选中。
最后,选择相应FLASH,如下图:
点击“确定”,OK。
在调试过程查看时间:进入debug状态
查看左侧
时间单位为秒/s
查看两段时间间隔:
断点后延时300ms
当准确。