![基于Proteus和Keil的C51程序设计项目教程(第2版):理论、仿真、实践相融合](https://wfqqreader-1252317822.image.myqcloud.com/cover/785/36511785/b_36511785.jpg)
1.4 任务1:Keil C应用入门——单片机输出“Hello C51”
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_21_2.jpg?sign=1739041191-jlPlP3dzu6wHe6UOj1LlpT68LtUk35Ad-0-00e33041d2250577c6118f38f6022c61)
为快速入门,下面以简单实例来讲述Keil的应用。本节假设读者已正确安装了Keil,并已在桌面上建立了快捷方式图标。
1.4.1 建立工程、设计程序、编译
1.进入KeilμVision
双击快捷方式图标,则出现如图1-4所示的KeilμVision工作界面。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_22_2.jpg?sign=1739041191-R4YJKqHyYTEo4hZI33ysT06jouik5NRZ-0-3c381a9632dc199bf55611a4b0d6aedd)
图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所示,要求选择用于工程的某型号单片机。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_22_4.jpg?sign=1739041191-ubdC5CwKOtMawdRfAsN2F8KlusVjGGnd-0-bf63a2397506c1a8332cb2c39df7ed95)
图1-5 新建工程及保存工程(建议保存在自己的文件夹中)
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_23_1.jpg?sign=1739041191-FsoQbBNa0Pfddek53aIsPdm1lBoNFdSE-0-623d25956c755d2b12da2199b92e7dd0)
图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仿真。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_23_2.jpg?sign=1739041191-SsBeWYJI6ro7qOwdo07wgY6RG5Mpfovr-0-8923ce3abb42ca04f244c08d5f7af820)
图1-7 不选择启动代码
4.新建源程序并保存: →
执行菜单命令“File”→“New”或单击工具按钮
,弹出一个文本编辑窗口,单击工具栏中的
按钮,弹出如图1-8所示对话框,将其保存在与工程同一文件夹中(保存路径默认为当前工程的路径),在文件名一栏中输入源程序名(如hello.c,注意要加.c后缀),单击对话框中的“保存”按钮,保存C源程序文件。在hello.c的文本窗口内编写、保存源程序。程序内容如下:
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_23_7.jpg?sign=1739041191-m8rixChwKwbg5rU9oYdYQDYMYUBaQRKD-0-8a8569ec3fad893283dd0f02019ef381)
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_24_1.jpg?sign=1739041191-VH8y6Mbx6yJCTKSIVANixNkQFZHQG76j-0-f5534131fdf763e782444d57317aad7c)
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_24_2.jpg?sign=1739041191-V4gNT8sZaaaAIVI7zlSZrhUqzBMYLOYQ-0-c8b4f3c42efd72637b069e86c6b772c3)
图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中。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_24_4.jpg?sign=1739041191-t4B3YlRAFJIeYFAIMuz3Xd7P8AWSL2NJ-0-ada7953b41776b106427b31d68c7f5b6)
图1-9 在工程管理窗口添加文件的命令
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_25_1.jpg?sign=1739041191-ct4nMv6JqD1NGshd5wHC3HQ5YgXYFHXz-0-803168e13849dc3623ae4da0f6095515)
图1-10 在工程管理窗口添加文件
6.设置Keil工程目标选项
单击工具按钮魔术棒,可打开工程设置对话框,如图1-11所示;或操作菜单“Project”→“Option for Target‘Target1’”,出现对工程设置的对话框。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_25_4.jpg?sign=1739041191-RkkMSlo0pPMThmhaGegWLDW8XEo6Phj4-0-8e5e8b9abb9e42239e0e284fe3af4978)
图1-11 工程设置对话框
该对话框有10个选项卡,如图1-11所示,当前选项卡为“Target”。一般应用设置其中几项即可。
(1)设置用Keil模拟调试时的晶振频率:在“Target”选项卡的栏中填写振荡频率。根据本项目实际使用的振荡频率,设置为11.0592MHz,如图1-11所示。
(2)开启生成*.HEX代码选项:在“Output”选项卡,勾选,表示编译后输出格式为HEX的代码文件,也可在
栏输入新的代码文件名,一般代码文件名同工程名,如图1-12所示。编译后生成的目标代码文件为HELLO.HEX。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_25_8.jpg?sign=1739041191-C8GjMwwNFsv86ajMv6s0CNJzKijBZPNR-0-3d46c19156f37179090415211f9de5ea)
图1-12 “Output”选项卡中的设置
(3)调试工具选择:在“Debug”选项卡设置调试工具,默认为“Use Simulator”,即Keil软件仿真器。此处只用到本软件仿真器,所以保持原默认设置即可,如图1-13所示。右侧可选择本软件外的其他硬件或软件模拟仿真器。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_26_1.jpg?sign=1739041191-ULIWLw70tYhztV3UPXANHUFIXQ5cLwnF-0-092e3a748a59ba5b55e53167c6f2d1fb)
图1-13 “Debug”选项卡中的设置
对Keil工程设置好后,单击“确定”按钮,完成设置,并返回到图1-10所示的界面。
7.源程序编译
单击工具栏中的两个按钮之一,生成目标代码。两个按钮的含义如下。
● 汇编/编译修改过的文件,生成目标代码文件*.HEX,并建立链接。
● 不管是否修改过,全部重新汇编/编译生成目标代码文件*.HEX,并建立链接。
汇编/编译后弹出汇编信息输出窗口,如果成功,则输出窗口如图1-14所示;如果源程序有错误,则信息输出窗口如图1-15所示,并提示错误。双击错误提示行,有橄榄绿色光标出现在错误附近,如图1-15第11行多了个“,”。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_26_6.jpg?sign=1739041191-hr2a43ryduakdhpTQN2reP8xAh2N9JJO-0-c966132abf7404f4c1bf47ca9b442d68)
图1-14 编译成功
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_26_7.jpg?sign=1739041191-knI1RtjL9iJjuw7oXodnJaV6YRNLTPce-0-7e98b43639e16379223e73c691d90bcd)
图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所示。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_27_1.jpg?sign=1739041191-QUQBpP0mlxPdkyWJqdCHI6GHg5mM44Yw-0-a5e134da2939eeab4179cff974a8ef98)
图1-16 进入调试状态,出现调试工具栏
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_27_2.jpg?sign=1739041191-sTgwAd1zgCRitGl6b2QqjeWZ0oW5iCrx-0-27ac25f613ec0e2202b324f407747088)
图1-17 常用调试命令图标说明及其快捷键
2.打开串行窗口1
单击,会弹出串口1的窗口,如图1-18(a)所示。在有多个串口的单片机中,单击串口图标右侧的黑三角,则可选择其他串口来观测,如图1-18(b)所示。在串行窗口打开的情况下,再单击
,则会关闭串行窗口。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_28_1.jpg?sign=1739041191-YuenhRGMMLaHiNLU1HmrqCM2k7oxl5ji-0-364a054740ba58a38937707c7fee99f6)
图1-18 串行窗口
3.复位
单击工具按钮,复位。
4.全速运行
单击工具按钮或快捷键F5,则可以全速执行程序,停止工具按钮
由灰色变为红色
,运行按钮也变灰
,即表示正在不间断地执行程序指令。本HELLO工程全速运行,在串行窗口1
输出“Hello C51”,如图1-19所示。最后程序停在“while(1);”语句上。若要停止运行,单击停止工具按钮,它将由红色
变成灰色
。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_28_10.jpg?sign=1739041191-WhfxsNWB8bxbL0zAehMnGkHeh1QnTwYh-0-83b8fa17b90bbbfd82b0d8e2f95d8528)
图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”表示)。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_29_1.jpg?sign=1739041191-HeHWB6RWx1Y8fyfoA18SmITwd9dmv0JN-0-705c1b0e0779c65a5568d975693643e2)
图1-20 其他常用辅助调试的窗口
如要在Memory 1查看ROM从地址0起始的代码,可设置起始地址:。
② 直接寻址的片内空间(片内RAM,用“D”表示)。
如要在Memory 2查看DATA的0x30地址的内容,可设置起始地址:。
③ 间接寻址的片内存储空间(用“I”表示)。
④ 片外扩展RAM存储空间(用“X”表示)。
(3)开关工程管理窗口。工程管理窗口通过如图1-21所示的工具按钮来开关,也可通过菜单“View”来开关。想要查看Keil软件的用户手册,参照图1-22来操作。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_29_5.jpg?sign=1739041191-ot9RvA31vaaAaA5ZhECLXvv6YX9sXsbC-0-eab701c9143414189d77c220b80fa8ce)
图1-21 工程管理窗口的开关操作
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_29_6.jpg?sign=1739041191-9kL2qjpcjcOLeLBREPt050kDYa9cRJNn-0-b1f66fb5add0e934ba33d17aa6ac2b55)
图1-22 在工程管理窗口的“Books”中查看Keil软件用户手册