Keil  uVISION2  是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的 MCS-51 架构的芯片,它集编辑,编译,仿真等于一体,同时还支持、PLM、汇编和 C 语言的程序设计,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。 因此很多开发 51 单片机  应用的工程师或普通的单片机爱好者,都对它十分喜欢。

Keil Cx51  是一个商业的软件,分两个版本,一个是完全版,使用时对生成的机器代码空间不作任何限制,另一个是只能编译 2K 代码空间 的 DEMO 版软件,基本可以满足一 般的个人学习和小型应用的开发。废话少说,言归正传。

运行 Keil uVISION2 几秒后,出现如图 11 的屏幕。

一、建立工程

1)点击 Project 菜单,选择 New Project,如图 13。弹出的 Window文件对话窗口, 在文件名中输入您的第一个 C 程序项目名称(只要符合 Windows 文件规则的文件名都 行),这里我们用test,如图 14保存后的文件扩展名为 uv2,这是 KEILuVision2  项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目。

2)选择器件,根据需要选择相应型号的器件,这里我们选择常用的  Ateml  公司的AT89C51。此时屏幕如图 15 所示。点击确定后返回主界面。

(3)点击“Target1”前面的“+”号,出现下一层的“ Source Group1”,这时的工程还是一个空的工程,里面什么文件也没有,需要把编写好的源程序加入,点击“Source Group1”使其反白显示 , 然后,点击鼠标右键,出现如图 3 所示的下拉菜单。 选中其中的 “Add  file  to Group”Source Group1”,出现一个对话框,要求寻找源文件,注意,该对话框下面的文件 类型默认为 C source file(*.c),也就是以 C 为扩展名的文件,如为汇编文件,需要将文件 类型改掉。

(4)如需新建文件,点击图 17 1 的新建文件的快捷按钮,在 2 中出现一个新的文字编辑窗口,这个操作也可以通过菜单 FileNew 或快捷键 Ctrl+N 来实现。在文件编辑窗口输入你的第一个 C 程序。完成后保存退出。

注意:文件名必须有扩展名,如 c 程序扩展名为.c,汇编程序扩展名为.asm .am51

源程序可在任何文本编辑器中编写,但要注意全角与半角字符,另外 Keil Cx51 文本编 辑器对汉字支持不好。

二、工程的详细设置

工程建立好以后,还要对工程进行进一步的设置,以满足要求。首先点击左边 Project 窗口的 Target 1,然后使用菜单“Project->Option for target target1’”即出现对工程设置的对话框,这个对话框可谓非常复杂,共有 8 个页面,要全部搞清可不容易,绝大部份设置项 取默认值就可以了。

Xtal (MHz)-----晶振频率值,默认值是所选目标 CPU 的最高可用频率值,根据需要进行设 置。该数值与最终产生的目标代码无关,仅用于软件模拟调试时显示程序执行时间。正确 设置该数值可使显示时间与实际所用时间一致,一般将其设置成与你的硬件所用晶振频率 相同,如果没必要了解程序执行的时间,也可以不设。

Memory Model---选择编译模式(存储器模式)

  Small  是所有变量都在单片机的内部 RAM 中;

  Compact 是可以使用一页外部扩展 RAM

  Larget 则是可以使用全部外部的扩展 RAM

Code Model ---用于设置 ROM 空间的使用。

  Small 模式,只用低于 2的程序空间;

  Compact 模式,单个函数的代码量不能超过  2K,整个程序可以使用  64K  程序空间;

  Larget 模式,可用全部 64K  空间。

Use on-chip ROM ----是否仅使用片内 ROM 选择项,注意:选中该项并不会影响最终生成的目标代码量

Operating -----是操作系统选择项。Keil 提供了两种操作系统:Rtx tiny  Rtx full,通常 我们不使用任何操作系统,即使用该项的默认值:None(不使用任何操作系统);

Off Chip Code memory -----用以确定系统扩展 ROM 的地址范围。

Off Chip xData memory----- 用于确定系统扩展 RAM 的地址范围

这些选择项必须根据所用硬件来决定,如果是最小应用系统,不进行任何扩展,均不重新选择,按默认值设置。

Select Folder for objects-----选择最终的目标文件所在的文件夹,默认是与工程文件在同一个文件夹中,一般不需要更改。

Name of Executable----- 用于指定最终生成的目标文件的名字,默认与工程的名字相同,一般不需要更改。

Debug information----- 将会产生调试信息。这些信息用于调试,如果需要对程序进行调试,应当选中该项。

Browse information-----是产生浏览信息。该信息可以用菜单 view->Browse  来查看,这里取默认值。

Creat Hex file-----用于生成可执行代码文件。可以用编程器写入单片机芯片的 HEX 格式文件,文件的扩展名为.HEX

其它选默认即可

在汇编或编译完成后将产生(*.lst)的列表文件,在连接完成后也将产生(*.m51)的列表文件,该页用于对列表文件的内容和形式进行细致的调节,其中比较常用的选项是C

Compile Listing”下的Assamble Code”项,选中该项可以在列表文件中生成 C 语言源程序所对应的汇编代码。

C51 标签页用于对 Keil C51 编译器的编译过程进行控制,其中比较常用的是Code Optimization”组,该组中 Level 是优化等级,C51 在对源程序进行编译时,可以对代码多 至 9 级优化,默认使用第 8 级,一般不必修改,如果在编译中出现一些问题,可以降低优 化级别试一试。Emphasis (强调、重点)是选择编译优先方式,第一项是代码量优化(最终 生成的代码量小);第二项是速度优先(最终生成的代码速度快);第三项是缺省。默认的 是速度优先,可根据需要更改。

三、编译、连接

在工程中加入文件后即可进行编译连接。

本项目只学习新建程序项目和编译运行仿真的基本方法,所以使用软件默认的编译设置。在上图中,各按钮功能如下:

1 ---用于编译单个文件;

2 ---编译当前项目,如果先前编译过一次之后文件没有做动编辑改动,这时再点击是不会再 次重新编译的;

3-- 是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。

4 ---信息输出窗口,在窗口中可以看到编译的错误信息和使用的系统资源情况等。

5 ---是菜单中对应的编译选项,可依据个人习惯选用。

6---是开启\关闭调试模式的按钮,它也存在于菜单 DebugStart\Stop Debug Session,快捷 键为 Ctrl+F5

3 右边的是停止编译按钮,只有点击了前三个中的任意一个,停止按钮才会生效。 在本项目只有一个文件,按 123 中的任何一个都可以编译。

四、进入调试

()常用调试命令

进入调试状态,Keil 内建了一个仿真 CPU 用来模拟执行程序,该仿真 CPU 功能强大, 可以在没有硬件和仿真机的情况下进行程序的调试,下面将要学的就是该模拟调试功能。 不过在学习之前必须明确,模拟毕竟只是模拟,与真实的硬件执行程序肯定还是有区别的, 其中最明显的就是时序,软件模拟是不可能和真实的硬件具有相同的时序的,具体的表现就是程序执行的速度和各人使用的计算机有关,计算机性能越好,运行速度越快。

进入调试状态后,界面与编缉状态相比有明显的变化,Debug 菜单项中原来不能用的命令现在已可以使用了,工具栏会多出一个用于运行和调试的工具条,如图所示,Debug 菜单上的大部份命令可以在此找到对应的快捷按钮。,从左到右依次是复位、运行、暂停、单步、过程单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮 等命令。

几个重要的概念:

全速执行-----是指一行程序执行完以后紧接着执行下一行程序,中间不停止,主要是看程序执行的最终结果,如果程序有错,则难以确认错误出现在哪些程序行。

单步执行-----是每次执行一行程序,执行完该行程序以后即停止,等待命令执行下一行 程序,此时可以观察该行程序执行完以后得到的结果,是否与预期结果相同,借此可以找 到程序中问题所在。

过程单步-----是指将汇编语言中的子程序或高级语言中的函数作为一个语句来全速执行。调试光标不进入子程序的内部,而是执行完该子程序,然后直接指向下一行。

运行到当前行-----全速执行当前地址行与当前光标行之间和程序。主要看一段程序运行情况,可以加快程序的调试。

执行完当前子程序-----是指进入子程序后按此按钮,子程序中其余没有执行的指令将一次全部执行完毕,加快程序的执行进度。

程序调试中,这几种运行方式都要用到。灵活应用这几种方法,可以大大提高查错的效率。

(二)断点设置

断点设置的方法有多种,常用的是在某一程序行设置断点,设置好断点后可以全速运行程序,一旦执行到该程序行即停止,可在此观察有关变量值,以确定问题所在。 程序行设置/移除断点的方法:

(1)将光标定位于需要设置断点的程序行,使用菜单 Debug->Insert/Remove BreakPoint  设置或移除断点;

Debug->Enable/Disable Breakpoint  是开启或暂停光标所在行的断点功能;

Debug->Disable All Breakpoint  暂停所有断点;

Debug->Kill All BreakPoint  清除所有的断点设置。

(2)使用工具条

五、程序实例

输入下面程序:

#include <reg51.h>               //包含寄存器头文件

#include <stdio.h>                   //标准输入/输出头文件

void main(void) {                      //main 函数

SCON = 0x52;                               //串口方式 1,允许接收

TMOD = 0x20;                               //定时器 1 定时方式 2

TH1 = 0xE8;                                     //11.0592MHz 1200 波特率

TL1 = ;

TR1 = ;                                                 //启动定时器

)

{

printf ("Hello World!\n");        //显示 Hello World

}

}

建立好工程后进入调试模式,按 4 我们可以打开 5 中的串行调试窗口,这个窗口我们

可以看到从 51 芯片的串行口输入输出的字符,这里的第一个项目也正是在这里看运行结果。 这些功能在菜单中有相应的对应。首先按 4 打开串行调试窗口,再按运行键,这时就可以看到串行调试窗口中不断的打印“HelloWorld。这样就完成了您的第一个 C 项目。最后 我们要停止程序运行并回到文件编辑模式,就要先按停止按钮再按开启\关闭调试模式按钮。

可以打开反汇编窗口,看 C 程序所对应的汇编代码,光标在那一个窗口,程序将按那一个窗口所对应的程序进行执行。

Keil uVISION2 自学教程的更多相关文章

  1. HMM 自学教程(八)总结

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在HMM 学习最佳范例,这是针对国外网站上一个 HMM 教程的翻译,作者功底很深,翻译得很精彩,且在 ...

  2. HMM 自学教程(七)前向后向算法

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...

  3. HMM 自学教程(六)维特比算法

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...

  4. HMM 自学教程(五)前向算法

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...

  5. HMM 自学教程(四)隐马尔科夫模型

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...

  6. HMM 自学教程(三)隐藏模式

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...

  7. HMM 自学教程(二)生成模型

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...

  8. HMM 自学教程(一)引言

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...

  9. PJ可能会考的模拟与枚举-自学教程

    PJ可能会考的模拟与枚举-自学教程 文/Pleiades_Antares 之前学校里看一个小可爱复习的时候偷偷听来着XD 简单记了一下重点吧,希望能对看官您有所帮助XD 以下⬇️是几个复习时讲过的题, ...

随机推荐

  1. 初学 Canvas <第一篇-基础篇>

    本文摘自:兴趣部落大神(为你一生画眉)-讲一讲canvas究竟是个啥? HTML5 的标准已经出来好久了,但是似乎其中的 Canvas 现在并没有在太多的地方用到.一个很重要的原因是,Canvas 的 ...

  2. yii2 控制器里 action 大小写组合造成的路由问题

    yii1中, 若存在如下控制器 class BindController extends CController { public function actionGetMobilePhone () { ...

  3. Python开发【第一篇】:目录

    本系列博文包含 Python基础.前端开发.Web框架.缓存以及队列等,希望可以给正在学习编程的童鞋提供一点帮助!!! Python开发[第一篇]:目录 Python开发[第二篇]:初识Python ...

  4. codevs 2612 最有分解方案 (贪心)

    /* 数字不重复 将一个正整数分解成若干的整数的和 数字不重复 且数字不相同 保证不重复的话 贪心策略是从2开始分 然后把最后剩下的数均匀分到后面 证明嘛 这里写的可能不是很严谨 对于一个n 如果我们 ...

  5. 将从网上下载下来的javaweb项目继续配置

    1.将下载下来的项目,看有没有报错,这里推荐的是不变成web项目的方法,直接通过编译到服务器目录 2.报错的问题,一般是包,服务器的包,(tomcat-home)指向自己的bin目录 3.然后是添加s ...

  6. HTML5 离线缓存忽略主页实例

    默认情况下 指定html mianfest的当前页面会自动离线缓存到客户端. 取消的方法,可以使用iframe类实现 1.主页定义: <iframe frameborder="no&q ...

  7. Access数据库数据转换Table.Json

    使用WPF组件 xaml <Window x:Class="JsonConvert.MainWindow" xmlns="http://schemas.micros ...

  8. iOS面试题整理(一)

    代码规范 这是一个重点考察项,曾经在微博上发过一个风格纠错题: 也曾在面试时让人当场改过,槽点不少,能够有 10 处以上修改的就基本达到标准了(处女座的人在这方面表现都很优秀 一个区分度很大的面试题 ...

  9. ASP.NET菜鸟之路之Application小例子

    背景 我是一个ASP.NET菜鸟,暂时开始学习ASP.NET,在此记录下我个人敲的代码,没有多少参考价值,请看到的盆友们为我点个赞支持我一下,多谢了. Session介绍 Application对象用 ...

  10. React 点击删除列表中对应项(React 获取DOM中自定义属性)

    点击删除按钮,删除列表中对应项本来是React比较基础的应用,可是应用情况变得复杂了以后,我还真想了一会儿才搞定. 简化一下应用场景:点击新增按钮,增加一条输入框,点击输入框旁边的按钮,删除该输入框( ...