二、操作步骤:
1、首先我们要养成一个习惯:最好先建立一个空文件夹,把您的工程文件放到里面,以避免和其他文件混合。比如:E:\code\exam
2、 单击桌面上的,打开keil。
3、建立项目(工程):
(1)新建立工程(Project -> New uVision Project),如图示:
(2)选择工程要保存的路径,输入并保存工程文件名。
Keil的一个工程里通常含有很多小文件。为了方便管理,通常我们将一个工程放在一个独立文件夹下,比如保存到exam1文件夹,工程文件的名字为exam1,如图所示,然后单击【保存】按钮。工程建立后,此工程名变为 exam1.uv2。
(3)选择芯片型号
保存之后出现如下对话框,在这个对话框要求选择目标CPU (即你所用单片机芯片的型号)。
Keil C51几乎支持所有的51内核的单片机,我们选择 Atmel 公司的 AT89C52 (根据具体设计选)芯片。点击 ATMEL 前面的“+”号,展开该层,点击其中的 AT89C52,如下图所示,然后再点击“OK”按钮,完成选择 MCU 型号。
在完成选择MCU 型号后,软件会提示我们是否要复制一个源文件到这个工程中,这里我们选择“否”,因为我要自己添加一个C语言或者汇编语言源文件,如下图所示。
在执行上一步后,就能在如下图工程窗口的文件页中,出现了“Target 1”,如下图,前面有“+”号,点击“+”号展开,可以看到下一层的“Source Group1”,这时的工程还是一个空的工程,里面什么文件也没有,到这里一个基础的工程就完成了,但需要使用还不够,还需要下面的步骤。
4、源文件的建立:
(1)新建:使用菜单“File->New”,或者点击工具栏的新建文件快捷按钮,就可以在项目窗口的右侧打开一个新的文本编缉窗口。
此时,在编辑窗口中光标闪烁,等待你输入。
(2)输入:在下面空白区别写入或复制一个完整的C程序::
(3)保存:使用菜单“File->save”,或者点击工具栏的快捷按钮。
注意:
1)一定要选择保存在建立工程时建立的文件夹下,这样有利于设计者查找该文件,也有利于管理。
2)为了好管理文件一般源文件名和工程名一致(也可以不一样),文件后缀名为“.asm 或.c”,其中“.asm”代表建立的是汇编语言源文件,“.c”代表建立的是C语言源文件。
5、将源文件添加到工程中:
建立好的工程和建立好的程序源文件其实是两个相互独立,一个单片机工程是要将源文件和工程联系到一起的。
(1)点击软件界面工程窗口左上角的“Source Group1”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单,选中其中的“Add file to Group Source Group1”,如图所示。
在执行上面的步骤后会出现一个对话框,如下图所示,要求寻找源文件,选中文件,单击“Add“。
注意:
1)该对话框下面的“文件类型”默认为 C source file(*.c),也就是以 C 为扩展名的文件。
2)注意,在文件加入项目后,该对话框并不消失,等待继续加入其它文件,但初学时常会误认为操作没有成功而再次双击同一文件,这时会出现如下图所示的对话框,提示你所选文件已在列表中(有的没有这个窗口,不用管,直接单击“close”即可)。
然后点击“Close”即可返回主界面,返回后,点击“SourceGroup 1”前的加号,会发现 exam1.c 文件已在其中。双击文件名exam1.c,即打开该源程序。
6、配置工程
配置工程对于初学者来说,大部分内容只需要默认即可,这里只讲述几个常见的配置,能满足基本的功能。
之前工程建立好,之后还要对工程进行进一步的设置,以满足要求。
(1)点击左上边的Project窗口的 Target 1,然后使用菜单“Project->Option for target‘target1’”(工程目标选项),如下图所示,也可以按快捷键“Alt+F7”来完成。
在进行上面的操作后就会出现对工程设置的对话框,这个对话框可谓非常复杂,共有8 个页面,要全部搞清可不容易,好在绝大部份设置项取默认值就行了,如图所示。
1)Target选项: 设置晶振:12MHZ
2)Output选项:
勾选上【Project -> Options for Target -> Output】“Create HEX File”即可。
7、编译、连接:
1)选择菜单 Project->Build target,对当前工程进行连接,如果当前文件已修改,软件会先对该文件进行编译,然后再连接以产生目标代码;如果选择 Rebuild All target files 将会对当前工程中的所有文件重新进行编译然后再连接,确保最终生产的目标代码是最新的,而“Translate”? .项则仅对该文件进行编译,不进行连接,
2)以上操作也可以通过工具栏按钮直接进行。下图是有关编译、设置的工具栏按钮,从左到右分别是:编译、编译连接、全部重建、停止编译和对工程进行设置。
编译当前文件(单个) Ctrl + F7
编译目标文件(修改过的) 并生成应用程序供单片机直接下载 F7
编译所有目标文件(重新编译) 并生成应用程序供单片机直接下载 无
3)编译过程中的信息将出现在如下的输出窗口中的Build页中,如果源程序中有语法错误,会有错误文档出现,双击该行,可以定位到出错的位置,对源程序反复修改之后,最终会得到如下图所示的结果(提示获得了名为exam1.hex 的文件),该文件即可被编程器读入并写到芯片中,同时还产生了一些其它相关的文件,可被用于 Keil 的仿真与调试,这时可以进入下一步调试的工作。
8、调试
1)对工程成功地进行汇编、连接以后,按 Ctrl+F5 或者使用菜单Debug->Start/Stop Debug Session”, 进入调试状态。
进入调试状态后,界面与编缉状态相比有明显的变化,Debug 菜单项中原来不能用的命令现在已可以使用了,工具栏会多出一个用于运行和调试的工具条,如下图所示, Debug 菜上的大部份命令可以在此找到对应的快捷按钮,从左到右依次是复位、运行、暂停、单步、过程单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令。
复位:将程序复位到主函数的最开始处,准备重新运行程序;
全速运行:运行程序时中间不停止。
停止全速运行:全速运行程序时激活该按钮,用来停止正全速运行的程序。
进入子函数内部。
单步执行代码:它不会进入子函数内部,可直接跳过函数。
跳出当前进入的函数:只有进入子函数内部该按钮才被激活。
程序直接运行至当前光标所在行。
显示/隐藏编译窗口:可以查看每句C语言编译后所对应的汇编代码。
显示/隐藏变量观察窗口:可以查看各个变量值的变化状态
大家不妨把这些按钮一个个都单击试试看,只有亲自操作过了记忆才会深刻。
1使用快捷键F11可以单步执行程序,每按一次 F11,即执行该箭头所指程序行,然后箭头指向下一行,逐行调试。
(
注意1:使用F11 可以单步执行程序,使用F10 可以以过程单步形式执行命令,所谓过程单步,是指将高级语言中的函数作为一个语句来全速执行。
注意2:单步执行与全速运行。
全速执行:指一行程序执行完以后紧接着执行下一行程序,中间不停止,这样程序执行的速度很快,并可以看到该段程序执行的总体效果,即最终结果正确还是错误,但如果程序有错,则难以确认错误出现在哪些程序行。
单步执行:每次执行一行程序,执行完该行程序以后即停止,等待命令执行下一行程序,此时可以观察该行程序执行完以后得到的结果,是否与我们写该行程序所想要得到的结果相同,借此可以找到程序中问题所在。程序调试中,这两种运行方式都要用到。
)
观察端口情况:
单击Peripherals ----I/O-Ports---Port1菜单,在打开的小框里通过调试观察端口变化情况。
2单击Debug----Reset CPU可以复位。
3停止调试:
再次单击Debug->Start/Stop Debug Session,即可终止调试。
三、工程详细设置(可以不看)
工程建立好以后,还要对工程进行进一步的设置,以满足要求。
首先点击左上边的 Project窗口的 Target 1,然后使用菜单“Project->Option for target‘target1’”,如下图所示,也可以按快捷键“Alt+F7”来完成。
在进行上面的操作后就会出现对工程设置的对话框,这个对话框可谓非常复杂,共有 8 个页面,要全部搞清可不容易,好在绝大部份设置项取默认值就行了,如图所示。
1、Target选项:
1)Xta:后面的数值是晶振频率值,默认值是所选目标 CPU的最高可用频率值,对于我们所选的AT89C51 而言是 24M,该数值与最终产生的目标代码无关,仅用于软件模拟调试时显示程序执行时间。正确设置该数值可使显示时间与实际所用时间一致,一般将其设置成与你的硬件所用晶振频率相同,如果没必要了解程序执行的时间,也可以不设。
2)Memory Mode:用于设置 RAM 使用情况,有三个选择项,Smal l:variables in DATA 是所有变量都在单片机的内部 RAM 中;Compact:variables in PDATA 是可以使用一页外部扩展 RAM,而 Larget:variables in XDATA则是可以使用全部外部的扩展 RAM,如图所示。一般都是采用默认方式,也就是Smal l:variables in DATA方式。
3)Code Rom Size: 用于设置 ROM 空间的使用,同样也有三个选择项,即 Small:program 2kor less模式,只用低于2K 的程序空间;Compact:2k functions,64k program 模式,单个函数的代码量不能超过2K,整个程序可以使用 64K 程序空间;Larget:64k program 模式,可用全部 64K 空间,如图所示。一般都是采用默认方式,也就是Larget:64k program 模式。
4)Operating system: 项是操作系统选择,Keil提供了两种操作系统:RTX-51 Tiny 和 RTR-51 Full,关于操作系统是另外一个很大的话题了,通常我们不使用任何操作系统,即使用该项的默认值:None(不使用任何操作系统),如图所示。
5)Use on-chip ROM 选择项,确认是否仅使用片内 ROM(注意:选中该项并不会影响最终生成的目标代码量); Off-Chip Code memory 用以确定系统扩展 ROM 的地址范围,Off-Chip Xdata memory 组用于确定系统扩展 RAM 的地址范围,这些选择项必须根据所用硬件来决定,由于该例是单片应用,未进行任何扩展,所以均不重新选择,按默认值设置,如图所示。
2、Output选项:
OutPut页面设置对话框,如图所示,这里面也有多个选择项,
1) Creat Hex file用于生成可执行代码文件(可以用编程器写入单片机芯片的 HEX 格式文件,文件的扩展名为.HEX),默认情况下该项未被选中,如果要写片做硬件实验,就必须选中该项,这一点是初学者易疏忽的,在此特别提醒注意。
2) Debug Information 将会产生调试信息,这些信息用于调试,如果需要对程序进行调试,应当选中该项。
3) Browse Information 是产生浏览信息,该信息可以用菜单 view->Browse 来查看,这里取默认值。
4) 按钮“Select Folder for Objects…”是用来选择最终的目标文件所在的文件夹,默认是与工程文件在同一个文件夹中。
5) Name of Executable:用于指定最终生成的目标文件的名字,默认与工程的名字相同,这两项一般不需要更改。
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |