Keil软件使用手册 .doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Keil软件使用手册 .doc》由会员分享,可在线阅读,更多相关《Keil软件使用手册 .doc(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Keil软件使用手册(本手册参考keil 4版本)一 安装到网上下载一个安装包,里面必须包含以下内容:1:(安装包文件,圈选的文件为安装说明,请务必仔细阅读)2:(打开安装文件)3:(点击下一步)4:(勾选同意,并点击下一步) 5:(浏览选择到你想安装的地方,然后选择下一步) 6:(两个空可以随便打,不重要,填完后点击下一步) 7:(正在安装中) 8:(点击完成) 9:(进入安装的文件夹,点击UV4)10:(打开Keil4的执行文件)11:(点击File,再选择License Management)Pic 12:(复制右上角的ID号)12:(打开注册机文件)13:(将复制的ID号粘贴在此处)1
2、4:(点击Generate,在上方会生成一组ID,复制下来)15:(将复制好的ID粘贴在圈选出,并点击Add LIC) 16:(当你看见这两组单词,那么恭喜你,注册成功,准备开始你的奇妙程序之旅吧!)二 新建工程1. 单击Project,选择New Project2 选择保存位置,输入工程的名字3 选择CPU。紧接着,Keil C51提示您选择CPU器件。8051内核片机最早是由Intel公司发明的,后来其他厂商如Philips、Atmel、Winbond等先后推出其兼容产品,并在8051的基础上扩展了许多增强功能,根据芯片的实际情况,选择相应的器件(本例程选择Atmel公司下的AT89C52
3、),如图:注:选择8051也可以,8051与8052有一点的差别,可以说8052是8051的升级版,主要有以下不同:1. 内部RAM,8051单片机为128Byte(00H-7FH),8052单片机为56 Byte (00H-0FFH)2.内部ROM,8051单片机为4KB,8052单片机为8KB3.8051有两个Timer:T0和T1。8052除了有T0和T1以外,还有一个Timer24.8051有5个中断源 8052有6个。关于单片机的知识我们将在后面做详细介绍。4. 选择C语言启动代码 如果使用汇编来编程,请选择“否”。 如果使用C51来编程,请选择“是”。 如果不出现本提示,请检查是否
4、将安装是否出错。5. 源程序文件 选择File菜单,选择New,然后单击保存按钮本例程保存为test.c,如果是用汇编写的程序保存的后缀名应该写成.asm右键工程项目,选择Add Fliles to 将刚才保存的test.c 添加到工程里面去以上就是工程的搭建,剩下的就是写程序程序写完编译通过后,设置生成HEX文件右键单击Target 1,选择Option for Target 1或者直接点击工具栏上面的按钮弹出的窗口选择Output,选上Create HEX编译生成HEX文件单击工具栏的“Rebuild all target files”按钮果程序有错,则会显示错误所在的文件及行号。如下图,
5、表示test.c文件的第35行有错误,双击则可定位到该位如果程序没有错误则会生成HEX文件。Data后面的数据表示使用片内RAM的大小,xdata表示使用外部数据大小,code表示程序的大小三 软件调试调试一般都是在发生错误与意外的情况下使用的。如果程序能正常执行,调试很多时候都是用不上的。所以,最高效率的程序开发还是程序员自己做好规范,而不是指望调试来解决问题。 单片机的程序调试分为两种,一种是使用软件模拟调试,第二种是硬件调试。 使用软件模拟调试,就是用计算机去模拟单片机的指令执行,并虚拟单片机片内资源,从而实现调试的目的。但是软件调试存在一些问题,不可能像真正的单片机运行环境那样执行的指
6、令能在同一个时间完成(往往比单片机慢)。软件调试只能是一种初步的,小型工程的调试,比如一个只有几百上千行的代码的程序,软件调试能很好的完成。 硬件调试其实也需要计算机软件的配合,大致过程是这样的:计算机软件把编译好的程序通过串行口、并行口或者USB口传输到仿真器,然后与单片机一样执行。仿真器仿真全部的单片机资源(所有的单片机接口,并且有真实的引脚输出)。仿真器会将单片机内部内存与时序等情况返回给计算机,这样 就可以在计算机里看到单片机程序真实的执行情况。不仅如此,还可以通过计算机的软件实现单步、全速、运行到光标的常规调试手段。仿真器可以接入实际的电路中仿真器以下介绍软件模拟调试调试的重要性前面
7、我们学习了如何建立工程,编写C源文件,连接工程,并获取生成的目标代码,但是坐到这些仅仅代表你的源程序没有语法错误,至于程序中存在其它错误必须通过调试才能解决。事实上,除了一小部分极其简单的程序绝大部分程序都要通过多次调试才能得到正确结果,调试是单片机开发过程中一个非常重要的环节。常用调试命令在对工程成功地进行汇编、连接以后,按Ctrl+F5或者使用菜单Debug-Start/Stop Debug Session即可进入调试状态,Keil内建了一个仿真CPU用来模拟执行程序,该仿真CPU功能强大,可以在没有硬件和仿真机的情况下进行程序的调试工具栏上从左到右依次为:查找(find out),第二个
8、几乎不用,开始停止调试,后面几个带圈的都和断点相关具体可将鼠标移到图标上查看,和工程窗口相关的几个小帮助最后一个是配置,可以修改各个窗口的字体,short cut key等等。单击中的调试按钮可以进入或者退出调试,单击进入进入调试状态后,界面与编缉状态相比有明显的变化,Debug菜单项中原来不能用的命令现在已可以使用了,工具栏会多出一个用于运行和调试的工具条,如图所示,Debug菜单上的大部份命令可以在此找到对应的快捷按钮,从左到右依次是:复位、运行、暂停、单步、过程单步、执行完当前子程序、运行到当前行、命令窗口(command window)、汇编窗口(disassembly window)
9、、控制特殊功能寄存器显示窗口(Symble window)、寄存器窗口(工程窗口那块)(register window)、堆栈调用窗口(Call stack)、监视窗口(watch window)、子窗口是locals watch1 watc2、存储器窗口(memory window)、串行口调试窗口(serial window)、分析窗口(包含逻辑分析仪,性能分析仪),工具按钮等命令。全速执行,复位重新开始执行,逐语句执行,跟踪进函数内部,先设置一个断点,全速运行程序如下:出现几个工作区间,以下介绍这几个区域:1 左侧是单片机内寄存器的状态区域,给出了常用的寄存器r0r7以及a,b,sp,d
10、ptr,pc,psw等特殊功能寄存器的值,这些值会随着程序的执行发生相应的变化。(涉及单片机内存,若未学过汇编语言,建议了解);其中Regs是片内内存的相关情况值;Sys是系统一些累加器、计数器等。具体介绍一下Sys:a 累加器ACC,往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。b 寄存器B,主要用于乘法和除法操作。spsp_maxdptr 数据指针DPTR。PC $states 执行指令的数量。sec 执行指令的时间累计(单位:秒)。 psw 程序状态标志寄存器PSW,八位寄存器,用来存放运算结果的一些特征量,如有无进位、借位等。p 奇偶标志P。反映累加器ACC
11、内容的奇偶性,如果ACC中的运算结果有偶数个1(如B,其中有4个1),则P为0,否则,P=1。f1ov 溢出标志位OV。MCS51反映带符号数的运算结果是否有溢出,有溢出时,此位为1,否则为0。rsf0ac 辅助进位标志AC。又称半进位标志,它反映了两个八位数运算低四位是否有半进位,即低四位相加(或减)有否进位(或借位),如有则AC为1状态,否则为0。cy 进位标志CY(PSW 7)。它表示运算是否有进位(或借位)。如果操作结果在最高位有进位(加法)或者借位(减法),则该位为1,否则为0。由于PSW存放程序执行中的状态,故又叫程序状态字。运算器中还有一个按位(bit)进行逻辑运算的逻辑处理机(
12、又称布尔处理机)。根据指令执行的不同,上述值会有相应的变化,程序员可以监测这些在单片机中看不到的值而达到调试的目的2 C语言源代码区域3 反汇编指令区域这个是Disassembly Windows ,按下后可以把C51 Disassembly 转化为相应的汇编语言,如果有汇编语言知识的话,就可以对比C51程序与汇编程序了。由于汇编语言的效率高很多,这也可以作为查看C51执行效率的一个方法。可以看出,C51 代码是如何被解释为汇编的。 4 查看变量的值5 查看存储器的值选择View Memory Window存储器窗口的地址栏处输入0000H后回车,则可以查看单片机内程序存储器的内容,单元地址前
13、有”C:”表示程序存储器。如果在存储器窗口的地址栏处输入D:00H后回车,则可以查看单片机内数据存储器的内容,单元地址前有“D:”表示数据存储器,单元地址前有”X:”表示片外数据区,冒号后面表示要查看的数据地址。6 虽然软件调试无法实现硬件调试那样的信号输出,但是软件调试也可以在软件窗口监测输出信号的高低电平,以及单片机相关端口的变化,实现模拟监测输出信号的目的。在主菜单栏:peripherals可以查看定时器,和IO口的数值,中断,串行通信上图所示,Port0,Port1,Port2,Port3就对应于51单片机的四个P0,P1,P2,P3 口,共32个针脚查看输出波形单击,然后选setup
14、可以输入想要观察的引脚。全速运行并单击图中的all,可以看到以下效果,单击图中的out或者in可以对单位时间进行修改。选择合适的时间可以清楚得观察高低电平变化及占空比下面我们来看一个实例:Keil C51程序调试过程用Keil C51编写程序时,经常需要调试,如果不是经常用这个软件的话,很容易忘记这些调试步骤,现在举一个例子“验证延迟函数delay()使其延迟的时间为500ms”说明。源程序写完后,就可以调试了,按照图1所示,先进行第一步和第二步操作,使界面切换到图2的状态,可以看到在文本编辑窗口中,有一个黄色箭头指向13行的位置,说明程序从这个位置开始执行。左上角有一些跟调试相关的按钮,如“
15、全速执行”、“单步进入”。对于这个例子,目的是验证delay()函数的延迟时间,使其大约为500ms。按照下列方法可以达到这个目的:图1 编译界面图2 调试界面点击“单步跳出”按钮(或功能键F10),黄色箭头从第13行往下移一行(14),再单击“单步跳出”,则箭头移到15行那边,表示程序从第13行执行到第15行(注:这种方式是一步一步执行程序。如果要同时执行几行,比如从第13行一下子执行到15行,可以作如下操作:先用鼠标在第15行的位置处点击两下会出现一个图2所示的红色图标;然后点击“全速执行”按钮,则黄色的箭头会从第13行快速移到15行。即:这两行同时被执行)。此时左边寄存器窗口中的sec有
16、一个数值,表示程序执行的时间,即delay()函数的延迟时间。如果延迟时间不是500ms,可改变delay()函数中x,y的数值,再点击图1的第二步所对应的按钮切换到图1所示的编译界面,点击“重新构造所有对象文件”编译程序,然后再切换到图2的界面上来进行调试。重复上面的步骤,直到左边寄存器窗口中的sec(单位秒)数值大约为0.50s,即可说明delay()延迟时间为500ms。(注:这种方法比较麻烦,而且延迟时间不会很精确,如果要精确延迟的话可采用定时器的方式。)Keil C调试案例-优化导致的问题如下是一个简单的Keil C中的小程序:#include void main()unsigned
17、 char i,j;i = 0xf0;j = 0x0f;P0 = i;P1 = j;while (1); 编译OK后,进入Debug session,按F11单步执行,发现i = 0xf0和j = 0x0f这两句没有执行。如下图: 很多初学者百思不得其解,其实,这是由于Keil C本身的8级优化导致的。解决的方法有两种:1、降底优化级别,如下图,可降至级别2。2、在局部变量i,j定义前加上Volatile,禁止Keil C优化这两个变量。如下:volatile unsigned char i,j; 调试OK!KEIL-C调试点滴问:用KEIL写C代码,做完以后的调试工作应该如何开展?只有PC机
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Keil软件使用手册 Keil 软件 使用手册
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内