KeiluVision入门程序调试入门.docx

上传人:b****1 文档编号:14307181 上传时间:2023-06-22 格式:DOCX 页数:42 大小:516.72KB
下载 相关 举报
KeiluVision入门程序调试入门.docx_第1页
第1页 / 共42页
KeiluVision入门程序调试入门.docx_第2页
第2页 / 共42页
KeiluVision入门程序调试入门.docx_第3页
第3页 / 共42页
KeiluVision入门程序调试入门.docx_第4页
第4页 / 共42页
KeiluVision入门程序调试入门.docx_第5页
第5页 / 共42页
KeiluVision入门程序调试入门.docx_第6页
第6页 / 共42页
KeiluVision入门程序调试入门.docx_第7页
第7页 / 共42页
KeiluVision入门程序调试入门.docx_第8页
第8页 / 共42页
KeiluVision入门程序调试入门.docx_第9页
第9页 / 共42页
KeiluVision入门程序调试入门.docx_第10页
第10页 / 共42页
KeiluVision入门程序调试入门.docx_第11页
第11页 / 共42页
KeiluVision入门程序调试入门.docx_第12页
第12页 / 共42页
KeiluVision入门程序调试入门.docx_第13页
第13页 / 共42页
KeiluVision入门程序调试入门.docx_第14页
第14页 / 共42页
KeiluVision入门程序调试入门.docx_第15页
第15页 / 共42页
KeiluVision入门程序调试入门.docx_第16页
第16页 / 共42页
KeiluVision入门程序调试入门.docx_第17页
第17页 / 共42页
KeiluVision入门程序调试入门.docx_第18页
第18页 / 共42页
KeiluVision入门程序调试入门.docx_第19页
第19页 / 共42页
KeiluVision入门程序调试入门.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

KeiluVision入门程序调试入门.docx

《KeiluVision入门程序调试入门.docx》由会员分享,可在线阅读,更多相关《KeiluVision入门程序调试入门.docx(42页珍藏版)》请在冰点文库上搜索。

KeiluVision入门程序调试入门.docx

KeiluVision入门程序调试入门

KeiluVision入门2--程序调试入门

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

 

keil教程

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

KEILC51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品,其效率已经达到了相当搞的程度.C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:

编译器,汇编器,实时操作系统,项目管理器,调试器。

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

 

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

下面介绍KeilC51软件的使用方法,这应该算一个入门教程,奉献给大家,本人建议结合HZ—C51豪智单片机学习板实现边学边用

进入KeilC51后,屏幕如下图所示。

几秒钟后出现编辑界

启动KeilC51时的屏幕

进入KeilC51后的编辑界面

 简单程序的调试 学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。

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

 1)建立一个新工程 单击Project菜单,在弹出的下拉菜单中选中NewProject选项

 

 2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51如下图所示,然后点击保存.

 3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keilc51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定。

 4)完成上一步骤后,屏幕如下图所示

 到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。

 5)在下图中,单击“File"菜单,再在下拉菜单中单击“New”选项

  

 新建文件后屏幕如下图所示

 

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

注意,如果用C语言编写程序,则扩展名为(。

c);如果用汇编语言编写程序,则扩展名必须为(.asm).然后,单击“保存”按钮。

 6)回到编辑界面后,单击“Target1”前面的“+”号,然后在“SourceGroup1"上单击右键,弹出如下菜单

 然后单击“AddFiletoGroup‘SourceGroup1’"屏幕如下图所示

 选中Test。

c,然后单击“Add ”屏幕好下图所示

 

注意到“SourceGroup1”文件夹中多了一个子项“Text1.c”了吗?

子项的多少与所增加的源程序的多少相同

 7)现在,请输入如下的C语言源程序:

 #include〈reg52。

h〉         //包含文件 #include〈stdio。

h> voidmain(void)          //主函数 {      SCON=0x52;  TMOD=0x20;  TH1=0xf3;  TR1=1;              //此行及以上3行为PRINTF函数所必须  printf(“HelloIamKEIL.\n”);  //打印程序执行的信息 

 printf(“Iwillbeyourfriend.\n”);

 while

(1); 

 在输入上述程序时,读者已经看到了事先保存待编辑的文件的好处了吧,即Keilc51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。

程序输入完毕后,如下图所示

 8)在上图中,单击“Project”菜单,再在下拉菜单中单击“BuiltTarget”选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/StopDebugSession”(或者使用快捷键Ctrl+F5),屏幕如下所示

 9)调试程序:

在上图中,单击“Debug”菜单,在下拉菜单中单击“Go”选项,(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中单击“StopRunning”选项(或者使用快捷键Esc);再单击“View"菜单,再在下拉菜单中单击“SerialWindows#1”选项,就可以看到程序运行后的结果,其结果如下图所示

至此,我们在KeilC51上做了一个完整工程的全过程。

但这只是纯软件的开发过程,如何使用程序下载器看一看程序运行的结果呢?

10)单击“Project"菜单,再在下拉菜单中单击“

”在下图中,单击“Output”中单击“CreateHEXFile”选项,使程序编译后产生HEX代码,供下载器软件使用.把程序下载到AT89S51单片机中。

这还只是一个简单的列子,以后我还会向大家共享keil的学习资料

 

Keil教程

(1)

Keil 工程文件的建立、设置与目标文件的获得

单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为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所示电路图使用

89C51单片机作为主芯片,这种单片机性属于MCS—51系列,其内部有4K的FLASHROM,可以反复擦写,非常适于做实验。

89C51的P1引脚上接8个发光二极管,P3。

2~P3。

4引脚上接4个按钮开关,我们的第一个任务是让接在P1引脚上的发光二极管依次循环点亮。

一、Keil工程的建立

首先启动Keil 软件的集成开发环境,这里假设读者已正确安装了该软件,可以从桌面上直接双击uVision的图标以启动该软件。

UVison启动后,程序窗口的左边有一个工程管理窗口,该窗口有3个标签,分别是Files、Regs、和Books,这三个标签页分别显示当前项目的文件结构、CPU的寄存器及部份特殊功能寄存器的值(调试时才出现)和所选CPU的附加说明文件,如果是第一次启动Keil,那么这三个标签页全是空的.

1、源文件的建立

?

使用菜单“File—>New"或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编缉窗口,在该窗口中输入以下汇编语言源程序,例1:

MOV     A,#0FEHMAIN:

   MOV   P1,A

RL         ALCALL    DELAYAJMP    MAIN

DELAY:

  MOV    R7,#255

D1:

        MOV     R6,#255

DJNZ                R6,$                                                                                                                                   图1   简单的键盘、显示板

 

END

DJNZ     R7,D1

RET

 

保存该文件,注意必须加上扩展名(汇编语言源程序一般用asm或a51 为扩展名),这里假定将文件保存为exam1。

asm。

需要说明的是,源文件就是一般的文本文件,不一定使用Keil软件编写,可以使用任意文本编缉器编写,而且,Keil的编缉器对汉字的支持不好,建议使用UltraEdit 之类的编缉软件进行源程序的输入。

2、建立工程文件

在项目开发中,并不是仅有一个源程序就行了,还要为这个项目选择CPU(Keil支持数百种CPU,而这些CPU的特性并不完全相同),确定编译、汇编、连接的参数,指定调试的方式,有一些项目还会有多个文件组成等,为管理和使用方便,Keil使用工程(Project)这一概念,将这些参数设置和所需的所有文件都加在一个工程中,只能对工程而不能对单一的源程序进行编译(汇编)和连接等操作,下面我们就一步一步地来建立工程。

?

点击“Project—〉New Project…”菜单,出现一个对话框,要求给将要建立的工程起一个名字,你可以在编缉框中输入一个名字

(设为exam1),不需要扩展名。

点击“保存”按钮,出现第二个对话框,如图2

所示,这个对话框要求选择目标CPU(即你所用芯片的型号),Keil 支持的CPU很多,我们选择Atmel公司的89C51芯片.点击ATMEL前面的“+”号,展开

该层,点击其中的89C51,然后再点击

“确定”按钮,回到主界面,此时,在工程窗口的文件页中,出现了“Target

1”,前面有“+”号,点击“+"号展开,

可以看到下一层的“SourceGroup1”,这时的工程还是一个空的工程,里面什么

文件也没有,需要手动把刚才编写好的

 

源程序加入,点击“SourceGroup1”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单,如图3所示.选中其中的“AddfiletoGroup”SourceGroup1”,出现一个对话框,要求寻找源文件,注意,该对话框下面的“文件类型”默认为Csourcefile(*.c),也就是以C为扩展名的文件,而我们的文件是以asm 为扩展名的,所以在列表框中找不到exam1.asm,要将文件类型改掉,点击对话框中“文件类型”后的下拉列表,找到并选中“AsmSourceFile(*.a51,*。

asm),这样,在列表框中就可以找到exam1.asm 文件了.

双击exam1.asm文件,将文件加入项目,注

图2 选择目标CPU

图3 加入文件

意,在文件加入项目后,该对话框并不消

失,等待继续加入其它文件,但初学时常会误认为操作没有成功而再次双击同一文件,这时会出现如图4所示的对话框,提示你所选文件已在列表中,此时应点击“确定”,返回前一对话框,然后点击“Close"即可返回主界面,返回后,点击“SourceGroup1"前的加号,会发现exam1。

asm文件已在其中。

双击文件名,即打开该源程序。

二、工程的详细设置

图4 重复加入文件的错误

工程建立好以后,还要对工程进行进一步的设置,以满足要求。

首先点击左边Project窗口的Target1,然后使用菜单“Project-〉Optionfortarget‘target1'"即出现对工程设置的对话框,这个对话框可谓非常复杂,共有8个页面,要全部搞清可不容易,好在绝大部份设置项取默认值就行了。

设置对话框中的Target页面,如

图5所示,Xtal后面的数值是晶振频率值,默认值是所选目标CPU的最高可用频率值,对于我们所选的  AT89C51而言是24M,该数值与最终

产生的目标代码无关,仅用于软件模

拟调试时显示程序执行时间。

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

图5 对目标进行设置

所用晶振频率相同,如果没必要了解程序执行的时间,也可以不设,这里设置为12.

Memory Model用于设置RAM使用情况,有三个选择项,Small 是所有变量都在单片机的内部RAM中;Compact是可以使用一页外部扩展RAM,而Larget 则是可以使用全部外部的扩展RAM。

CodeModel用于设置ROM空间的使用,同样也有三个选择项,即Small模式,只用低于2K的程序空间;Compact模式,单个函数的代码量不能超过2K,整个程序可以使用64K程序空间;Larget模式,可用全部64K空间.Useon-chipROM选择项,确认

是否仅使用片内ROM(注意:

选中该项并不会影响最终生成的目标代码量);Operating 项

是操作系统选择,Keil提供了两种操作系统:

Rtxtiny和Rtxfull,关于操作系统是另外一个很大的话题了,通常我们不使用任何操作系统,即使用该项的默认值:

None(不使用任何操作系统);Off Chip  Code memory用以确定系统扩展ROM的地址范围,Off Chip xDatamemory组用于确定系统扩展RAM的地址范围,这些选择项必须根据所用硬件来决定,由于该例是单片应用,未进行任何扩展,所以均不重新选择,按默认值设置。

设置对话框中的OutPut页面,如图6所示,这里面也有多个选择项,其中CreatHexfile用于生成可执行代码文件(可以用编程器写入单片机芯片的HEX格式文件,文件的扩展名为.HEX),默认情况下该项未被选中,如果要写片做硬件实验,就必须选中该项,这一点是初学者易疏忽的,在此特别提醒注意。

选中Debug information将会产生调试信息,这些信息用于调试,如果需要对程序进行调试,应当选中该项。

Browse information是产生浏览信息,该信息可以用菜单view->Browse来查看,这里取默认值。

按钮“SelectFolderforobjects"

 

是用来选择最终的目标文件所在的

文件夹,默认是与工程文件在同一个文件夹中。

NameofExecutable用于指定最终生成的目标文件的名字,默认与工程的名字相同,这两项一般不需要更改。

工程设置对话框中的其它各页面与C51编译选项、A51的汇编选项、BL51连接器的连接选项等用法有关,这里均取默认值,不作任何

图6 对输出进行控制

修改。

以下仅对一些有关页面中常用的选项作一个简单介绍。

Listing标签页用于调整生成的列表文件选项.在汇编或编译完成后将产生(*。

lst)的列表文件,在连接完成后也将产生(*。

m51)的列表文件,该页用于对列表文件的内容和形式进行细致的调节,其中比较常用的选项是“CCompileListing”下的“AssambleCode”项,选中该项可以在列表文件中生成C语言源程序所对应的汇编代码.

C51标签页用于对Keil的C51编译器的编译过程进行控制,其中比较常用的是“CodeOptimization”组,如图7所示,该组中Level是优化等级,C51在对源程序进行编译时,可以对代码多至9级优化,默认使用

第8级,一般不必修改,如果在编

译中出现一些问题,可以降低优化级别试一试。

Emphasis 是选择编译优先方式,第一项是代码量优化

(最终生成的代码量小);第二项是速度优先(最终生成的代码速度快);第三项是缺省.默认的是速度优先,可根据需要更改。

图7代码生成控制

设置完成后按确认返回主界面,工程文件建立、设置完毕。

三、编译、连接

在设置好工程后,即可进行编译、连接.选择菜单Project-〉Buildtarget,对当前工程进行连接,如果当前文件已修改,软件会先对该文件进行编译,然后再连接以产生目标代码;如果选择Rebuild All target files将会

对当前工程中的所有文件重新进行编

 

译然后再连接,确保最终生产的目标代码是最新的,而Translate…。

项则仅对该文件进行编译,不进行连接。

以上操作也可以通过工具栏按钮直接进行。

图8是有关编译、设置的工具

栏按钮,从左到右分别是:

编译、编译

连接、全部重建、停止编译和对工程进行设置。

编译过程中的信息将出现在输出窗口中的Build 页中,如果源程序中有语

图8 有关编译、连接、项目设置的工具条

图9 正确编译、连接之后的结果

法错误,会有错误报告出现,双击该行,可以定位到出错的位置,对源程序反复修改之后,最终会得到如图9所示的结果,提示获得了名为exam1。

hex的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其它相关的文件,可被用于Keil的仿真与调试,这时可以进入下一步调试的工作。

Keil教程

(2)

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

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

一、常用调试命令

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

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

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

 图1 调试工具条

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

全速执行是指一行程序执行完以后紧

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

单步执行是每次执行一行程序,执行完该行程序以后即停止,等待命令执行下一行程序,此时可以观察该行程序执行完以后得到的结果,是否与我们写该行程序所想要得到的结果相同,借此可以找到程序中问题所在.程序调试中,这两种运行方式都要用到。

使用菜单STEP或相应的命令按钮或使用快捷键F11可以单步执行程序,使用菜单STEPOVER或功能键F10可以以过程单步形式执行命令,所谓过程单步,是指将汇编语言中的子程序或高级语言中的函数作为一个语句来全速执行。

图2 调试窗口

按下F11键,可以看到源程序窗口的左边出现了一个黄色调试箭头,指向源程序的第一行,如图2所示。

每按一次F11,即执行该箭头所指程序行,然后箭头指向下一行,当箭头指向LCALL  DELAY行时,再次按下F11,会发现,箭头指向了延时子程序DELAY的第一行。

不断按F11键,即可逐步执行延时子程序。

通过单步执行程序,可以找出一些问题的所在,但是仅依靠单步执行来查错有时是困难的,或虽能查出错误但效率很低,为此必须辅之以其它的方法,如本例中的延时程序是通过

将D2:

DJNZ   R6,D2这一行程序执行六万多次来达到延时的目的,如果用按F11六万多

次的方法来执行完该程序行,显然不合适,为此,可以采取以下一些方法,第一,用鼠标在子程序的最后一行(ret)点一下,把光标定位于该行,然后用菜单Debug-〉RuntoCursorline

(执行到光标所在行),即可全速执行完黄色箭头与光标之间的程序行。

第二,在进入该子

程序后,使用菜单Debug—〉StepOutofCurrentFunction(单步执行到该函数外),使用该命令后,即全速执行完调试光标所在的子程序或子函数并指向主程序中的下一行程序(这里是JMP  LOOP行)。

第三种方法,在开始调试的,按F10而非F11,程序也将单步执行,不同的是,执行到lcall           delay行时,按下F10键,调试光标不进入子程序的内部,而是全速执行完该子程序,然后直接指向下一行“JMP  LOOP”。

灵活应用这几种方法,可以大大提高查错的效率。

二、在线汇编

?

在进入Keil的调试环境以后,如果发现程序有错,可以直接对源程序进行修改,但是要使修改后的代码起作用,必须先退出调试环境,重新进行编译、连接后再次进入调试,如果只是需要对某些程序行进行测试,或仅需对源程序进行临时的修改,这样的过程未免有些麻烦,为此Keil软件提供了在线汇编的能力,将光标定位于需要修改的程序行上,用菜单Debug->Inline Assambly…即可出现如

图3的对话框,在Enter Ne

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

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2