一、μVision2界面介绍
Keil软件是众多单片机应用开发软件中的优秀软件之一,它支持众多不同公司的MCS-51架构的芯片,它集编辑,编译,仿真等功能于一体,同时还支持汇编和C语言的程序设计,在调试程序,软件仿真方面也有很强大的功能。
首先启动Keil软件的集成开发环境。可以从桌面上直接双击KeilμVision2的图标以启动该软件,也可以从开始—程序列表中启动,启动KeilμVision2后界面如图3.7所示。μVision2的界面包括标题栏、主菜单、快捷工具栏、编辑窗口、管理窗口和信息窗口等。
二、创建一个μVision2应用项目
1.启动uVision2并创建一个项目
启动μVision2后,点击Project菜单,选择弹出的下拉式菜单中的New Project,将打开一个标准的Windows对话框,如图3.8所示。此对话框选择项目存放位置并输入项目文件名,如test,默认的扩展名为“.uv2”。
输入项目名称保存后,自动弹出选择CPU的对话框。点击“Atmel”前面的“+”号,选择该公司的AT89C51单片机,此时屏幕如图3.9所示。在图中右边区域就会对所选择芯片的硬件配置进行简单的介绍。
图3.7 μVision2界面
图3.8 新建项目窗口
图3.9 单片机型号选择窗口
2.新建并保存一个源程序文件
点击图3.10中标号为1的新建文件的快捷按钮,也可以通过菜单选项File→New实现,将打开一个空的编辑窗口,如图3.10中标号为2的地方,在该窗口输入源程序(chengxu3_1.asm)如下:
图3.10 新建源程序文件窗口
ORG 0000H
MOV A,#0FEH ;下行初值
MOV P1,A
MOV R2,#7
DOWN:RL A ;下行方向
ACALL DEL50
MOV P1,A
DJNZ R2,DOWN
MOV R2,#7
UP:RR A ;上行方向
ACALL DEL50
MOV P1,A
DJNZ R2,UP
MOV R2,#7
SJMP DOWN
DEL50:MOV R7,#200 ;延时50ms
DEL1:MOV R6,#125
DJNZ R6,
DJNZ R7,DEL1
RET
END
在录入程序的过程中要注意以下问题:
(1)C51编译器是忽略空格的,因此语句“MOV P1,A”和语句“MOV P1, A”是等价的,但C51对大小写敏感,“P1”和“p1”将是不同的内容。
(2)“;”及其后面的内容为注释,对语句功能没有任何影响,可以不录入。除注释以外的其他地方所使用的标点符号必须在英文状态下录入。
(3)不要将数字“0”和字母“o、O”、数字“1”和字母“l”混淆。
点击图3.10中的标识3的快捷按钮保存新建的程序,也可以用菜单File→Save进行保存。在弹出的保存文件窗口中,输入文件名chengxu3_1.asm。
注意:录入的源程序文件为c语言的,必须加上扩展名“.c”,如果是汇编语言程序,必须使用扩展名“.asm”。不论是项目名还是源程序文件名都可以任意选取,两者可以相同,也可以不同,但最好具有一定含义,并符合Windows文件命名规则,还有就是最好将它们保存在同一目录下。
保存后,程序中的指令将会呈现不同的颜色,说明Keil的语法检查生效了。任何语言都有自己的语法要求及习惯,如汉语中某人说“饭吃我”,就不符合语法习惯。同样的,汇编语言或C51都有自己的语法要求,对于初学者往往不注意细节,不遵从相应的语法要求,从而不能成功编译。
3.将源文件加入到项目中
如图3.11所示,鼠标右键点击Source Group1文件夹图标,在出现的快捷菜单中选择Add File to Group‘Source Group 1’添加源文件。弹出文件窗口,选择刚刚保存的文件,按ADD按钮,程序文件加到项目后关闭该窗口。这时在Source Group1文件夹图标左边出现了一个小+号,说明文件组中有了文件,点击它可以展开查看。
图3.11 添加源文件到项目
4.工程的设置
工程建立好以后,要对工程进行进一步的设置,以满足要求。点击快捷按钮即出现对工程设置的对话框Option for target‘target1’。该对话框共有8个页面,可以定义目标硬件及所选器件的片上元件相关的所有参数,绝大部份设置项都可以选取默认值。
设置对话框中的Output页面,如图3.12所示。图中1是选择编译输出的路径,2是设置编译输出生成的文件名,3则是决定是否要创建HEX文件(可以用编程器写入单片机芯片的HEX格式文件,文件的扩展名为.HEX),选中它编译工程时就可以自动生成HEX文件到指定的路径中。设置完成后按确认返回主界面,工程文件建立、设置完毕。
图3.12 工程设置窗口
5.编译
在图3.13图中1、2、3都是编译按钮,不同是1是用于编译单个文件。2是编译当前项目,如果先前编译过一次之后文件没有做编辑改动,这时再点击是不会再次重新编译的。3是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。在3右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。也可以利用菜单Project进行编译,见图中标识5的地方。
这个项目只有一个文件,按1、2、3中的哪一个都可以编译。编译后,在图3.13中标识4的地方可以看到编译的信息和使用的系统资源情况等。如果严格按C51语法要求录入源程序chengxu3_1.c,则会成功编译。
图3.13 编译窗口
首次录入程序,可能会有错误,如故意将程序test.c中的while输入为While,则编译时将会捕获错误,并显示提示信息,如:
.\CHENGU2_1_1.C(10):WARNING C206:′While′:missing function-prototype
.\CHENGU2_1_1.C(10):ERROR C267:′While′:requires ANSI-style prototype
.\CHENGU2_1_1.C(11):ERROR C141:syntax error near′{′
Target not creat
其实只有一个错误语句,编译器却提供了多条信息。第二条消息指示程序的第10行存在错误,此时用鼠标左键双击该消息行,一般情况下便可以将光标定位到源程序中出错的位置。有时需要多次修改、编译,直到成功为止。编译连接后产生目标代码test.hex,该文件即可被编程器读入并写到芯片中。
三、基于Proteus和Keil C的联合开发
下面以一个单片机LED闪烁控制系统为例,介绍基于Keil C和Proteus联合开发过程。
(1)启动Proteus开发平台,利用ISIS模块绘制独立按键识别电路原理图,如图3.14所示。
图3.14 实例电路图(www.xing528.com)
(2)启动KeilμVision2开发平台,建立一个Keil工程,输入C51源程序,编译生成*.hex可执行文件,如见图3.15所示。
图3.15 实例编程界面
(3)将编译后的可执行文件下载到Proteus中,如图3.16所示。
图3.16 文件下载界面
(4)在Proteus下进行仿真运行,如图3.17所示。
Keil和Proteus是学习单片机时常用的两个软件,至此我们学习了它们的使用及联合调试的步骤。这两个软件的联合使用可使我们把单片机硬件和程序编写紧密结合起来,对单片机应用系统的开发过程进一步熟悉。
图3.17 仿真运行界面
1.简述MCS-51的指令格式。
2.指出下列指令中45H代表什么?
MOV A,45H
MOV A,#45H
MOV 45H,46H
MOV C,45H
3.在MCS-51单片机片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H,分析下段程序中各指令的功能;说明源操作数的寻址方式,以及按序执行每条指令后的结果。
MOV A,40H
MOV R0,A
MOV @R0,30H
MOV 40H,38H
MOV R0,30H
MOV 90H,R0
MOV 48H,#30H
MOV A,@R0
4.分析下列程序的执行结果
(1)MOV A,#60H
MOV R0,#40H
MOV @R0,A
MOV 41H,R0
XCH A,R0
(2)MOV DPTR,#2003H
MOV A,#18H
MOV 20H,#38H
MOV R0,#20H
XCH A,@RO
(3)MOV 20H,#01H
MOV A,20H
INC A
CPL A
MOV DPTR,#2000H
MOVX @DPTR,A
5.按要求写出相应的指令
(1)将寄存器R6的内容送到累加器A中。
(2)将外部RAM中1000H单元内容传送到内部RAM的20H单元。
(3)清除内部RAM中3FH单元的高4位。
(4)使累加器A的最低位置1。
(5)清除进位位。
(6)使ACC.4和ACC.5置1.
(7)将外部ROM中2000H单元的内容送到内部RAM的20H单元中。
(8)将外部ROM中2000H单元的内容送到外部RAM的3000H单元中。
6.分析下列程序的功能
MOV R0,#data
MOV A,@R0
RL A
RL A
MOV R1,A
RL A
ADD A,R1
MOV @R0,A
7.设A=82H,R0=17H,(17H)=34H,问执行以下指令后A=?
ANL A,#17H
ORL 17H,A
XRL A,@R0
CPL A
8.什么是伪指令?伪指令与指令有什么区别?
9.基本的程序结构有哪几种?各有什么特点?
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。