Keil在单片机系统中的应用

时间:2022-06-19 09:23:34

Keil在单片机系统中的应用

内容摘要:简要介绍Keil的基本功能和各个模块特点,通过实例应用对Keil编写源程序、调试、运行和仿真各功能做比较详细的描述。

关键词:Keil;编程;调试;仿真

年来,随着社会对人才素质要求的不断提高和MCU51单片机的广泛应用,社会已形成的学习单片机的热潮,单片机在各行业中已经发挥了重要的作用,相适应的单片机软件开发工具也种类繁多,在高校和业界最广泛应用的是德国Keil Software公司的8051单片机软件开发工具,它可用于众多的8051及派生MCU以实现嵌入式应用开发。

一、系统要求

Keil运行的系统要求相对于现代计算机的主流配置来说是相当之低的,通常为了保证编译器和工具的正常工作的Windows系统必须满足软件和硬件的最低配置为: 100 IBM 兼容386 或以上PC、Windows3.1 版或以上、至少4M 内存、硬盘至少有6MB 磁盘空间。

二、软件开发流程

当使用Keil Software工具时的项目开发流程和其它软件开发项目的流程极其相似:

1.创建一个项目从器件库中选择目标器件配置工具设置 ;2.用C语言或汇编语言创建源程序;3.用项目管理器生成你的应用;4.修改源程序中的错误;5.测试连接应用。

三、开发工具

(一)µVision集成开发环境

µVision IDE(目前使用的版本一般为µVision2或µVision3)是一个基于Windows的开发平台包含一个高效的编辑器、一个项目管理器和一个MAKE工具。µVision有两种操作模式:1.创建模式让你编译应用中所有的文件以产生执行程序; 2.调试模式提供一个非常强劲的调试器你可以用它来调试你的程序。

(二)C51优化的C语言交叉编译器

Keil C51交叉编译器是一个基于ANSI C标准的针对8051系列MCU的C编译器,生成的可执行代码快速、紧凑,在运行效率和速度上可以和汇编程序得到的代码相媲美。

(三)A51宏汇编器

A51是一个8051MCU系列的宏汇编器,它把汇编语言翻译成机器代码。该汇编器的宏特性让公共代码只需要开发一次从而节约了开发和维护的时间源。

(四)BL51具有代码分段功能的连接/重定位器

BL51是具有代码分段功能的连接/重定位器,它组合一个或多个目标模块成一个8051的执行程序。此连接器处理外部和全局数据,并将可重定位的段分配到固定的地址上。

(五)LIB51库管理器

该库管理器让用户建立和维护库文件。一个库文件是格式化的目标模块(由编译器或汇编器产生)的集合。库文件提供了一个方便的方法来组合和使用大量的连接程序可能用到的目标模块,利用µVision项目管理器的Options for Target Output Create Library选项可以建造一个库,也可以从命令行运行LIB51程序命令行参数。

(六)OH51 目标代码到HEX文件的转换器

此转换器为绝对目标模块创建Intel HEX格式的文件。

四、应用举例

下面依托武汉伟福赛思电子有限公司的LabMCU51-X08(KF)单片机实验板,通过设计数码管的0-9每隔1秒跳动循环显示来详细分析Keil编辑源程序、调试、运行、仿真的各功能模块。

(一)算法分析

为了更好实现源代码的编写,在具体编写之前要整理好设计问题的核心算法。该设计涉及3个方面:定时器实现1s计时、数码管显示、0-9的数据查表,通过分析得出该设计的算法流程图:(见图1)

由于现在设计分析处理问题均应有工程理念,所以程序编写第一步应新建工程项目,新建的工程项目名建议能准确描述项目含义,例如该设计问题可命名为DigitalDisplay,工程保存的后缀名为.uv2,接下来Keil环境要求为该工程进行单片机的芯片选型,我们选择Atmel公司的89C51系列,然后工程建立完毕。

接下来新建一个源程序文件,这里我们选用汇编程序代码,保存为文件的后缀名为DisplayLoop.asm(如选用C51程序代码,后缀名为.c)。利用编辑器进行代码编写,编辑器有语法分析功能,不同的语言成分会程序不同的颜色,可帮助用户及时发现错误。代码编写完毕后将源文件添加到项目目录下,具体操作为: 鼠标右键点击 “Source Group 1”,在弹出的菜单中选“Add Files to Group ‘Source Group 1’”:,选择编写的源文件,这样文件就添加到了工程中。

(三)程序运行

源程序编写完成之后,利用Keil的编译器进行编译运行,具体操作为:点击Project->Build Target 或者 点击工具栏的图标。如若程序无语法错误,在Keil的Build Window 会显示 “DigitalDisplay ― 0 Error(s),0 Warning(s)”。由于要将程序最终写入单片机芯片中,所以我们要生成HEX(16进制)文件或BIN(2进制)文件,Keil也提供了这一便利:右键点击“Target 1”,在弹出的菜单中选择“Option for Target 1”,在打开的对话框中选择“Output”选项卡,在选项卡中的“Create HEX File”选项前打勾,Rebuild all target files之后汇编、连接、创建HEX文件一气呵成,在工程中会生成与工程名相同的一些文件,如:DigitalDisplay.hex,这是我们烧入芯片所需要的文件。

(四)调试仿真

如若编写的源程序有语法错误或者写入芯片后,硬件显示出来的效果与预期设计的不一样,即逻辑错误时,我们就需要应用Keil的第二种操作模式:调式模式。点击工具栏的图标或者在菜单栏选择“Start Debug Session”。

而且在实际应用中,如果每次将程序写入芯片来进行操作会增加操作成本,比如我们所使用的AT89S52的重复烧写次数为1000次左右,芯片的批发单价在7.5元/片,当程序较长逻辑较复杂时,重复烧写是不经济的,所以利用Keil的仿真功能是很重要的。Keil中可仿真的设备有:Interrupt System(中断系统)、I/O-Ports(I/O口)、Serial(串口)、Timer(定时器)。仿真可分为软件模拟仿真和硬件仿真,两者区别在于前者不需要外接任何硬件,只是在PC机上用纯软件的形式模拟目标程序的运行,后者需要外接仿真器和目标系统。µVision可提供的调试手段有:CPU程序计数器复位(Reset CPU)、连续运行直到断点或程序结束(Go)、停止运行(Stop Running)、单步运行(Step)、单步跨越(Step Over)等。以本项目为例,进入调试模式后(如图5),调出“Memory Window”和Peripherals中的“Timer-Timer 0”,接着单步运行程序,首先可通过存储器窗口观察到查表存数据的过程,同时关注左边寄存器窗口各所用到的寄存器值的变化是否符合自身事先的设计变化思路;接下来程序依次选择了定时器0的工作方式、设置定时器初值、开启中断后开始计数、进入等待中断。我们可以来观看Timer/Counter窗口,当定时器开始计数后,“TR0”被选中,“Status”中内容由“Stop”转变为“Run”,T0由4C00H计数到达FFFFH,再经过1个机器周期,计数溢出,“TF0”被置1,选项被选中(我们也可手动选中该项,使T0的中断请求位TF0置1),产生中断信号,程序从定时器0的中断向量入口地址000BH进入,执行显示的中断服务子程序。由此可见Keil在模拟仿真设备的优越性和对于程序调试的便利性。

五、结语:

本文通过Keil在单片机系统中的具体应用实例将其功能模块做了较详细的介绍,将其把单片机原理的学习和实践可以很好的贯穿起来,充分发挥“理论指导实践,实践带动理论”的教育教学方式。

参考文献:

[1]陈涛.单片机应用及C51程序设计[M].机械工业出版社,2008.

[2]潘永雄.新编单片机原理与应用实验[M].西安:西安电子科技大学出版社,2005

[3]LabMCU51-X08(KF)使用手册[C].武汉伟福赛思电子有限公司

[4]8051演示套件[C].广州周立功单片机发展有限公司

上一篇:满怀信心迎挑战 敢叫农村更欢颜 下一篇:浅谈机场危机管理