第4章 Keil开发环境副本.docx

上传人:b****8 文档编号:29249834 上传时间:2023-07-21 格式:DOCX 页数:15 大小:328.65KB
下载 相关 举报
第4章 Keil开发环境副本.docx_第1页
第1页 / 共15页
第4章 Keil开发环境副本.docx_第2页
第2页 / 共15页
第4章 Keil开发环境副本.docx_第3页
第3页 / 共15页
第4章 Keil开发环境副本.docx_第4页
第4页 / 共15页
第4章 Keil开发环境副本.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

第4章 Keil开发环境副本.docx

《第4章 Keil开发环境副本.docx》由会员分享,可在线阅读,更多相关《第4章 Keil开发环境副本.docx(15页珍藏版)》请在冰豆网上搜索。

第4章 Keil开发环境副本.docx

第4章Keil开发环境副本

第四章Keil开发环境

单片机的软件开发步骤:

在开发环境中,编写源程序(*.C或*.ASM),然后把源程序进行编译和链接,生成十六进制文件(*.HEX),最后把生成十六进制文件用某种编程工具下载到单片机的程序存储器中。

这样当单片机上电复位后,就可以运行用户编写的程序了。

开发期间要经过多次修改等。

C51程序开发是在KeilµVision3开发环境下进行

4.1集成开发环境KeilµVision3简介

KeilSoftware公司推出的KeilµVision3是一款基于Windows的软件平台,它是一种用于51单片机的集成开发环境(IDE—IntergratedDevelopmentEvironment)。

µVision3提供了对基于8051内核的各种型号单片机的支持,完全兼容先前的KeilµVision2版本。

目前当前较新的版本为KeilµVision4。

开发者可购买KeilµVision3软件,也可到Keilsoftware公司的主页免费下载Eval(评估)版本。

该版本同正式版本一样,但有一定的限制,最终生成的代码不能超过2KB,但用于学习已经足够。

开发者还可以到Keil公司网站申请免费的软件试用光盘。

KeilµVision3内包含了功能强大的编辑器和调试器。

编辑器可以像一般的文本编辑器一样对源代码进行编辑,并允许用户在编辑时设置程序断点(可在源代码未经编译和汇编之前)。

用户启动µVision3的调试器之后,断点即被激活。

断点可被设为条件表达式、变量或存储器访问,断点被触发后,调试器的命令或调试功能即可执行,因此用户可以在编辑器内调试程序,使用户快速地检查和修改程序。

用户还可以在编辑器中选中变量和存储器来观察其值。

并可在双层窗口中显示,还可对其进行适当的调整。

此外,µVision3调试器具有符号调试特性以及历史跟踪,代码覆盖,复杂断点等功能。

KeilC51编译器在遵循ANSIC标准的同时,为51单片机进行了特别的设计和扩展,能让用户使用在应用中需要的所有资源。

KeilC51的库函数含有100多种功能,其中大多数是可再入的。

函数库支持所有的ANSIC的程序。

库函数中的程序还为硬件提供特殊指令,例如nop、testbit、rol、ror等,方便了应用程序的开发。

KeilµVision的串口调试器软件comdebug.exe,用于在电脑端能够看到单片机发出的数据,该软件无需安装,可直接在当前位置运行这个软件。

若读者需最新版,可到有关搜索网站输入关键词“串口调试器”,找到一个合适的下载网站,可即下载最新版本。

当然,使用Windows自带的“超级终端”也是不错的选择。

(1)建立一个新工程

KeilµVision3把用户每一个应用程序设计都当作一个项目,用项目管理的方法把一个应用程序设计中所需要用到的、互相关联的程序链接在同一项目中。

这样,打开一个项目时,所需的关联程序也都跟着进入了调试窗口,方便用户对项目中各个程序的编写、调试和存储。

因此,在编写一个新的应用程序前,先建立项目的良好习惯。

下面首先介绍如何建立一个新项目。

图4-1KeilVision3集成开发环境

(1)建立工程。

首先要建立一个项目,在编辑界面,从“P工程(Project)”下拉菜单中,选择“N新建工程(NewProject)”

弹出如下对话框:

选择存放的文件夹(在“保存在”处选择),在对话框中的“文件名”后输入一个程序项目名称,保存后的文件扩展名自动为“.uv2”,这是KeilµVision3项目文件的扩展名,以后可直接点击此文件就可打开先前做的项目。

选择合适的路径,然后输入工程的名称,并保存。

(2)选择单片机型号。

用户可根据所使用的单片机来选择。

KeilµVision3支持几乎所有的51内核的单片机。

(例如选择“Atmel”)单击Atmel左边的“+”,然后选择相应的单片机型号,例如选择AT89C51。

单击“确定”后,显示如下:

选择“是”后,单击“Target1”左边的“+”号,再单击“SourceGroup1”左边的“+”,可以看到项目中,已经加入了“STARTUP.A51”启动代码。

(3)编写源程序。

从“F文件(File)”下拉菜单中,选择“新建(New)”,此时光标在编辑窗口里闪烁,这时,用户可以用C51编写程序了。

显示如下:

可以在文本编辑区中输入代码。

输入完成后,从“F文件(File)”下拉菜单中,选择“S保存(Save)”。

在“文件名”栏的编辑框中,键入文件名,同时,必须键入正确的扩展名(为“.c”或“.asm”)。

注意,如果用C语言编写程序,则扩展名为“.c”;如果用汇编语言编写程序,则扩展名必须为“.asm”。

然后,单击“保存”按钮。

(4)源程序加入工程

从“ProjectWorkspace”区中,右键单击“SourceGroup1”。

 

在弹出的菜单中选择“AddFiletogroup“SourceGroup1””,显示如下:

选择建立的源程序,然后单击“Add”按钮,即可把源程序加入到工程中。

完成项目的建立。

(5)存储模式的选择

在实际应用前,要进行一些设置。

从“ProjectWorkspace”区中,右键单击“Target1”,显示如下:

选择“OptionsforTarget‘Target1’”,显示如下:

在此输入晶体振荡器的频率(是6MHz,还是12MHz),再选择“输出”,在“创建HEX文件HEX格式”处选择,这样编译完成后,可以形成“HEX”文件,供Proteus仿真软件调入HEX文件运行。

“内存模式”有:

【P66】

①Small:

variablesinDATA

②Compact:

variablesinPDATA

③Large:

variablesinXDATA

C51编译器支持三种存储模式:

SMALL模式、COMPACT模式和LARGE模式。

不同的存储模式对变量默认的存储器类型不一样。

(1)SMALL模式。

SMALL模式称为小编译模式,在SMALL模式下,编译时,函数参数和变量被默认在片内低128BRAM中,存储器类型为data。

内存模式选择Small,则程序中用到的变量,优先放到内部数据存储器,执行速度较快。

(2)COMPACT模式。

COMPACT模式称为紧凑编译模式,在COMPACT模式下,编译时,函数参数和变量被默认在片外RAM的低256字节空间,存储器类型为pdata。

(3)LARGE模式。

LARGE模式称为大编译模式,在LARGE模式下,编译时函数参数和变量被默认在片外RAM的64KB字节空间,存储器类型为xdata。

在程序中变量的存储模式的指定通过#pragma预处理命令来实现。

函数的存储模式可通过在函数定义时后面带存储模式说明。

如果没有指定,则系统都隐含为SMALL模式。

“ROM代码大小”有:

①Small:

program2Korless

②Compact:

2Kfunctions,64Kprogram

③Large:

64Kprogram

(6)保存全部工程

保存工程前,需在上面的界面中,选择“输出(Output)”,显示如下:

选择“创建HEX文件(CreateHEXFile)”单选框,这样在编译项目后,就可以生成十六进制文件。

单击“确定”。

单击“File”菜单中的“保存全部(SaveAll)”,保存全部工程。

(7)编译工程

在工程建立并设置好以后,接下来的工作就是对工程进行编译。

如果一个项目包含多个源程序文件,并且已经编译,则当只修改了某一个文件时,没有必要全部再编译一次,可选择“Buildtarget”,仅对修改过的文件进行编译,然后和已被编译过的文件进行连接。

如果对所有源程序进行编译连接,可选择“Rebuildalltargetfiles”。

单击工具栏中的“Translatecurrentfile”、“Buildtarget”和“Rebuildalltargetfiles”后,在所建的工程文件夹中,生成十六进制文件(*.HEX)。

把十六进制文件用某种工具软件下载到单片机的程序存储器中,上电后程序即可运行。

在编译过程中,如果发现有错误,需要修改程序。

【实例1】独立按键识别【P76】

要求开始时LED均为熄灭状态,随后根据按键动作点亮相应LED(在按键释放后,继续保持,直至新的按键按下为止)

#include

//运行过程中,可以删除2根上拉线,观察运行结果的变化

main()

{

charkey=0;

P2=0;//P2口先置为“00”,所有的LED熄灭

while

(1)

{

key=~P0&0x0f;

if(key!

=0)P2=key;//如果没有按键,key就为0,不执行P2=key

}

}

【驱动方式最好不要这种,应该用低电平驱动;限流电阻最好用470,上拉电阻最好用10K】

4.2C51程序的开发流程

C51程序开发与在Windows中运行的项目工程的开发有所不同,在Windows中,一般程序的编译结果是后缀名为“.exe”的可执行文件,该文件在Windows系统中能直接运行,而单片机C51程序的开发属于嵌入式开发,遵循主流的交叉编译模式,即在宿主机(运行KeilµVision3的PC机)上开发编译,在目标机(51系列单片机)上运行。

在宿主机上的编译结果为COFF文件或是满足Intel规范的文件,文件包含了可执行的机器码,要经过编程器烧写到单片机的程序区(FlashROM)才能执行。

一个单片机C51应用程序的开发流程如下:

在KeilµVision3中新建项目工程→建立并编辑源文件→编译调试项目工程→生成目标文件→下载到程序存储器中→程序运行。

4.2.1KeilμVision3软件调试的方法

1.软件调试

软件调试要通过Debug下拉菜单中的工具进行。

Debug菜单如图所示,共分为5部分。

下面就其中主要部分进行分别介绍。

(一)Start/StopDebugSession命令用于启动或停止调试功能。

启动调试功能后,KeilμVision3的项目窗口自动切换到寄存器标签页,显示CPU内部各寄存器的当前状态,寄存器的状态将随着程序的执行而不断变化。

Go命令用于启动用户程序从当前地址处开始全速运行,遇到断点或是执行“StopRunning”命令时停止。

Step命令用于单步执行程序。

单击一次该选项则执行一条C语言指令,遇到函数调用则进入被调用函数执行。

StepOver命令用于启动用户程序从当前地址处开始执行一条语句。

遇到函数调用时不进入函数执行,而是将整个函数一起一次执行。

StepOutofcurrentFunction命令用于在调用函数的过程中,启动函数从当前地址处开始执行并返回到调用该函数的下一条语句。

RuntoCursorLine命令用于启动用户程序从当前地址处开始执行到光标所在行。

StopRunning命令用于停止运行用户程序。

以上是Debug菜单中前两块的内容,其第三块的内容用于调试用户程序过程中的断点管理。

断点功能可在某种特定条件下暂停程序的运行,以便于观察程序的运行情况、查找和排除错误。

Insert/RemoveBreakpoint命令用来在当前光标所在行插入或删除一个断点。

【在非调试状态下设置】

Enable/DisableBreakpoint命令可激活或禁止当前光标所指向的一个断点。

DisbleAllBreakpoints命令用来禁止所有已经设置的断点。

ShowNextStatement命令用来在编辑窗口中显示下一条将要被执行的用户程序语句。

2.观察仿真结果

KeilμVision3可以通过内部集成的器件库实现对单片机外围集成功能的模拟仿真,在调试状态下可以通过Peripherals菜单来观察仿真的结果。

“外围设备(Peripherals)”菜单在调试状态下的内容如图所示。

下面对该菜单中各选项进行分别介绍。

(1)复位CPU(ResetCPU)。

对模拟仿真的单片机复位。

(2)Interrupt。

用来显示单片机中断系统状态。

选择“Interrupt”选项,弹出如下界面:

在窗口中选中某一个中断源,在窗口下面显示与该中断相对应的中断允许和中断标志的复选框,通过对这些状态位的置位或复位操作,可以实现对单片机的仿真。

(3)I/O-Ports。

用来对单片机的并口P0~P3进行仿真,如果选择P1后显示如下:

P1栏显示单片机P1口各位锁存器的状态;Pins栏显示P1口各引脚的状态。

在仿真时,各位可以根据需要进行修改。

(4)Serial。

用来对串行口进行仿真。

单击该选项,显示如下:

 

(5)Timer。

用来对内部定时器进行仿真。

单击“Timer0”该选择,显示如下:

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

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1