keil高级技巧
keil的使用和技巧

Keil 软件的使用随着单片机开发技术的不断发展,目前已有越来越多的人从普遍使用汇编语言到逐渐使用高级语言开发,其中主要是以C 语言为主,市场上几种常见的单片机均有其C 语言开发环境。
这里以最为流行的80C51单片机为例来学习单片机的C 语言编程技术。
大家都有C 语言基础,但是编单片机程序,大家还得找专门的书来学习一下。
这里我们只介绍Keil 这种工具软件的用法。
学习一种编程语言,最重要的是建立一个练习环境,边学边练才能学好。
Keil 软件是目最流行开发80C51系列单片机的软件,Keil 提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(µVision )将这些部份组合在一起。
下面我以一个实验举一个例子,一步一步学习Keil 软件的使用。
首先我们看硬件原理图:很明显,要点亮使发光二极管,必须使单片机的I/O 口P1.0输出低电平。
于是我们的任务就是编程序使P1.0输出地电平。
1. 使用Keil 前必须先安装。
安装过程简单,这里不在叙述。
2. 安装好了Keil 软件以后,我们打开它。
打开以后界面如下:3.我们先新建一个工程文件,点击“Project->New Project…”菜单,如下图,:3.选择工程文件要存放的路径,输入工程文件名LED, 最后单击保存.4.在弹出的对话框中选择CPU 厂商及型号5. 选择好Atmel 公司的AT89S52 后, 单击确定1.在接着出现的对话框中选择“是”。
5.新建一个C51 文件, 单击左上角的New File 如下图所示:6.保存新建的文件,单击SA VE如下图:2.在出现的对话框中输入保存文件名MAIN.C(注意后缀名必须为.C),再单击“保存”,如下图;7.保存好后把此文件加入到工程中方法如下: 用鼠标在Source Group1 上单击右键, 然后再单击Add Files to Group …Source Group 1'如下图:8.选择要加入的文件 , 找到 MAIN.C 后 , 单击 Add, 然后单击 Close9.在编辑框里输入如下代码 :10.到此我们完成了工程项目的建立以及文件加入工程 , 现在我们开始编译工程如下图所示 : 我们先单击编译, 如果在错误与警告处看到 0 Error(s) 表示编译通过;11.生成 .hex 烧写文件,先单击Options for Target,如图;12.在下图中,我们单击 Output, 选中 Create HEX F。
Keil 的调试命令、在线汇编与断点设置

Keil 的调试命令、在线汇编与断点设置上一讲中我们学习了如何建立工程、汇编、连接工程,并获得目标代码,但是做到这一步仅仅代表你的源程序没有语法错误,至于源程序中存在着的其它错误,必须通过调试才能发现并解决,事实上,除了极简单的程序以外,绝大部份的程序都要通过反复调试才能得到正确的结果,因此,调试是软件开发中重要的一个环节,这一讲将介绍常用的调试命令、利用在线汇编、各种设置断点进行程序调试的方法,并通过实例介绍这些方法的使用。
一、常用调试命令在对工程成功地进行汇编、连接以后,按Ctrl+F5 或者使用菜单Debug->Start/Stop Debug Session 即可进入调试状态,Keil 内建了一个仿真CPU 用来模拟执行程序,该仿真CPU 功能强大,可以在没有硬件和仿真机的情况下进行程序的调试,下面将要学的就是该模拟调试功能。
不过在学习之前必须明确,模拟毕竟只是模拟,与真实的硬件执行程序肯定还是有区别的,其中最明显的就是时序,软件模拟是不可能和真实的硬件具有相同的时序的,具体的表现就是程序执行的速度和各人使用的计算机有关,计算机性能越好,运行速度越快。
进入调试状态后,界面与编缉状态相比有明显的变化,Debug 菜单项中原来不能用的命令现在已可以使用了,工具栏会多出一个用于运行和调试的工具条,如图 1 所示,Debug 菜单上的大部份命令可以在此找到对应的快捷按钮,从左到右依次是复位、运行、暂停、单步、过程单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令。
? 图1 调试工具条学习程序调试,必须明确两个重要的概念,即单步执行与全速运行。
全速执行是指一行程序执行完以后紧接着执行下一行程序,中间不停止,这样程序执行的速度很快,并可以看到该段程序执行的总体效果,即最终结果正确还是错误,但如果程序有错,则难以确认错误出现在哪些程序行。
Keil教程

Creat by 辽宁科技大学电子协会matao技术交流QQ1585641394大家好,本教程主要为大家讲解Keil的安装以及以及破解和使用,通过本教程可以快速的掌握Keil的使用先解压压缩包,解压后的效果如下图双击C51这个文件,进行C51版Keil的安装,MDK420是对ARM的编译点击下一步勾选同意选项>然后点下一步填选信息:这个可以按个人爱好,随意填写然后下一步选择安装路径,我的默认的是D盘,软件尽量不要装在C盘,会降低系统的运行速度然后一路下一步,等待安装完成安装完毕后,会在桌面上看到这个快捷方式到此Keil的安装部分就交接完毕,有点Windows操作经验的就会安装,非常简单。
下面为大家讲解,如何破解和使用:双击快捷方式启动Keil启动后的界面如图所示第一次使用Keil时需要破解,否则在编译某些文件时会受限制,点击File 选择密钥管理将CID号码复制到,破解软件里(PS:破解软件有可能被杀毒软件误报为病毒,不要害怕,而且软件启动时会有声音发出,不要恐慌,这不是病毒,呵呵)点击Generate破解软件会生成序列号,将序列号复制到Keil中点击Add LIC后提示破解成功到此Keil破解完毕,使用期限到2020年,足够了。
下面为大家讲解如何使用点击Project 然后点击NEW Project新建一个工程并保存为TEST保存后会出现选择CPU的对话框,我们选择Atmel公司的AT89C52单片机点击OK 提示是否复制启动代码,选择是到此工程建立完毕,但是工程里还没有文件,工程也没有配置点击新建文件如果是C语言的程序保存为拓展名为.C的文件,如果是汇编语言的程序就保存为.ASM的文件然后我们对工程进行配置,右键Target选择Option选择Output选项卡,勾选Creat HEX File勾选这个选项可以生成HEX文件,也就是我们将要下载到单片机中的文件。
点击OK。
然后点击Target前面的那个+号,会出现一个Source Group的文件夹,右击这个文件夹,会出现下面的界面,点击ADD File这个选项点击ADD将刚才新建的TEST.c文件添加到这个工程中,下面就可以编写主程序了下面为大家讲解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实例教程(三)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 C51程序设计中几种精确延时方法

Keil C51程序设计中几种精确延时方法摘要实际的单片机应用系统开发过程中,由于程序功能的需要,经常编写各种延时程序,延时时间从数微秒到数秒不等,对于许多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个机器周期)。
在实际应用中,定时常采用中断方式,如进行适当的循环可实现几秒甚至更长时间的延时。
keil使用技巧

keil使用技巧Keil是一种广泛应用于嵌入式系统开发的集成开发环境(IDE),它具有强大的功能和易于使用的界面。
本文将介绍一些使用Keil的技巧,帮助开发人员更高效地进行嵌入式系统的开发。
一、项目管理在Keil中,一个项目通常由多个源文件组成。
为了更好地管理项目,可以使用文件夹来组织源文件。
在Keil的工程窗口中,右键单击项目名称,选择“添加文件夹”,然后将相关的源文件拖放到文件夹中。
这样可以使项目结构更加清晰,方便管理和维护。
二、代码编辑Keil提供了强大的代码编辑功能,可以大大提高开发效率。
其中一些常用的技巧包括:1. 快捷键:Keil中有很多快捷键可以加快代码编写的速度,如Ctrl+C和Ctrl+V用于复制和粘贴代码,Ctrl+Z用于撤销操作等。
熟练掌握这些快捷键可以节省大量时间。
2. 自动完成:Keil支持自动完成代码,只需输入部分代码,然后按下Tab键即可自动补全。
这可以减少输入错误,提高代码的准确性。
3. 代码折叠:Keil可以折叠代码,只显示关键部分,隐藏其他部分。
这对于阅读和编辑大型代码文件非常有用,可以提高代码的可读性。
4. 代码提示:Keil可以根据已有的代码提示可能的选项,帮助开发人员快速选择正确的代码。
这对于初学者尤其有用,可以减少语法错误。
三、调试和仿真Keil提供了强大的调试和仿真功能,可以帮助开发人员快速发现和修复错误。
以下是一些常用的技巧:1. 断点:在调试过程中,可以在代码中设置断点,以暂停程序的执行。
这样可以逐步调试代码,找出错误所在。
2. 监视窗口:Keil的监视窗口可以显示变量的值,以帮助开发人员了解程序的状态。
可以在调试过程中监视变量的值,并对其进行修改。
3. 寄存器窗口:Keil的寄存器窗口可以显示处理器的寄存器的值。
可以在调试过程中查看和修改寄存器的值,以优化程序的性能。
4. 仿真器配置:Keil支持多种仿真器,可以根据需要选择合适的仿真器。
在调试之前,需要正确配置仿真器,以确保能够正常进行调试。
Keil-C51详细设置

Keil C51详细设置一.target名更改打开Keil后,左侧Project Workspace中的target可改,方法:右击Target——Manage Compnents——双击待修改项即可,若要添加,使用对话框内对应工具栏。
二.option for target 设置之TARGET项1 MEMARY MODELSmall:变量存储在内部ram里.Compact:变量存储在外部ram里,使用页8位间接寻址Large:变量存储在外部Ram里,使用16位间接寻址.我们一般使用Small来存储变量,就是说单片机优先把变量存储在内部ram里,如果内部ram 不够了,才会存到外部去.Compact的方式要自己通过程序来指定页的高位地址,编程比较复杂,如果外部ram很少,只有256个字节,那么对该256个字节的读取就比较快,用MOVX @Ri,A 或MOVX A,@Ri指令.如果超过256字节,那么要不断地进行切换的话,就比较麻烦.Compact模式适用于比较少的外部ram的情况.Large模式,是指变量会优先分配到外部ram里,用MOVX A,@DPTR或MOVX @DPTR,A来读取.要注意的是,3种存储方式都支持内部256字节和外部64k字节的ram.区别是变量的优先(或默认)存储在哪里的区别.除非你不想把变量存储在内部ram,才使用后面的Compact,Large模式.因为变量存储在内部ram里,运算速度比存储在外部ram要快的多,大部分的应用都是选择Small的模式.使用Small的方式:也不是说变量就不可以存储在外部,一样可以存储在外部,只是你要指定,比如:unsigned char xdata a;那么变量a就存储在外部的ram.unsigned char a;变量存储在内部ram.假如用Large的模式:unsigned char xdata a;那么变量a就存储在外部的ram.unsigned char a;变量存储在外部ram.这就是区别,就是说这几个选项只是影响没有特别指定变量的存储空间的时候,默认存储在哪里,比如上面的变量定义unsigned char a .2. CODE ROM SIZESmall: program 2K or less ;适用于89c2051这些芯片,2051只有2k的代码空间,所以跳转地址只有2k,编译的时候会使用ACALL AJMP这些短跳转指令,而不会使用LCALL,LJMP指令.如果你的代码跳转超过2k,那么会出错.Compact:2k functiongs ,64k program:表示每个子函数的程序大小不超过2k,整个工程可以有64k的代码.就是说在main()里可以使用LCALL, LJMP指令,但在子程序里只会使用ACALL,AJMP 指令.除非你确认你的每个子程序不会超过2k,否则不要用Compact方式.Large:64K program:表示程序或子函数都可以大到64k.使用code bank还可以更大.通常我们都选用该方式.Code Rom Size选择Large方式速度不会比Small慢很多,所以一般没有必要选择Compact和Small的方式.我们这里选择Large方式.3. OPERATINGNONE:不适用操作系统RTX51-TINY:使用TINY操作系统RTX-FULL:使用FULL操作系统Keil C51 提供了Tiny多任务操作系统,使用定时器0来做任务切换,效率很低,无实用价值。
单片机Keil软件仿真与调试技巧

图5程序调试运行 调试程序时的程序运行控制按钮从左到右依次 为复位、连续运行,暂停、单步、过程单步、执行 完当前子程序、运行到光标当前行。复位按钮模拟 芯片的复位,它将使程序回到最开头处执行。当程 序处于停止状态时复位才有效,程序处于运行状态 时停止按钮才有效。 ①为了方便观察程序调试过程中各变量和
琵稳焉击——————————]Ⅲ阴
单片机Keil软件仿真与调试技巧
一、引言
弹出图1窗口.自动进入编辑工作模式。
单片机软件开发过程中,软件调试遇到的各种 问题常令初学者感到不知所措。实际上.各种仿真 开发软件的程序调试基本方法和技巧大同小异,掌 握正确的程序调试基本技巧。对于排查这些程序错 误问题可以起到举一反三、事半功倍的效果。软件 调试是单片机技术人员必须掌握的重要基本技能。 下面以单片机常用开发软件Keil为例,通过一个项 目任务实例来介绍单片机软件仿真与调试的方法。
二、Keil仿真与调试
点击运行软件Keil uVision2。其调试操作步骤 大体可以分为5步:
1.创建工程 在项目开发中,并不是仅有一个用户源程序就 够了,还要为这个项目选择CPU型号、设置编译和 调试参数.有一些项目还会有多个文件组成。因此 将这些参数设置和所需要的所有文件统称为一个工 程,存放于专门的工程文件夹下。这里先建立一个 工程文件夹如F:kexam。 ①创建新工程。鼠标左键单击主菜单Project一 >New Project。弹出。Create New Project”对话框, 用鼠标选择你要保存工程的文件夹(如FAexam), 输入新工程名(如。exam”).单击。保存”按键。 ②在随后弹出的CPU型号设置对话框中选择 单片机的型号(如。AT89C51”),单击“确定”完 成。
电孑舅作 51
Keil 的辅助工具和部份高级技巧

Keil 的辅助工具和部份高级技巧在前面的几讲中我们介绍了工程的建立方法,常用的调试方法,除此之外,Keil 还提供了一些辅助工具如外围接口、性能分析、变量来源分析、代码作用分析等,帮助我们了解程的性能、查找程序中的隐藏错误,快速查看程序变量名信息等,这一讲中将对这些功工具作一介绍,另外还将介绍Keil 的部份高级调试技巧。
一、辅助工具这部份功能并不是直接用来进行程序调试的,但可以帮助我们进行程序的调试、程序性能的分析,同样是一些很有用的工具。
1、外围接口为了能够比较直观地了解单片机中定时器、中断、并行端口、串行端口等常用外设的使用情况,Keil 提供了一些外围接口对话框,通过Peripherals 菜单选择,该菜单的下拉菜单内容与你建立项目时所选的CPU 有关,如果是选择的89C51 这一类“标准”的5 1 机,那么将会有Interrupt(中断)、I/O Ports(并行I/O 口)、Serial(串行口)、Timer(定时/计数器)这四个外围设图 1 外围设备之并行端口备菜单。
打开这些对话框,列出了外围设备的当前使用情况,各标志位的情况等,可以在这些对话框中直观地观察和更改各外围设备的运行情况。
下面我们通过一个简单例子看一看并行端口的外围设备对话框的使用。
例4:MOV A,#0FEHLOOP: MOV P1,ARL ACALL DELAY ;延时100 毫秒JMP LOOP其中延时100 毫秒的子程序请自行编写。
编译、连接进入调试后,点击Peripherals->I/O-Ports->Port 1 打开,如图1 所示,全速运行,可以看到代表各位的勾在不断变化(如果看不到变化,请点击View->Periodic Window Updata),这样可以形象地看出程序执行的结果。
注:如果你看到的变化极快,甚至看不太清楚,那么说明你的计算机性能好,模拟执行的速度快,你可以试着将加长延时程序的时间以放慢速度。
keil_μVision4使用详解教程

KeilμVision4使用详解zxmh6前言单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为 CPU 可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。
机器汇编是通过汇编软件将源程序变为机器码,用于 MCS-51 单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持 Keil 即可看出。
Keil 提供了包括 C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。
运行 Keil 软件需要 Pentium 或以上的 CPU, 16MB或更多 RAM、 20M 以上空闲的硬盘空间、 WIN98、 NT、 WIN2000、 WINXP 等操作系统。
掌握这一软件的使用对于使用 51 系列单片机的爱好者来说是十分必要的,如果你使用 C 语言编程,那么 Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用 C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
我们将通过一些实例来学习 Keil软件的使用,在这一部份我们将学习如何输入源程序,建立工程、对工程进行详细的设置,以及如何将源程序变为目标代码。
图 1 所示电路图使用AT89C51 单片机作为主芯片,这种单片机性属于 MCS-51 系列,其内部有 4K的 FLASH ROM,可以反复擦写,非常适于做实验。
AT89C51的P1引脚上接8个发光二极管,P3.2~P3.4 引脚上接 4 个按钮开关,我们的第一个任务是让接在 P1 引脚上的发光二极管依次循环点亮。
keil使用技巧

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软件仿真调试

51TRACER 仿真调试高级技巧进入调试状态后,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仿真的串口仿真的调试技巧

引言在单片机系统中,串口(UART,通用异步收发接口)是一个非常重要的组成部分。
通常使用单片机串口通过RS232/RS485电平转换芯片与上位机连接,以进行上位机与下位机的数据交换、参数设置、组成网络以及各种外部设备的连接等。
RS232/RS485串行接口总线具有成本低、简单可靠、容易使用等特点,加上其历史悠久,所以目前应用仍然非常广泛;特别对于数据量不是很大的场合,串口通信仍然是很好的选择,有着广阔的使用前景。
在单片机编程中,串口占了很重要的地位。
传统方式串口程序的调试,往往是利用专用的单片机硬件仿真器。
在编写好程序后,利用仿真器来设置断点,观察变量和程序的流程,逐步对程序进行调试,修正错误。
使用硬件仿真器的确是很有效的方法,但是也有一些缺点:◆很多仿真器不能做到完全硬件仿真,因而会造成仿真时正常,而实际运行时出现错误的情况;也有仿真不能通过,但是实际运行正常的情况。
◆对于一些较新的芯片或者是表面贴装的芯片,要么没有合适的仿真器或仿真头;要么就是硬件仿真器非常昂贵,且不容易买到。
◆有时由于设备内部结构空间的限制,仿真头不方便接入。
◆有的仿真器属于简单的在线仿真型,仿真时有很多限制。
例如速度不高,实时性或稳定性不好,对断点有限制等,造成仿真起来不太方便。
1 调试前的准备工作下面介绍一种利用Keil的软件仿真功能来实现51单片机串口调试用户程序的方法。
使用这种方法,无需任何硬件仿真器,甚至都不需要用户电路板。
所需的只是:①硬件。
1台普通计算机(需要带有2个标准串口)和1根串口线(两头都是母头,连线关系如图1所示)。
②串口软件可以是自己编写的专用调试或上下位机通信软件,也可以是通用的串口软件(如串口助手、串口调试等),主要用来收发数据。
如果没有合适的串口调试软件,则可使用笔者编写的一个免费的串口小工具TurboCom。
除了与其他软件一样的数据收发功能外,它还有定时轮流发送自定义数据帧和自动应答(接收到指定数据帧后,自动返回相应的数据帧)这两个很有用的功能,特别适合于老化测试。
MDK Keil 5软件小技巧

几乎所有玩ARM Cortex M单片机的坛友都是通过MDK Keil 5或者IAR环境进行单片机的程序开发的,俗话说工欲善其事必先利其器,我们天天都在用这个开发环境,那么,有些在MDK Keil 5中的实用功能小技巧,大家又知道多少呢?1.并不是所有源文件(.c)都需要加进工程中,只需要添加必要的源文件即可。
无论是什么开发环境,只要是C/C++的工程,工程编译时间的决定因素就是工程中的源文件,以STM32 HAL库的工程为例,单片机外设的驱动文件一般是【stm32fxxx_hal_xxx.c】的格式,里面有多少个这样的源文件,就代表这个工程启用了多少个STM32单片机的外设。
我们可以做个对比:我们使用STM32CubeMX生成一个工程,工程用到了外部高频、低频晶振、SPI1、USART1,CubeMX 自动生成的工程里面,源文件只有必要的十来个:然后我们把一些不必要用到的源文件也加进去,我这里索性把CubeF1固件库里面的全部外设驱动都加进去了,甚至包括一些完全没有必要加进去的template.c模版:可以看到,生成的Code大小差得非常远,我这里还是用ARMCCV6版本的编译器,还看不出前后两个工程的编译时间,如果是用ARMCCV5版本的,估计时间要差好几倍。
实际上前后两个工程,实现的效果完全是一样的,那些原本没有必要加进去的源文件,除了浪费编译空间和编译时间以外,没有任何用处。
2.头文件(.h)可以随便加进工程中。
在MDK的代码开发工程中,头文件是必不可少的。
头文件在工程的作用是提供宏定义/常量、结构体声明、枚举量声明统一放置的地方、函数的声明(甚至可以直接把函数的实现写在头文件里面,没有任何问题)。
在实际的开发过程中,经常要频繁修改宏定义,而传统MDK开发者的习惯一般是工程只添加源文件而不添加头文件,这样就使得修改宏定义变得非常麻烦了,我们应该摒弃这个习惯,把频繁使用的头文件加进工程中。
keil v5 if 的用法

一、Keil v5的介绍Keil v5是一款由Arm公司开发的集成开发环境(IDE),主要用于嵌入式系统的软件开发。
它提供了一套完整的工具链,包括编译器、调试器、仿真器等,能够满足嵌入式系统开发中的各种需求。
在Keil v5中,if语句是一种常用的控制流程语句,可以用于根据条件来执行不同的代码段。
二、if语句的基本语法在Keil v5中,if语句的基本语法如下所示:```if (condition){// 如果条件成立,则执行这里的代码}else{// 如果条件不成立,则执行这里的代码}```在这个语法中,condition是一个逻辑表达式,可以是比较表达式、逻辑表达式或者其他可以返回true或false值的表达式。
当condition 的值为true时,if语句块中的代码会被执行;当condition的值为false时,else语句块中的代码会被执行。
三、if语句的应用举例为了更好地理解if语句的应用,我们可以举一个简单的例子。
假设我们要编写一个控制LED灯的程序,当按钮按下时,LED灯就会点亮。
在Keil v5中,我们可以这样编写这个程序:```int button = 1; // 假设1代表按钮按下int LED = 0; // 假设0代表LED灯关闭if (button == 1){LED = 1; // 按下按钮,LED灯点亮}else{LED = 0; // 按钮未按下,LED灯关闭}```在这个例子中,我们首先定义了button和LED两个变量,分别表示按钮的状态和LED灯的状态。
然后通过if语句来判断按钮是否按下,如果按钮按下,则将LED的状态设置为点亮;如果按钮未按下,则将LED的状态设置为关闭。
四、if-else if-else语句的扩展除了基本的if-else语句外,在Keil v5中还支持if-else if-else语句,用于处理多个条件的情况。
这种语句的基本语法如下所示:```if (condition1){// 如果条件1成立,则执行这里的代码}else if (condition2){// 如果条件2成立,则执行这里的代码}else{// 如果条件1和条件2都不成立,则执行这里的代码}```通过if-else if-else语句,我们可以根据不同的条件来执行不同的代码段,从而实现更加灵活的控制流程。
Keil教程1-2-3-4

Keil教程(1)Keil工程文件的建立、设置与目标文件的获得单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。
机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51 单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil 软件是目前最流行开发MCS-51 系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil 即可看出。
Keil 提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。
运行Keil 软件需要Pentium 或以上的CPU,16MB 或更多RAM、20M 以上空闲的硬盘空间、WIN98、N T、WIN2000、WINXP 等操作系统。
掌握这一软件的使用对于使用51 系列单片机的爱好者来说是十分必要的,如果你使用C 语言编程,那么Keil 几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
我们将通过一些实例来学习Keil 软件的使用,在这一部份我们将学习如何输入源程序,建立工程、对工程进行详细的设置,以及如何将源程序变为目标代码。
图1 所示电路图使用89C51 单片机作为主芯片,这种单片机性属于MCS-51 系列,其内部有4K 的FLASH ROM,可以反复擦写,非常适于做实验。
89C51 的P1 引脚上接8 个发光二极管,P3.2~ P3.4 引脚上接4 个按钮开关,我们的第一个任务是让接在P1 引脚上的发光二极管依次循环点亮。
一、Keil工程的建立首先启动Keil 软件的集成开发环境,这里假设读者已正确安装了该软件,可以从桌面上直接双击uVision 的图标以启动该软件。
如何使用串口调试助手Keil软件仿真的串口调试技巧

在单片机系统中,串口(UART,通用异步收发接口)是一个非常重要的构成部分。
凡是使用单片机串口通过RS232/ RS485电平转换芯片与上位机毗连,以进行上位机与下位机的数值互换、参量设置、构成收集以及各种外部设备的毗连等。
RS232/ RS485串行接口总线具备成本低、简略可靠、容易使用等特点,加上其历史悠久,所以目前应用仍然非常广泛;特别对于数值量不是很大的场所,串口通信仍然是很好的选择,有着广阔的使用远景。
在单片机编程中,串口占了很重要的地位。
传统方式串口程序的调试,往往是哄骗专用的单片机硬件仿真器。
在编写好程序后,哄骗仿真器来设置断点,观察变量和程序的流程,逐步对程序进行调试,批改错误。
使用硬件仿真器的确是很有效的方法,但是也有一些缺点:很多仿真器不克不及做到完全硬件仿真,因而会造成仿真时正常,而实际运行时呈现错误的环境;也有仿真不克不及通过,但是实际运行正常的环境。
对于一些较新的芯片或者是外貌贴装的芯片,要么没有合适的仿真器或仿真头;要么就是硬件仿真器非常昂贵,且不易买到。
有时候由于设备内部结构空间的限制,仿真头不利便接入。
有的仿真器属于简略的在线仿真型,仿真时有很多限制。
例如速度不高,及时性或不改变性别不好,对断点有限制等,造成仿真起来不太利便。
1 调试前的准备工作底下先容一种哄骗Keil的软件仿真功能来实现51单片机串口调试用户程序的方法。
使用这种方法,无需任何硬件仿真器,甚至都不需要用户电路板。
所需的只是:①硬件。
1台普通计算机(需要带有2个标准串口)和1根串口线(两头都是母头,连线瓜葛如图1所示)。
②串口软件可所以自己编写的专用调试或上下位机通信软件,也可所以通用的串口软件( 如串口助手、串口调试等) ,首要用来收发数值。
如果没有合适的串口调试软件,则可使用作者编写的一个免费的串口小工具TurboCom。
除了与其它软件一样的数值收发功能外,它还有定时轮流发送自界说数值帧和自动应答(接收到指定命据帧后,自动返回相应的数值帧)这两个很有用的功能,特别适合于老化测试。
KEIL软仿真技巧谈

废话少说,接上一章,话说建立了仿真环境后,我们就可以实现软件仿真了。
在仿真状态下View菜单有一堆东西:头4个BAR都是普通的工具栏了。
这里说一下Debug ToolBar,就是调试工具栏:单片机复位全速运行运行中STOP单步运行,可以进入函数内运行单步运行,可以跳过函数如果运行进某个函数,此键能直接跳出当前函数运行到你的光标处找回你的PC指针:当你的程序有好几个文件的时候,有时候你会不知道运行到哪里去了,按这个你就可以找会你的PC指针所在处了。
仿真记录,相信很少人用到,其实这个东西可以记录下你的仿真过程,然后回放。
从回放的“录象”中你可以观察每条指令的状态,例如对应的运行时间,各个寄存器的值。
个人觉得这个功能在调试OS的时候特有用:)ASM代码和C代码之间的转换,这个也是NB的调试利器,一般隐藏的BUG在ASM下无所遁形。
WATCH窗口,如果你不知道什么叫watch窗口,那证明你以前一定没写过程序。
挺逗的功能,可以看到每个函数有多少条指令,和你已经运行了某个函数的百分之多少代码。
我从来不用这个东西的,呵呵串口显示窗,如果你的程序有串口程序,那么单片机串口的输出就显示在这个窗上,如果你要对单片机串口输入数据,就在串口窗上打字就是了。
Memory Window,存储器观察窗,这里可以看code,data,xdata对应的数据各函数占用时间的比例,个人感觉用处不大,在全速运行的时候会动态显示,用来调试UC/OS的时候可以看到各个任务占用的时间比。
不过你需要先把你要观察的函数添加到表上才可以用。
这个东东一般没用。
好了,上面一堆东西,还是具体说说比较复杂的吧,其它东西你用过就自然会的了。
1。
仿真记录,这个在软件仿真的时候有,至于硬件仿真就看你仿真器是否支持咯。
当你需要记录的时候,就按,运行一段时间了,就按,那么刚才运行过的整段程序就会重现你眼前:你可以选择当前灰色区域的所有指令,窗口都会显示那条指令对应的寄存器值等信息。
keil高级技巧

51TRACER 仿真调试高级技巧进入调试状态后,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 的值)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51TRACER 仿真调试高级技巧进入调试状态后,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仿真器的时候,目标板的时钟和复位都被仿真器接管,无论目标板是否有时钟和复位。