购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

任务2
Keil C51编译软件的使用

Keil C51标准C编译器是众多单片机应用开发优秀软件之一,它集编辑、编译、仿真于一体,支持基于汇编语言、PLM语言和C语言的程序设计,界面友好,易学易用。本任务通过P1端口输入、P0端口输出实验为例,简单介绍Keil C51软件的基本操作方法。

1.Keil C51软件基本操作

1 启动Keil C51软件 双击桌面Keil μVision5快捷图标,弹出如图1-5所示的画面。之后,进入μVision5集成开发环境,如图1-6所示。

2 创建一个新的工程项目 在图1-6所示界面中,执行菜单命令“Project”→“Close Project”,关闭已打开的项目。执行菜单命令“Project”→“New μVision Project”,弹出“Create New Project”对话框,在此对话框中选择保存路径,并输入项目名称,如图1-7所示。

输入项目名称后,单击“保存”按钮,弹出“Select Device for Target'Target 1'…”对话框,如图1-8所示。Keil μVision5中没有 STC 单片机型号,可以用Intel公司的8052/87C52/87C54/87C58、Atmel公司的AT89C51/52/55/55WD或NXP公司的P87C52/P87C54/P87C58/P87C51RD+等替代。在图1-8中将其当作Atmel公司的AT89C51RC。

图1-5 启动Keil μVision5时的画面

图1-6 μVision5集成开发环境

图1-7 “Create New Project”对话框

选择目标芯片后,单击“OK”按钮,弹出如图1-9所示的对话框,询问用户是否将标准的8051启动代码复制到项目文件夹并将该文件添加到项目中。在此单击“否”按钮,项目窗口中将不添加启动代码;若单击“是”按钮,项目窗口中将添加启动代码。这二者的区别如图1-10所示。

图1-8 “Select Device for Target'Target 1'…”对话框

图1-9 询问是否添加启动代码对话框

图1-10 是否添加启动代码的区别

3 新建C51源程序文件 创建新的项目后,执行菜单命令“File”→“New”,或者在工具栏中单击 图标,将打开一个空的文本编辑窗口。在此窗口中输入以下源程序代码:

源程序输入好后,执行菜单命令“File”→“Save”,弹出“保存”对话框。在此对话框中输入保存的文件名称,保存时后缀名为.c。在项目窗口的“Target1”→“Source Group 1”上单击鼠标右键,在弹出的菜单中选择“Add Existing Files to Group'Source Group 1'”,然后选择刚才保存的源程序文件,单击“ADD”按钮,即可将其添加到项目中,如图1-11 所示。

4 编译文件 添加源程序文件后,执行菜单命令“Project”→“Build target”,或者在工具栏中单击 图标,进行源程序的编译。编译完成后,μVision5将会在输出窗口(Output Window)的编译页(Build)中显示相关信息。如果编译的程序有语法错误,双击错误信息,光标将会停留在μVision5文本编辑窗口中出现该错误或警告的源程序位置上。修改好源程序代码后,再次执行菜单命令“Project”→“Build target”,或者在工具栏中单击 图标,对源程序重新进行编译。

5 HEX文件的生成 写入51系列单片机中的文件一般为.HEX文件。要得到.HEX文件,在Keil中需进行相关设置。执行菜单命令“Project”→“Options for Target'Target 1'”,或者在工具栏中单击 图标,然后在弹出的“Options for Target'Target 1'”对话框中选择“Output”选项卡,选中“Create HEX File”选项即可,如图1-12所示。

图1-11 在项目中添加源程序文件

图1-12 选中“Create HEX File”选项

设置好后,再次进行编译,如果源程序文件没有语法错误或警告提示时,将会在编译输出窗口(Build Output)中显示已创建一个以.HEX为后缀名的目标文件,如图1-13所示。

图1-13 提示已生成.HEX目标文件

2.Keil程序调试与分析

1 寄存器和存储器窗口分析 执行菜单命令“Debug”→“Start/Stop Debug Session”或在工具栏中单击 图标,即可进入调试状态。执行菜单命令“Debug”→“Run”,或者单击 图标,即可全速运行源程序。

在源程序运行过程中,可以通过存储器窗口(Memory Window)来查看存储区中的数据(若在调试状态下没有此窗口,可执行菜单命令“View”→“Memory Window”,或者单击 图标将其打开)。在存储器窗口的上部,有供用户输入存储器类型的起始地址的“Address”栏,用于设置关注对象所在的存储区域和起始地址,如“D:0x30”。其中,前缀表示存储区域,冒号后为要观察的存储单元的起始地址。常用的存储区前缀有d或D(表示内部RAM的直接寻址区)、i或I(表示内部RAM的间接寻址区)、x或X(表示外部RAM区)、c或C(表示ROM区)。由于P0端口属于SFR(特殊功能寄存器),片内RAM字节地址为80H,所以在“Address”栏中输入“D:0x80”时,可查看P0端口的当前运行状态,如图1-14 所示。

图1-14 存储器窗口

2 延时函数的调试与分析 在源程序编辑状态下,执行菜单命令“Project”→“Options for Target'Target 1'”,或者在工具栏中单击 图标,然后在弹出的对话框中选择“Target”选项卡,在“Xtal(MHz):”栏中输入12(即设置单片机的晶振频率为12MHz)。在工具栏中单击 图标,对源程序再次进行编译。在源程序中,分别在delayms函数的起始行与结束行前双击,即设置了两个断点。执行菜单命令“Debug”→“Start/Stop Debug Session”,或者在工具栏中单击 图标,进入调试状态。刚进入调试状态时,项目工作区(Project Workspace)“Registers”选项卡的“Sys”项中sec值为0.00039700,如图1-15(a)所示,表示进入调试花费了0.00039700s。单击 图标后,“Sys”项的sec值为0.00186800,如图1-15(b)所示。因此,此函数的延时时间为二者之差,即0.00147100s。

图1-15 项目工作区

3 P0 P1 P3端口运行模拟分析 在工具栏中单击 图标,退出延时函数的调试状态,重新回到源程序编辑状态,单击 图标,取消全部已设置的断点。

执行菜单命令“Debug”→“Start/Stop Debug Session”,或者在工具栏中单击 图标,进入调试状态。

执行菜单命令“Peripherals”→“I/O Ports”→“Port 0”,弹出“Parallel Port 0”窗口。依此操作还可以弹出“Parallel Port 1”窗口和“Parallel Port 3”窗口。在“Parallel Port 1”窗口中改变P1.0的状态,可以观察到“Parallel Port 0”窗口和“Parallel Port 3”窗口的状态也将发生相应的改变。 4tJBIJUy0bZPzS5Uj6g6J/XWtbmj6soUKwxpFdz5HS8OdzDqi0wo9/5+1TcZ+bPj

点击中间区域
呼出菜单
上一章
目录
下一章
×