《单片机原理及应用》第3章:基于KEIL软件的设计入门_第1页
《单片机原理及应用》第3章:基于KEIL软件的设计入门_第2页
《单片机原理及应用》第3章:基于KEIL软件的设计入门_第3页
《单片机原理及应用》第3章:基于KEIL软件的设计入门_第4页
《单片机原理及应用》第3章:基于KEIL软件的设计入门_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章基于KEIL软件的设计入门本章内容3.1KEIL软件的使用3.1.1KeiluVision4工程文件的建立3.1.2KeiluVision4工程的详细设置3.1.3工程编译、连接3.1.4调试方法3.2ISP在线烧录3.3实例程序解析3.3.1reg52.h及其他头文件3.3.2C语言中注释的写法3.3.3main()主函数的写法3.1KEIL软件的使用3.1.1KeiluVision4工程文件的建立1、建立工程文件在项目开发中,并不是仅有一个源程序就行了,为了管理和使用方法,有了Keil使用工程(Project)这一概念,下面介绍如何新建工程。第1步,选择Project下的NewuVision4Project菜单,出现一个对话框。选择放置工程的路径,然后给工程取个名称,例如1,不需要扩展名,点击保存。第2步,选择你正在使用的芯片,先是厂家,然后是型号假设使用AT89S52时选择Atmel→AT89S52,选好芯片后点击确定按钮。3、使用菜单File/New或者点击工具样的新建文件按钮,即可在项目窗的右侧打开一个新的文本编缉窗口,在该窗口中输入源程序:4、保存该文件,注意必须加上展名(汇编语言源程用.ASM或A51为扩展名,如果是C语言用.c),这里假定将文件保存为流水灯.c。需要说明的是,源文件就是一般的文本文件,可以使用任意文本编辑。5、窗口左测出现如下所示工程目录。新建工程至此完成。此时的工程是一个空的工程,里面什么文件也没有,需要手动把刚才编写好的源程序加入,点击SourceGroup1后鼠标右键,出现一个下拉菜单,如下图所示,选中AddFilestoGroup‘SourceGroup1’,出现一个对话框,要求寻找源文件。找到刚在保存的流水灯.c双击将文件加入项目。点击SourceGroup1前的加号,会发现流水灯.c文件已在其中。双击文件名,即可打开该源程序。3.1.2KeiluVision4工程的详细设置Target1右击选择OptionsforTarget'target1'或者使用菜单Project/Optionfortarget'target1'即出现对工程设置的对话框。这个对话框可谓非常复杂,共有8个页面,要全部搞清可不容易,好在绝大部份设置项取默认值就行了1.Target选项卡Xtal后面的数值是晶振频率值,默认值是所选目标CPU的最高可用频率值,对于我们所选的AT89S52而言是24M,该值与最终产生的目标代码无关MemoryModel用于设置RAM使用情况,Small是所有变量都在单片机的内部RAM中;Compact是可以使用一页外部扩展RAM;Larget则是可以使用全部外部的扩展RAM。CodeModel用于设置ROM空间的使用,Small模式,只用低于2K的程序空间;Compact模式,单个函数的代码量不能超过2K,整个程序可以使用64K程序空间;Larget模式,可用全部64K空间。Useon-chipROM选择项,确认是否仅使用片内ROM2.OutPut选项卡CreatHexfile用于生成可执行代码文件(可以用编程器写入单片机芯片的HEX格式文件,文件的扩展名为.HEX),默认情况下该项未被选中,如果要写片做硬件实验,就必须选中该项,这一点是初学者易疏忽的。3.Listing选项卡在汇编或编译完成后将产生(*.lst)的列表文件,在连接完成后也将产生(*.m51)的列表文件,该页用于对列表文件的内容和形式进行细致的调节,其中比较常用的选项是CCompileListing下的AssambleCode项,选中该项可以在列表文件中生成C语言源程序所对应的汇编代码。4.C51选项卡用于对Keil的C51编译器的编译过程进行控制,CodeOptimization组,该组中Level是优化等级,C51在对源程序进行编译时,可以对代码多至9级优化,默认使用第8级,一般不必修改,如果在编译中出现一些问题,可以降低优化级别试一试。3.1.3工程编译、连接在设置好工程后,即可进行编译、连接。Project/Buildtarget,先对该文件进行编译,然后再连接以产生目标代码;从左到右分别是:编译、编译连接、全部重建、停止编译和对工程进行设置。选择图标或Debug/Start/StopDebugSessio

或Ctrl+F5,开始进行软件调试。编译过程中的信息将出现在输出窗口中的Build页中,如果源程序中有语法错误,会有错误报告出现,双击该行,可以定位到出错的位置,对源程序反复修改之后,最终会得到如下图所示的结果,提示获得了名为Text1.hex的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其它相关的文件,可被用于Keil的仿真与调试,这时可以进入下一步调试的工作。3.1.4调试方法选择菜单Debug->Start/StopDebugSession进入软件调试环境,显示界面会有明显的变化,并且多出寄存器监视窗口、内存监视窗口、变量监视窗口等,并弹出调试工具条,我们再次将它列出来,如图3.16所示。1.寄存器窗口点击View菜单,打开寄存器监视窗口Registerswindow,用于监视寄存器R0~R7的变化,并提供监视SP堆栈指针、PC程序计数器指针、PSW程序状态字的变化。2.观察窗口

点击快捷按钮,弹出观察窗口,它主要用于监视变量值的变化,

3.反汇编窗口点击

快捷按钮,弹出反汇编窗口,它主要显示的是C语言代码被编译过后的汇编代码,如图所示4.外围设备窗口点击菜单【Periherals】,选择相应的选项将会弹出以下的窗口,如图3.20~图3.23所示。硬件调试方法(1)硬件电路如果有发二极管的话,可以在代码中加入点亮发光二极管,用于验证代码是否执行到此处。比如,调用某个函数时,是否调用成功,可以在进入函数的开头,加入点亮发光二极管。(2)电路如果有数码管的话,可以在代码中加入数码管显示0—9,用于验证,某一变量的输出值,是否和预期的一样。(3)添加断点:如果用汇编语言的话,可以在程序中,汇编语言加入SJMP$,程序运行的此处就停止了,用于验证某一段代码是否和预期的一样。3.2ISP在线烧录第一步:芯片型号的选择。单片机背面有型号的标注,选择相对应的型号第二步:COM选择,版本不一的STC-IS不能够自己扫描COM的,请打开电脑设备管理器--端口号进行查看,选择相对应的COM口。第三步:打开您所需要的下载到单片机的hex文件第四步:点击下载。会出现如下图提示:正在检测单片机,然后板子重新打开电源上电,重新上电后会出现如下提示等待握手之后,会出现操作成功的提示,如下图。这个时候说明hex文件已经下载到单片机中,正在运行了。3.3实例程序解析reg52.h及其他头文件从上面代码可以看出,该头文件定义了52单片机内部所有的功能寄存器,用到了sfr和sbit两个关键字,C51通常还有reg51.h、math.h、intrins.h、absacc.h、stdio.h、stdlib.h、ctype.h等头文件。其中reg51.h和reg52.h头文件一样,都是定义特殊功能寄存器和位寄存器的,它们中大部分内容是一样的,52单片机比51单片机多一个定时器T2,因此,reg52.h中就比reg51.h中多了几行定义T2寄存器的内容。math.h是定义数学运算的,求方根、正余弦、绝对值等,该头文件中包含各种数学运算函数,当我们需要使用时可以直接调用它的内部函数。intrins.h是固有函数。absacc.h访问特殊功能寄存器的。stdio.h动态内存分配函数。stdlib.h标准库文件函数。3.3.2C语言中注释的写法在C语言中,注释有两种写法:(1)//......,两个斜杠后面跟着的为注释语句。这种写法只能注释一行,当换行时,又必须在新行上重新写两个斜扛。(2)/*...*/,斜扛与星号结合使用,这种写法可以注释任意行,即斜扛星号与星号斜扛之间的所有文字都作为注释。如:#defineucharunsignedchar//定义无符号字符#defineuintunsignedint//定义无符号整数uinti;//定义一个无符号整型变量uchartemp;//定义无符号字符型变量3.3.3main()主函数的写法格式:voidmain()注意:后面没有分号。特点:无返回值,无参数。任何一个单片机C程序有且仅有一个main函数,它是整个程序开始执行的入口。即在一个函数中,所有的代码都写在这个函数的两个大括号内,每条语句结束后

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论