电子工程师自学宝典:嵌入设计篇
上QQ阅读APP看书,第一时间看更新

3.2 程序的编写与编译

3.2.1 启动Keil C51软件并新建工程文件

扫一扫看视频

1. Keil C51软件的启动

Keil C51软件安装完成后,双击计算机屏幕桌面上的“Keil μVision2”图标,或单击计算机屏幕桌面左下角的“开始”按钮,在弹出的菜单中执行“程序”→“Keil μVision2”,就可以启动Keil μVision2,启动后的Keil μVision2软件窗口如图3-1所示。

2.新建工程文件

在用Keil μVision2软件进行单片机程序开发时,为了便于管理,需要先建立一个项目文件,用于管理本项目中的所有文件。在Keil μVision2软件新建工程文件的操作过程见表3-1。

图3-1 启动后的Keil μ Vision2软件窗口

表3-1 在Keil μ Vision2软件新建工程文件的操作说明

(续)

3.2.2 新建源程序文件并与工程进行关联

新建工程完成后,还要在工程中建立程序文件,并将程序文件保存后再与工程关联到一起然后就可以在程序文件中用C语言或汇编语言编写程序。

新建源程序文件并与工程关联起来的操作过程如下:

1)新建源程序文件。在Keil μVision2软件窗口中执行菜单命令“File”→“New”,即新建了一个默认名称为“Text 1”的空白文件,同时该文件在软件窗口中打开,如图3-2所示。

图3-2 新建源程序文件

2)保存源程序文件。单击工具栏上的工具图标,或执行菜单命令“File”→“Save As”,弹出图3-3所示“Save As”对话框。在对话框中打开之前建立的工程文件所在的文件夹,再将文件命名为“一个按键控制一只LED亮灭.c”(扩展名.c表示为C语言程序,不能省略),单击“保存”按钮即将该文件保存下来。

3)将源程序文件与工程关联起来。新建的源程序文件与新建的项目没有什么关联,需要将它加入到工程中。展开工程管理器的“Target 1”文件夹,在其中的“Source Group 1”文件夹上单击鼠标右键,在弹出的快捷菜单中选择“Add Files to Group’Source Group 1’”项,会出现图3-4所示的加载文件对话框,在该对话框中选文件类型为“C Source file(*.c)”,找到刚新建的“一个按键控制一只LED亮灭.c”文件,再单击“Add”按钮,该文件即被加入到项目中,此时对话框并不会消失,可以继续加载其他文件,单击“Close”按钮关闭对话框。在Keil软件工程管理器的“Source Group1”文件夹中可以看到新加载的“一个按键控制一只LED亮灭.c”文件,如图3-5所示。

图3-3 保存源程序文件

图3-4 在对话框中选择要加载的文件

3.2.3 编写程序

编写程序有两种方式:一是直接在Keil软件的源程序文件中编写;二是用其他软件(如Windows操作系统自带的记事本程序)编写,再加载到Keil软件中。

图3-5 程序文件被加载到工程中

1.在Keil软件的源程序文件中编写

在Keil软件窗口左边的工程管理器中选择源程序文件并双击,源程序文件被Keil软件自带的程序编辑器(文本编辑器)打开,此时便可在程序编辑器中用C语言编写单片机控制程序,如图3-6所示。

图3-6 在Keil软件自带的程序编辑器中用C语言编写程序

2.用其他文本工具编写程序

Keil软件的程序编辑器实际上是一种文本编辑器,在输入中文时,有时会出现文字残缺现象。编程时也可以使用其他文本编辑器(如Windows操作系统自带的记事本)编写程序,再将程序加载到Keil软件中进行编译、仿真和调试。

用其他文本工具编写并加载程序的操作如下:

1)用文本编辑器编写程序。打开Windows自带的记事本,在其中用C语言(或汇编语言)编写程序,如图3-7所示。编写完后将该文件保存下来,文件的扩展名为.c(或.asm),这里将文件保存为“1KEY_1LED.c”。

图3-7 用Windows自带的记事本编写单片机控制程序

2)将程序文件载入Keil软件与工程关联。打开Keil软件并新建一个工程(如已建工程,本步骤忽略),再将“1KEY_1LED.c”文件加载进Keil软件与工程关联起来。程序载入完成后,在Keil软件的工程管理器的Source Group 1文件夹中可看到加载进来的“1KEY_1LED.c”文件,双击可以打开该文件。

3.2.4 编译程序

用C语言(或汇编语言)编写好程序后,程序还不能直接写入单片机,因为单片机只接受二进制数,所以要将C语言程序转换成二进制或十六进制代码。将C语言程序(或汇编语言程序)转换成二进制或十六进制代码的过程称为编译(或汇编)

C语言程序的编译要用到编译器,汇编语言程序要用到汇编器,51系列单片机对C语言程序编译时采用C51编译器,对汇编语言程序汇编时采用A51汇编器。Keil软件本身带有编译器和汇编器,在对程序进行编译或汇编时,会自动调用相应的编译器或汇编器。

1.编译或汇编前的设置

在Keil软件中编译或汇编程序前需要先进行一些设置。设置时,执行菜单命令“Project”→“Options for Target′Target 1′”,如图3-8a所示,弹出图3-8b所示的对话框,该对话框中有10个选项卡,每个选项卡中都有一些设置内容,其中“Target”和“Output”选项卡较为常用,默认打开“Target”选项卡,这里保持默认值。单击“Output”选项卡,切换到该选项卡,如图3-8c所示,选中“Create HEX Fi”项并确定关闭对话框。设置时选中“Create HEX Fi”项的目的是让编译或汇编时生成扩展名为.hex的十六进制文件,再用烧录软件将该文件烧录到单片机中。

2.编译或汇编程序

编译设置结束后,在Keil软件窗口执行菜单命令“Project”→“Rebuild all target files(重新编译所有的目标文件)”,也可以直接单击工具栏上的图标,Keil软件自动调用C51编译器将“一个按键控制一只LED亮灭.c”文件中的程序进行编译。编译完成后,在软件窗口下方的输出窗口中可看到有关的编译信息,如果出现“0 Error(s),0 Warning(s)”,表示程序编译没有问题(至少在语法上不存在问题);如果存在错误或警告,要认真检查程序,修改后再编译,直到通过为止。

程序编译完成后,打开工程文件所在的文件夹,会发现生成了一个“一个按键控制一只LED亮灭.hex”文件。该文件是由编译器将C语言程序“一个按键控制一只LED亮灭.c”编译成的十六进制代码文件,双击该文件系统会调用记事本程序打开它,可以看到该文件的具体内容,如图3-9所示。在单片机烧录程序时,用烧录软件载入该文件并转换成二进制代码写入单片机。

图3-8 编译或汇编程序前进行的设置

图3-9 “一个按键控制一只LED亮灭.hex”文件的内容