Keil实例教程(三)
KEIL教程
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的FLASH ROM,可以反复擦写,非常适于做实验。
89C51的P1引脚上接8个发光二极管,P3.2~P3.4引脚上接4个按钮开关,我们的第一个任务是让接在P1引脚上的发光二极管依次循环点亮。
一、Keil工程的建立首先启动Keil软件的集成开发环境,这里假设读者已正确安装了该软件,可以从桌面上直接双击uVision的图标以启动该软件。
Keil软件使用手册【精选文档】
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号粘贴在此处)14:(点击Generate,在上方会生成一组ID,复制下来)15:(将复制好的ID粘贴在圈选出,并点击Add LIC)16:(当你看见这两组单词,那么恭喜你,注册成功,准备开始你的奇妙程序之旅吧!)二新建工程1.单击Project,选择New Project2.选择保存位置,输入工程的名字3.选择CPU。
紧接着,Keil C51提示您选择CPU器件。
8051内核片机最早是由Intel公司发明的,后来其他厂商如Philips、Atmel、Winbond等先后推出其兼容产品,并在8051的基础上扩展了许多增强功能,根据芯片的实际情况,选择相应的器件(本例程选择Atmel公司下的AT89C52),如图:注:选择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以外,还有一个Timer2 4。
8051有5个中断源8052有6个。
Keil使用教程课件资料
新ቤተ መጻሕፍቲ ባይዱ两个Group,分布取名Libraries和Documentation 。
选择是(Y):添加启动代码
下午7时23分
19
新建一个工程
现在我们有了一个只含有一个源文件 Startup.s 的工 程,双击Startup.s文件名,可以查看源文件内容
下午7时23分
20
添加带有main函数的C文件
步骤二:添加带有main函数的C文件 创建一个含有main 函数的C源程序。选择 File→New… (或者点击快捷按钮 ),创 建一个空白文件。编辑内容,取名Main.c 保 存:
下午7时23分
15
1. RealView MDK 简介
新建一个工程 添加带有main函数的C文件 添加库函数 工程配置 设置调试和下载程序 调试和运行程序
下午7时23分
16
新建一个工程
步骤一:新建一个工程
打开KEIL,在Project目录中,选择Project>New uVision Project…
下午7时23分
17
新建一个工程
选择工程路径为工程模板文件夹下的StellarisWare /codes/<PROJECT_NAME>,最后一级文件夹需新建,并建 议将工程名称与该文件夹名称取同名。
下午7时23分
18
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字节组成双精度形式显示。
keil使用教程
keil使用教程Keil是一款被广泛应用于嵌入式系统开发的集成开发环境(IDE)。
本文将为您提供使用Keil的简单教程,没有标题,请阅读以下步骤:1. 下载并安装Keil:您可以从Keil官方网站下载最新版的Keil软件。
安装程序将引导您完成安装过程。
2. 创建新工程:打开Keil软件后,您可以选择创建一个新工程。
在“File”菜单中选择“New Project”选项。
3. 选择芯片型号:根据您的需求,选择一个适合的芯片型号。
Keil支持各种常见的微控制器和微处理器。
4. 配置工程设置:在创建工程后,您可以设置一些工程相关的选项。
例如,您可以指定输出文件的目录和名称,选择调试器的类型等。
5. 编写代码:在Keil的代码编辑器中,您可以编写C或汇编语言的代码。
您可以创建多个源文件,并将它们链接到一起。
6. 调试代码:Keil提供了强大的调试功能,可以帮助您调试代码。
您可以设置断点、单步调试、查看变量和寄存器的值等。
7. 编译和烧录代码:在调试之前,您需要编译代码。
Keil将会将源代码编译成可执行文件。
然后,您可以使用调试器将可执行文件烧录到目标硬件上。
8. 调试和测试:通过连接目标硬件,您可以使用Keil的调试器进行代码的调试和测试。
您可以监视变量的值、检查寄存器的状态,并通过单步调试来查找和修复错误。
9. 优化和验证:一旦代码调试完成,您可以进行性能优化和代码验证。
Keil提供了一些工具和选项,可以帮助您检查代码的质量和优化执行效率。
10. 生成最终可执行文件:完成所有的开发和调试后,您可以生成最终的可执行文件。
这个可执行文件是您将部署到最终产品中的版本。
这就是使用Keil的简单教程,希望能帮助您快速上手使用Keil进行嵌入式系统开发。
记得保存您的工程和代码,以便以后查找和使用。
实验1使用Keil输入和调试程序
实验一使用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)。
3 第三章 Keil软件的使用及流水灯的设计 (1)
VCC P0. 0 P1=0xfe;//1111 1110 0000 P1=0xff;//1111 1111 P0.1P1=0x00;//0000 P0.2 P0.3 由于单片机P1 P0.4 P0.5 口的8个引脚 P0.6 可以同时输出 P0.7 PSEN 不同的电平, ALE 所以可以控制 EA P2.7 不同的发光二 P2.6 P2.5 极管处于不同 P2.4 的亮灭状态。 P2.3 P2.2 P2.1 P2. 0
#include<reg51.h> #define uint unsigned int sbit led1=P1^0; uint i,j; void main() { while(1) { led1=0; for(i=1000;i>0;i--) for(j=110;j>0;j--); led1=1; for(i=1000;i>0;i--) for(j=110;j>0;j--); }
#include<reg51.h> #define uint unsigned int sbit led1=P1^0;
void delay1s();
void main() { while(1) { led1=0; delay1s(); led1=1; delay1s(); }}
void delay1s() {uint i,j; for(i=1000;i>0;i--) for(j=110;j>0;j--);}
1 0
+5V
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 24 22 21
keil 引用c文件已经定义的结构体
keil 引用c文件已经定义的结构体标题:使用Keil引用C文件已经定义的结构体在嵌入式开发中,Keil是一款广泛使用的集成开发环境(IDE),能够方便地进行ARM微控制器的软件开发。
在使用Keil进行开发时,我们经常需要引用已经定义的结构体,以便在程序中使用。
本文将介绍如何在Keil中引用C文件已经定义的结构体,并给出一些使用结构体的实例。
引用已经定义的结构体是一种常见的需求,它能够帮助我们更好地组织和管理数据。
在Keil中,我们可以通过以下步骤来引用已经定义的结构体:步骤一:在Keil中打开需要引用已定义结构体的C文件。
在该文件中,结构体应该已经被定义并且可见。
步骤二:在引用结构体的C文件中,使用`#include`指令引入定义结构体的头文件。
这样可以确保编译器能够找到结构体的定义。
步骤三:在需要使用结构体的地方,声明一个与结构体相同类型的变量。
这样就可以通过该变量来访问结构体的成员。
下面以一个简单的例子来说明如何在Keil中引用C文件已经定义的结构体。
假设我们有一个名为`person.h`的头文件,其中定义了一个名为`Person`的结构体,该结构体包含姓名和年龄两个成员变量。
```c// person.h#ifndef PERSON_H#define PERSON_Htypedef struct {char name[20];int age;} Person;#endif```现在我们在另一个C文件中引用`person.h`头文件,并使用`Person`结构体。
```c// main.c#include "person.h"int main() {Person person1;person1.age = 25;strcpy(, "Tom");// 使用person1结构体的成员printf("Name: %s\n", );printf("Age: %d\n", person1.age);return 0;}```在上面的例子中,我们首先使用`#include`指令引入了`person.h`头文件,然后声明了一个类型为`Person`的变量`person1`,并对其成员进行赋值。
Keil教程
Keil的基本操作一、进入Keil双击桌面Keil uVision3图标,或者“开始”→“程序”→“Keil uVision3”。
二、工作界面三、建立工程点击“Project”→“New Project”。
如图所示。
在弹出的窗口选择工程要保存的路径,输入工程文件名。
然后点击“保存”按钮。
在弹出的对话框要求选择单片机的型号,因为51内核单片机具有通用性,所以我们任选一款89C52就行。
在这里我们选择Atmel的89C52,然后点击“确定”按钮。
完成上一步后,窗口界面如图所示。
至此,我们已经建立一个工程,但工程中海没有任何文件及代码。
四、添加文件及代码1、添加代码到文件点击“File”→“New”或者点击来新建文件。
新建文件后,窗口界面如图所示。
在当前编辑框中输入程序,程序输入完毕后,如图所示。
点击“File”→“Save”或者点击,弹出窗口如图所示,在“文件名”处输入要保存的文件名(例:pmd.c),必须输入正确的扩展名(如果用C语言编写程序,则扩展名必须是.c;如果用汇编语言编写程序,则扩展名必须是 .asm)。
这里的文件名不一定和工程名相同,可以随意填写文件名,然后单击“保存”按钮。
此时这个新建文件与我们刚刚建的工程还没有直接联系。
2、添加文件到工程单击“Target 1”前面的“+”号,然后右键单击“Source Group 1”,选择“Add Files to Group ‘Source Group 1’”,如图所示。
在弹出对话框中,选中pmd.c,单击“Add”按钮,再单击“Close”按钮,然后再单击左侧“Source Group 1”前面的“+”号,屏幕窗口如图所示。
这时,源代码文件就与工程关联起来了。
五、编译、连接点击“Project”→“Rebuild all target files”或者点击。
信息输出窗口中显示了编译过程和编译结果,如图所示。
如果源代码中有语法错误,会有错误报告出现,双击该行,可以定位到出错的位置,对源程序反复修改之后,最终会得到“”pmd”- 0 Error(s),0 Warning(s).”的结果。
keil uv3基本操作
KEIL 基本操作, 熟悉怎样使用,只要你用心,你一点也不会的话,也可以一步一步按照步骤操作,这里是给那些从未接触过单片机的人,学单片机,当然首先要学会使用编程工具,下面就一起行动拉!1. 启动KEIL 软件如下, 界面如下,空空的,什么都没有。
2. 创建一个新的工程项目,不是新建哦,鼠标左点Preject 菜单,出现下拉菜单点New后面又出现2个,点第一个uVision Preject.3. 出现以下窗口,为了便于管理,查找,每个项目建立一个文件夹.要养成这个习惯。
4. 为新建文件夹起个项目名称,比如跑马灯.5. 文件名建好后,就可以起个项目工程名了.然后保存项目名称最好英文比较好,如果你非得用中文,也没关系。
6. 保存好项目名称之后,出现以下窗口,这个窗口告诉你想用哪个单片机,对于刚接触的人来说。
不需要那么严格,选择个相类似的单片机就行了,等你非常熟练自后就明白了!不是讨论范围.7. 我们选择ATMEL 的AT89C52芯片,点确定.8. 出现以下菜单,点是或者否都可以。
点是9.这样一个工程项目被创建,窗口左上角显示工程名但到这里还没结束继续。
10.下面开始新建编译文件,有几种方法来建立编译文件名.点菜单File, 点New1.. 在工作窗口出现一个默认的文本文件,这还不能进行编程。
12. 保存这个文件,点保存,出现以下菜单。
13.保存这个文件,由于我们使用的是C语言进行编程,因此在文件类型中我们选择c14.写好文件名,必须有后缀.15.这样我们就创建了一个C文件.打开如下,但是现在还不能进行编写程序,我们必须调入工程文件中才可以。
16 下面开始说怎么加载C文件或汇编文件,先说下怎么更改左边的项目名称,点右键,打开Manage Components17. 出现以下窗口,左双击窗口中的字符,我们将重新命名.18. 重新命名如下,确定。
19.结果如下,左边就变成了我么好所需要的工程项目名称,项目名称还可以再进行添加,再以后将会讲到。
keil 教程
keil 教程在本教程中,我们将介绍Keil(一种集成开发环境)的使用方法。
Keil主要用于嵌入式系统的开发,其以易用性、强大的功能和稳定性而闻名。
Keil的安装过程非常简单,只需按照安装向导的指示进行操作即可。
安装完成后,我们可以开始创建一个新的项目。
打开Keil后,点击"New Project"创建一个新项目。
在弹出的对话框中,选择适合的目标设备和编程语言。
然后选择项目存放的路径,并为项目命名。
接下来,我们需要添加源文件到项目中。
单击鼠标右键,选择"Add Files to Group"将源文件添加到项目的文件组中。
可以选择多个源文件,这将有助于组织和管理项目代码。
在Keil中,我们可以使用"Build"选项来编译项目代码。
在编译过程中,Keil会检查代码中的语法错误和警告,并生成可执行文件。
在编译成功后,我们可以使用"Debug"选项来调试项目。
Keil 提供了强大的调试功能,如断点、单步执行和观察变量等。
可以通过连接目标设备来进行实时调试。
除了编译和调试功能外,Keil还提供了一些其他的实用工具。
比如,我们可以使用"Device"选项来配置目标设备的特性和参数。
此外,Keil还提供了一个代码编辑器,可以轻松地编辑和浏览代码。
总结一下,Keil是一个功能强大、易于使用的嵌入式系统开发工具。
通过本教程,我们了解了Keil的安装过程、项目创建、源文件添加、编译、调试和其他实用工具的使用方法。
希望您能通过这些基本操作熟悉Keil的使用,并能够在嵌入式系统开发中发挥其强大的功能。
keil 工程例程
keil 工程例程Keil工程例程Keil是一款广泛应用于嵌入式系统开发的集成开发环境(IDE),提供了丰富的开发工具和功能,方便开发者进行嵌入式软件的编写、调试和测试。
本文将介绍一些常见的Keil工程例程,帮助读者更好地理解Keil的使用方法和功能。
一、LED闪烁例程LED闪烁是嵌入式系统开发中最常见的例程之一。
通过控制单片机的GPIO口,我们可以实现LED的亮灭控制。
下面是一个简单的LED闪烁例程:```c#include <reg52.h>#define LED P1void Delay(unsigned int ms){unsigned int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 123; j++);}void main(){while (1){LED = 0xFF; // LED全亮Delay(1000); // 延时1秒LED = 0x00; // LED全灭Delay(1000); // 延时1秒}}```二、按键检测例程在嵌入式系统中,经常需要对按键进行检测和响应。
下面是一个简单的按键检测例程:```c#include <reg52.h>sbit KEY = P1 ^ 0;void Delay(unsigned int ms){unsigned int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 123; j++);}void main(){while (1){if (KEY == 0) // 检测按键是否按下{P2 = 0xFF; // 控制P2口输出全高电平Delay(100); // 延时100毫秒P2 = 0x00; // 控制P2口输出全低电平Delay(100); // 延时100毫秒}}}```三、串口通信例程串口通信在嵌入式系统中应用广泛,可以实现与外部设备的数据交互。
KEIL操作指导
开发工具介绍快 速 入 门一、基本操作步骤1. 点击运行 KEIL2. 创建项目3. 新建源文件4. 在项目中加载源文件5. 配置系统属性,选择生成 HEX 文件6. 编译7. 调试运行8. 点击运行在线编程工具软件 STC_ISP9. 装载 HEX 文件10.编程二、 Keil 简介Keil μVision3集成开发环境是Keil Software、 Inc/Keil Elektronik GmbH 开发的基于80C51内核的微处理器软件开发平台, 内嵌多种符合当前工业标准的 开发工具,可以完成从工程建立到管理、编译、连接、目标代码的生成、软件仿 真、硬件仿真等完整的开发流程。
尤其是C编译工具在产生代码的准确性和效率 方面达到了较高的水平,而且可以附加灵活的控制选项,在开发大型项目时非常 理想。
三、 操作步骤下面具体介绍如何开始单片机程序设计及简单调试。
1. 运行 Keil双击Keil快捷图标,进入Keil集成开发环境,界面如图1_1所示。
图1_1为安装Keil后初次打开的界面, 如果此前已经用Keil创建项目, Keil 启动后总是自动打开用户前一次保存的项目,此时可以点击工具栏的“Project” 菜单,选择其中的“Close Project”命令关闭当前项目。
图1-1 Keil启动界面2. 创建项目点击工具栏的“Project”菜单,在弹出的下拉菜单中选择“New Project”命令,创建一个新的项目并保存,如图1-2和 1-3所示。
图1-2 创建项目图1-3 保存项目这一阶段需要完成下列事情: (1)为你的项目取一个名称,项目名尽可能与要实现的功能说明一致,便于记忆,项目名不宜太长。
(2)选择项目存放的路径,建议为每个项目单独建立一个文件夹,并且项 目中需要的所有文件都放在这个文件夹。
(3)保存完毕,Keil会立即弹出如图1-4所示的器件选择窗口,在这一窗 口选择单片机厂商和具体型号。
Keil使用教程详细教程PPT课件
工程管理窗口内容及分布,与Windows 的资源管理器相似。
3 Keil C应用
图4-7 Keil C51的 工程管理器
3 Keil C应用
一、项目的建立
1、建立项目
选择Project菜单下的New Project命令, 创建新工程,在对话框中设定新工程的位 置,输入新工程名字保存即可。
1
• 要求 掌握使用KEIL进行程序创建,运行。
C51集成开发软件Keil C
主要内容
1 Keil C集成开发工具 简介
2 Keil C操作界面 3 Keil C的使用 4 项目的运行调试
C51集成开发软件Keil C
Keil C:是德国KEIL公司开发的单片机C 语言编译器。其前身是FRANKLIN C51,功 能相当强大。
这些库是按规定格式排列的目标模块, 可在以后被链接器所使用。
1 KeilC集成工具简介
三、模拟调试器
Keil C有三个模拟调试器。
1、软件模拟调试器dScope51
(1)模拟程序运行与调试,包括C、汇编、 宏汇编程序; (2)模拟CPU及其外围器 件,如串行口、定时器/计数器、I/O口等。
2、硬件调试器tScope51
19)Function Editor…: 编辑调试函数和调试配
置文件
2 Keil C操作界面
六、片内外设(Peripheral)菜 单
1)Reset CPU:复位CPU 2)Interrupt:设置/观察中断(触发方式、
优先级、使能等) 3)I/O Ports:设置/观察各个I/O口 4)Serial:设置/观察串行口 5)Timer:设置/观察各个定时器/计数器 6)A/D Converter:设置/观察A/D转换器 7)D/A Converter:设置/观察D/A转换器
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
C51是美国Keil Software公司出品 的51系列单片机软件开发系统,是目前 功能最强大的单片机编程系统。通过 Keil C51,我们可以用汇编语言或C语言 进行单片机程序编写。作为初学者,我 们先学习用汇编语言编写程序。
图4:输入源程序
一、输入源程序
第四步:保存源程序 保存文件时必须加上文件的扩展名,如果你使用汇编语言编 程,那么保存时文件的扩展名为“.asm”,如果是C语言程 序,文件的扩展名使用“*.C ”。
图5:保存源程序
二、新建工程
第五步:新建立Keil工程 如图6所示,点击 "工程" → "新建工程" 命令,将出现保存 对话框(图7)。
第九步:源程序的编译与目标文件的获得 我们已经完成了从源程序输入、工程建立、工程详细设置的 工作,接下来我们将完成最后的步骤,此时我们可以在文本 编辑窗中继续输入或修改我们的源程序,使程序实现我们的 目标,在检查程序无误后保存工程。接着如下图19所示,点 击“构造目标”快捷按钮,进行源程序的编译连接,源程序 编译相关的信息会出现在输出窗口中的“构造”页中。下图 19显示编译结果为0错误,0警告,同时产生了目标文件 lich1.hex。如果源程序中有错误,则不能通过编译,错误 会在输出窗口中报告出来,双击该错误,就可以定位到源程 序的出错行,我们可以对源程序进行反复修改,再编译,直 到没有错误为止。注意:每次修改源程序后一定要保存。
图6:新建工程
二、新建工程
在保存工程对话框中输入你的工程的文件名,Keil工程默 认扩展名为“.uv2”,工程名称不用输入扩展名(见图7), 一般情况下使工程文件名称和源文件名称相同即可,输入名 称后保存。
3Keil C学习定时器定时1s解读
选择每秒中断24次,每次溢出1843200/24=76800 个机器周期,超出65536,无效。 选择每秒中断30次,每次溢出1843200/30=61440 个机器周期 选择每秒中断32次,每次溢出1843200/32=57600 个机器周期 选择每秒中断36次,每次溢出1843200/36=51200 个机器周期 选择每秒中断40次,每次溢出1843200/40=46080 个机器周期 从上面可以看到我们可以选择方式有很多,但是最佳的是 每秒中断30次,每次溢出61440个机器周期。也就是赋 定时器T2初值65536-61440=4096,换成十六进 制就是0x1000。
在定时器服务函数里,需要重新置入定时器的值, 这样才能保证每次溢出时,都是你指定的时间。 这里置入的是0x0006,还需要走0x100000x0006个机器周期才溢出。换成10进制也就 是每65530个机器周期中断一次。我们仿真的晶 振是22118400HZ,每12个时钟一个机器周 期。65530×12/22118400=0.036秒。也 就是差不多28HZ的间/机器周期)/256 (取整) TL0=(65536-定时时间/机器周期)%256(取余)
实例3-2:定时器精确定位1秒钟(使用 AT89C52的定时器2)
要精确定时,必须使用自装载方式。这里我们使 用T2定时器,让它工作在16bit自动装载方式, 这时,有另一个位置专门装着16位预装载值, T2溢出时,预装载值立即被置入。这就保证了精 确定时。 即使是16位定时器,最长的溢出时间也就几十毫 秒,要定时一秒,就需要一个变量来保存溢出的 次数,积累到了多少次之后,才执行一次操作。 这样就可以累加到1秒或者更长的时间才做一次 操作了。
如果直接读一个没有按下按键的IO,就会读到1。 如果这个按键按下了,这个IO就通过按键短路到 了地。这是就会读到0。这就是读按键的原理。
keil的使用与操作
keil的使⽤与操作⼀、概述⼯欲善其事必先利其器。
Keil uVersion 4.0(后⽂简称为Keil 4.0)是单⽚机程序开发的集成开发环境(IDE),集成了C编译器、宏汇编、连接器、库管理和⼀个功能强⼤的仿真调试器。
本节以点亮⼀个LED为例,演⽰如何通过Keil新建⼯程、添加源⽂件、编译等基本操作。
⼆、Keil基本操作 ——以点亮⼀个LED项⽬为例本项⽬通过8051单⽚机的P2.0管脚控制⼀个红⾊LED,⽀持两种控制模式:长亮模式和闪烁模式。
电路图如下图所⽰,由图可知,P3.0输出低电平时,LED点亮;输出低电平时,LED熄灭。
项⽬程序由⼀个.c和⼀个.h组成,其中,LedCtrl.c为主程序,演⽰LED的两种控制模式;led.h为LED控制实现,定义了长亮函数LED_lit(bit flag)、闪烁函数LED_flash(unsigned int interval)和软件延时函数LED_delayMS(unsigned int ms)。
下⾯演⽰基于Keil完成本项⽬的开发过程。
1. 新建⼯程。
(1)运⾏Keil uVision4。
(2)选择菜单【Project>New µVersion Project】,打开Create New Project对话框。
(3)设置⼯程保存路径和⼯程名称。
注意,建议⼀个⼯程对应⼀个⽂件夹,⽅便管理。
(4)设置单⽚机型号。
在Select a CPU Data Base File对话框选择Generic Data Base,然后弹出的对话框中选择ATMEL>AT89C51,单击【OK】按钮。
(5)单击【否】按钮,选择不复制8051启动代码到⼯作⽂件。
到此,空⽩⼯程已经建好。
编写代码(1)选择菜单【File>New】(快捷键Ctrl+N)新建⼀个空⽩⽂件,则进⼊⽂件编辑状态。
(2)选择菜单【File>Save As】(快捷键Ctrl+S)将新建⽂件存储到⼯程⽬录LEDCtrl下,命名为led.h。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 项是一个开关,如果选中该项,则窗口中的值将以十进制的形式显示,否则按默认的十六进制方式显示。
Unsigned 和Signed 后分别有三个选项:Char 、Int 、Long ,分别代表以单字节方式显示、将相邻双字节组成整型数方式图1 调试窗口(命令窗口、存储器窗口、观察窗口)图2 存储器数值各种方式显示选择显示、将相邻四字节组成长整型方式显示,而Unsigned 和Signed 则分别代表无符号形式和有符号形式,究竟从哪一个单元开始的相邻单元则与你的设置有关,以整型为例,如果你输入的是I:0,那么00H 和01H 单元的内容将会组成一个整型数,而如果你输入的是I :1,01H 和02H 单元的内容全组成一个整型数,以此类推。
有关数据格式与C 语言规定相同,请参考C 语言书籍,默认以无符号单字节方式显示。
第三部份的Modify Memory at X:xx 用于更改鼠标处的内存单元值,选中该项即出现如图3所示的对话框,可以在对话框内输入要修改的内容。
2、工程窗口寄存器页图4是工程窗口寄存器页的内容,寄存器页包括了当前的工作寄存器组和系统寄存器,系统寄存器组有一些是实际存在的寄存器如A 、B 、DPTR 、SP 、PSW 等,有一些是实际中并不存在或虽然存在却不能对其操作的如PC 、Status 等。
每当程序中执行到对某寄存器的操作时,该寄存器会以反色(蓝底白字)显示,用鼠标单击然后按下F2键,即可修改该值。
3、观察窗口观察窗口是很重要的一个窗口,工程窗口中仅可以观察到工作寄存器和有限的寄存器如A 、B 、DPTR 等,如果需要观察其它的寄存器的值或者在高级语言编程时需要直接观察变量,就要借助于观察窗口了。
其它窗口将在以下的实例中介绍。
一般情况下,我们仅在单步执行时才对变量的值的变化感兴趣,全速运行时,变量的值是不变的,只有在程序停下来之后,才会将这些值最新的变化反映出来,但是,在一些特殊场合下我们也可能需要在全速运行时观察变量的变化,此时可以点击View->Periodic Window Updata (周期更新窗口),确认该项处于被选中状态,即可在全速运行时动态地观察有关值的变化。
但是,选中该项,将会使程序模拟执行的速度变慢。
二、各种窗口在程序调试中的用途以下通过一个高级语言程序来说明这些窗口的使用。
例2:#include "reg51.h"sbit P1_0=P1^0; //定义P1.0void mDelay(unsigned char DelayTime){ unsigned int j=0;for(;DelayTime>0;DelayTime--){ for(j=0;j<125;j++) {;} }}void main(){ unsigned int i; for(;;){ mDelay(10); //延时10毫秒 i++; if(i==10) { P1_0=!P1_0; i=0; } } } 这个程序的工作过程是:不断调用延时程序,每次延时10毫秒,然后将变量I 加1,随后对变量I 进行判断,如果I 的值等于10,那么将P1.0取反,并将I 清0,最终的执行效果图4 工程窗口寄存器页图3存储器的值的修改是P1.0每0.1S 取反一次。
输入源程序并以exam2.c 为文件名存盘,建立名为exam2的项目,将exam2.c 加入项目,编译、连接后按Ctrl+F5进入调试,按F10单步执行。
注意观察窗口,其中有一个标签页为Locals ,这一页会自动显示当前模块中的变量名及变量值。
可以看到窗口中有名为I 的变量,其值随着执行的次数而逐渐加大,如果在执行到mDelay(10)行时按F11跟踪到mDelay 函数内部,该窗口的变量自动变为DelayTime 和j 。
另外两个标签页Watch #1和Watch #2可以加入自定义的观察变量,点击“type F2 to edit ”然后再按F2即可输入变量,试着在Watch #1中输入I ,观察它的变化。
在程序较复杂,变量很多的场合,这两个自定义观察窗口可以筛选出我们自己感兴趣的变量加以观察。
观察窗口中变量的值不仅可以观察,还可以修改,以该程序为例,I 须加10次才能到10,为快速验证是否可以正确执行到P1_0=!P1_0行,点击I 后面的值,再按F2,该值即可修改,将I 的值改到9,再次按F10单步执行,即可以很快执行到P1_0=!P1_0程序行。
该窗口显示的变量值可以以十进制或十六进制形式显示,方法是在显示窗口点右键,在快捷菜单中选择如图5所示。
点击View->Dissambly Window 可以打开反汇编窗口,该窗口可以显示反汇编后的代码、源程序和相应反汇编代码的混合代码,可以在该窗口进行在线汇编、利用该窗口跟踪已找行的代码、在该窗口按汇编代码的方式单步执行,这也是一个重要的窗口。
打开反汇编窗口,点击鼠标右键,出现快捷菜单,如图6所示,其中MixedMode 是以混合方式显示,Assembly Mode 是以反汇编码方式显示。
程序调试中常使用设置断点然后全速运行的方式,在断点处可以获得各变量值,但却无法知道程序到达断点以前究竟执行了哪些代码,而这往往是需要了解的,为此,Keil 提供了跟踪功能,在运行程序之前打开调试工具条上的允许跟踪代码开关,然后全速运行程序,当程序停止运行后,点击查看跟踪代码按钮,自动切换到反汇编窗口,如图6所示,其中前面标有“-”号的行就是中断以前执行的代码,可以按窗口边的上卷按钮向上翻查看代码执行记录。
利用工程窗口可以观察程序执行的时间,下面我们观察一下该例中延时程序的延时时间是否满足我们的要求,即是否确实延时10毫秒,展开工程窗口Regs 页中的Sys 目录树,其中的Sec 项记录了从程序开始执行到当前程序流逝的秒数。
点击RST 按钮以复位程序,Sec 的值回零,按下F10键,程序窗口中的黄色箭头指向mDelay(10)行,此时,记录下Sec 值为0.00038900,然后再按F10执行完该段程序,再次查看Sec 的值为0.01051200,两者相减大约是0.01秒,所以延时时间大致是正确的。
读者可以试着将延时程序中的unsigned int 改为unsigned char 试试看时间是否仍正确。
注意,使用这一功能的前提是在项目设置中正确设置晶振的数值。
Keil 提供了串行窗口,我们可以直接在串行窗口中键入字符,该字符虽不会被显示出来,但却能传递到仿真CPU 中,如果仿真CPU 通过串行口发送字符,那么这些字符会在串行窗口显示出来,用该窗口可以在没有硬件的情况下用键盘模拟串口通讯。
下面通过一个例子说明Keil串行窗口的应用。
该程序实现一个行编缉功能,每键入一个字母,会立即回显到窗图5 设定观察窗的显示方式图6 反汇编窗口口中。
编程的方法是通过检测RI是否等于1来判断串行口是否有字符输入,如果有字符输入,则将其送到SBUF,这个字符就会在串行窗口中显示出来。
其中ser_init是串行口初始化程序,要使用串行口,必须首先对串行口进行初始化。
例3:MOV SP,#5FH ;堆栈初始化CALL SER_INIT ;串行口初始化LOOP:JBC RI,NEXT ;如果串口接收到字符,转JMP LOOP ;否则等待接收字符NEXT:MOV A,SBUF ;从SBUF中取字符MOV SBUF,A ;回送到发送SBUF中SEND:JBC TI,LOOP ;发送完成,转LOOPJMP SEND ;否则等待发送完SER_INIT: ;中断初始化MOV SCON,#50HORL TMOD,#20H ORL PCON,#80HMOV TH1,#0FDH ;设定波特率SETB TR1 ;定时器1开始运行SETB REN ;允许接收SETB SM2RETEND输入源程序,并建立项目,正确编译、连接,进入调试后,全速运行,点击串行窗口1按钮,即在原源程序窗口位置出现一个空白窗口,击键,相应的字母就会出现在该窗口中。
在窗口中击鼠标右键,出现一个弹出式菜单,选择“Ascii Mode”即以Ascii码的方式显示接收到的数据;选择“Hex Mode”以十六进制码方式显示接收到的数据;选择“Clear Window”可以清除窗口中显示的内容。
由于部份CPU具有双串口,故Keil提供了两个串行窗口,我们选用的89C51芯片只有一个串行口,所以Serial 2串行窗口不起作用。
小技巧:凡是鼠标单击然后按F2的地方都可以用鼠标连续单击两次(注意:不是双击)来替代。