1.4 任务1:Keil C应用入门——单片机输出“Hello C51”
为快速入门,下面以简单实例来讲述Keil的应用。本节假设读者已正确安装了Keil,并已在桌面上建立了快捷方式图标。
1.4.1 建立工程、设计程序、编译
1.进入KeilμVision
双击快捷方式图标,则出现如图1-4所示的KeilμVision工作界面。
图1-4 KeilμVision工作界面
单击图标,可开/关工程管理窗口。
2.建文件夹,建立工程
先建自己的文件夹。在文件路径、文件夹、文件名中,尽量不要出现中文。
执行菜单命令“Project”→“New μVision Project”,弹出如图1-5所示对话框。先选择保存路径(若要创建文件夹,可单击图1-5中的“新建文件夹”按钮,并命名),为工程取名(如HELLO),单击“保存”按钮,则名为HELLO.uvproj(若使用uv4以前的版本的KeilμVision,则工程后缀是uv2)的工程文件存盘。随即弹出“Select Device for Target‘Target 1’”对话框,如图1-6所示,要求选择用于工程的某型号单片机。
图1-5 新建工程及保存工程(建议保存在自己的文件夹中)
图1-6 选型:Atmel公司的单片机AT89C51
3.选择项目工程使用的单片机型号
如图1-6所示,双击左侧单片机选择框中的“Atmel”,则列出Atmel公司生产的各种型号的单片机,选中AT89C51再单击“OK”按钮,则选好单片机AT89C51,并返回工作界面。
注意:对于弹出的提示框“Copy Standard 8051 Startup Code to Project Folder and Add File to Project?”,单击“否”按钮,如图1-7所示,以便于Proteus仿真。
图1-7 不选择启动代码
4.新建源程序并保存: → 执行菜单命令“File”→“New”或单击工具按钮,弹出一个文本编辑窗口,单击工具栏中的按钮,弹出如图1-8所示对话框,将其保存在与工程同一文件夹中(保存路径默认为当前工程的路径),在文件名一栏中输入源程序名(如hello.c,注意要加.c后缀),单击对话框中的“保存”按钮,保存C源程序文件。在hello.c的文本窗口内编写、保存源程序。程序内容如下:
图1-8 编辑源程序并保存
5.将源程序文件添加到工程中
单击工程管理窗口中的文件夹“Target 1”前的加号,出现下层文件夹“Source Group1”,右击“Source Group1”,弹出菜单,如图1-9所示。右击菜单中的“Add Existing Files to Group…”,在弹出的对话框(见图1-10)中单击文件类型栏右端的下拉列表确认文件类型,再选择已有的C文件双击;或直接输入源程序文件名,如hello.c,单击“Add”按钮,接着再单击“Close”按钮,则将源程序文件hello.c添加到工程hello.uvproj中。
图1-9 在工程管理窗口添加文件的命令
图1-10 在工程管理窗口添加文件
6.设置Keil工程目标选项
单击工具按钮魔术棒,可打开工程设置对话框,如图1-11所示;或操作菜单“Project”→“Option for Target‘Target1’”,出现对工程设置的对话框。
图1-11 工程设置对话框
该对话框有10个选项卡,如图1-11所示,当前选项卡为“Target”。一般应用设置其中几项即可。
(1)设置用Keil模拟调试时的晶振频率:在“Target”选项卡的栏中填写振荡频率。根据本项目实际使用的振荡频率,设置为11.0592MHz,如图1-11所示。
(2)开启生成*.HEX代码选项:在“Output”选项卡,勾选,表示编译后输出格式为HEX的代码文件,也可在栏输入新的代码文件名,一般代码文件名同工程名,如图1-12所示。编译后生成的目标代码文件为HELLO.HEX。
图1-12 “Output”选项卡中的设置
(3)调试工具选择:在“Debug”选项卡设置调试工具,默认为“Use Simulator”,即Keil软件仿真器。此处只用到本软件仿真器,所以保持原默认设置即可,如图1-13所示。右侧可选择本软件外的其他硬件或软件模拟仿真器。
图1-13 “Debug”选项卡中的设置
对Keil工程设置好后,单击“确定”按钮,完成设置,并返回到图1-10所示的界面。
7.源程序编译
单击工具栏中的两个按钮之一,生成目标代码。两个按钮的含义如下。
● 汇编/编译修改过的文件,生成目标代码文件*.HEX,并建立链接。
● 不管是否修改过,全部重新汇编/编译生成目标代码文件*.HEX,并建立链接。
汇编/编译后弹出汇编信息输出窗口,如果成功,则输出窗口如图1-14所示;如果源程序有错误,则信息输出窗口如图1-15所示,并提示错误。双击错误提示行,有橄榄绿色光标出现在错误附近,如图1-15第11行多了个“,”。
图1-14 编译成功
图1-15 编译不成功
1.4.2 Keil的初步调试:查看串口输出“Hello C51”
1.单击 进入/退出调试状态
单击工具栏中工具按钮(或执行菜单命令“Debug”→Start/Stop Debug Session”),进入调试状态,工作界面有明显的变化。工程管理窗口中显示出寄存器窗口,有常用的寄存器,如r0、r1…r7、a、b、dptr、sp、psw、pc等;工具栏中多出一个与调试有关的工具栏,如图1-16所示。常用的调试命令图标说明及其快捷键如图1-17所示。
图1-16 进入调试状态,出现调试工具栏
图1-17 常用调试命令图标说明及其快捷键
2.打开串行窗口1
单击,会弹出串口1的窗口,如图1-18(a)所示。在有多个串口的单片机中,单击串口图标右侧的黑三角,则可选择其他串口来观测,如图1-18(b)所示。在串行窗口打开的情况下,再单击,则会关闭串行窗口。
图1-18 串行窗口
3.复位
单击工具按钮,复位。
4.全速运行
单击工具按钮或快捷键F5,则可以全速执行程序,停止工具按钮由灰色变为红色,运行按钮也变灰,即表示正在不间断地执行程序指令。本HELLO工程全速运行,在串行窗口1输出“Hello C51”,如图1-19所示。最后程序停在“while(1);”语句上。若要停止运行,单击停止工具按钮,它将由红色变成灰色。
图1-19 在串口1输出“Hello C51”
5.退出模拟运行
单击,退出调试。再次单击又进入调试状态。
提示:若修改了程序,必须先退出调试状态,编译无误后重新进行调试。
6.其他调试窗口
(1)反汇编窗口。单击工具按钮,弹出反汇编窗口Disassembly,如图1-20(a)所示,从该窗口中可看到对应汇编语言程序行的机器码(程序目标代码)及其在ROM中的安排。
(2)存储器窗口。单击工具按钮,弹出存储器1窗口。如图1-20(b)所示,单击图标上的黑三角,可从弹出的4组窗口(Memory 1、Memory 2、Memory 3、Memory 4)中选其一。通过设置可观察不同的存储空间,设置方式为
存储空间代码:起始地址编号
地址编号可以是十进制数或十六进制数。
① 代码存储空间(ROM,用“C”表示)。
图1-20 其他常用辅助调试的窗口
如要在Memory 1查看ROM从地址0起始的代码,可设置起始地址:。
② 直接寻址的片内空间(片内RAM,用“D”表示)。
如要在Memory 2查看DATA的0x30地址的内容,可设置起始地址:。
③ 间接寻址的片内存储空间(用“I”表示)。
④ 片外扩展RAM存储空间(用“X”表示)。
(3)开关工程管理窗口。工程管理窗口通过如图1-21所示的工具按钮来开关,也可通过菜单“View”来开关。想要查看Keil软件的用户手册,参照图1-22来操作。
图1-21 工程管理窗口的开关操作
图1-22 在工程管理窗口的“Books”中查看Keil软件用户手册