收藏 分享(赏)

KEIL uVISION2学习笔记.doc

上传人:杨桃文库 文档编号:5308490 上传时间:2019-02-20 格式:DOC 页数:12 大小:4.24MB
下载 相关 举报
KEIL uVISION2学习笔记.doc_第1页
第1页 / 共12页
KEIL uVISION2学习笔记.doc_第2页
第2页 / 共12页
KEIL uVISION2学习笔记.doc_第3页
第3页 / 共12页
KEIL uVISION2学习笔记.doc_第4页
第4页 / 共12页
KEIL uVISION2学习笔记.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、1KEIL uVISION2学习笔记注意:本学习软件是版本keil c51 v7.06a 完全版,本人利用这个软件的时候碰到了很多问题,所以写出来让大家不再走弯路,希望大家都能成为C51高手。建立一个C项目(整理03.12.17苏美克工作室)(一) 由于本软件是完全版,没有2K字节的限制。下面是建立第一个项目的步骤:(1)运行 KEIL uVISION2 界面如下:(2)点击Project 菜单,选择弹出的下拉式菜单中的 New Project,如图12。接着弹出一个标准Windows 文件对话窗口,如下图,在“文件名”中输入您的第一个C 程序项目名称,这里我用“test”,大家随便写一个就是

2、了,只要符合Windows 文件规则的文件名都行。“保存”后的文件扩展名为uv2,这是KEILuVision2 项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目。2(3)选择所要的单片机,这里我们选择常用的Ateml 公司的AT89C51。此时屏幕如图14 所示。完成上面步骤后,我们就可以进行程序的编写了。(4)首先我们要在项目中创建新的程序文件或加入旧程序文件。如果您没有现成的程序,那么就要新建一个程序文件。在KEIL 中有一些程序的Demo,在这里我们还是以一个 C 程序为例介绍如何新建一个C 程序和如何加到您的第一个项目中吧。点击图15 中1 的新建文件的快捷按钮,在2 中出

3、现一个新的文字编辑窗口,这个操作也可以通过菜单FileNew 或快捷键Ctrl+N 来实现。好了,现在可以编写程序了,光标已出现在文本编辑窗口中,等待我们的输入了。第一程序嘛,写个简单明了的吧。下面是经典的一段程序: #include #include void main(void)SCON = 0x50; /串口方式1,允许接收TMOD = 0x20; /定时器1 定时方式 2TCON = 0x40; /设定时器1 开始计数TH1 = 0xE8; /11.0592MHz 1200 波特率TL1 = 0xE8;TI = 1;TR1 = 1; /启动定时器while(1)printf (“Hel

4、lo World!n“); /显示 Hello World这段程序的功能是不断从串口输出“Hello World!”字符,看看如何把它加入到项目中和如何编译试运行。(5)点击图15 中的3 保存新建的程序,也可以用菜单File Save 或快捷键Ctrl+S进行保存。因是新文件所以保存时会弹出类似图13 的文件操作窗口,我们把第一个程序命名为test1.c,保存在项目所在的目录中,这时您会发现程序单词有了不同的颜色,说明KEIL 的C 语法检查生效了。如图16 鼠标在屏幕左边的Source Group1 文件夹图标上右击弹出菜单,在这里可以做在项目中增加减少文件等操作。我们选“ Add Fil

5、e to Group SourceGroup 1”弹出文件窗口,选择刚刚保存的文件,按ADD 按钮,关闭文件窗,程序文件已加到项目中了。这时在Source Group1 文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击它可以展开查看。图16 把文件加入到项目文件组中(6)C 程序文件已被我们加到了项目中了,下面就剩下编译运行了。这个项目我们只是用做学习新建程序项目和编译运行仿真的基本方法,所以使用软件默认的编译设置,它不会生成用于芯片烧写的HEX 文件,如何设置生成HEX 文件,以后用到的时候再说。我们先来看图17 吧,图中1、2、3 都是编译按钮,不同是1 是用于编译单个文件。2

6、是编译当前项目,如果先前编译过一次之后文件没有做动编辑改动,这时再点击是不会再次重新编译的。3 是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。在3 右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。5 是菜单中的它们,这个项目只有一个文件,按123 中的任何一个都可以编译。好了,在4 中可以看到编译的错误信息和使用的系统资源情况等,以后我们要查错就靠它了。6 是有一个小放大镜的按钮,这就是开启关闭调试模式的按钮,它也存在于菜单DebugStartStop Debug Session,快捷键为Ctrl+F5。(7)进入调试模式,软件窗口样式大致如图18 所示。

7、图中1 为运行,当程序处于停止状态时才有效,2 为停止,程序处于运行状态时才有效。3 是复位,模拟芯片的复位,程序回到最开头处执行。按4 我们可以打开5 中的串行调试窗口,这个窗口我们可以看到从51芯片的串行口输入输出的字符,这里的第一个项目也正是在这里看运行结果。这些在菜单中也有,这里不再一一介绍大家不妨找找看。首先按4 打开串行调试窗口,再按运行键(下图),这时就可以看到串行调试窗口中不断的打印“Hello World!”。这样就完成了您的第一个C 项目。最后我们要停止程序运行回到文件编辑模式中,就要先按停止按钮再按开启 关闭调试模式按钮。然后我们就可以进行关闭KEIL 等相关操作了。(8

8、)运行结果:怎样生成HEX文件(整理03.12.17苏美克工作室)(二) 在开始C语言的主要内容时,我们先来看看如何用KEIL uVISION2来编译生成用于烧写芯片的HEX文件。 HEX文件格式是 Intel公司提出的按地址排列的数据信息,数据宽度为字节,所有数据使用16进制数字表示, 常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式。我们先来打开刚才的程序。,打开它的所在目录,找到test.Uv2的文件就可以打开先前的项目了。然后右击图31中的1项目文件夹,弹出项目功能菜单,选Options for TargetTarget1,弹

9、出项目选项设置窗口,同样先选中项目文件夹图标,这时在Project菜单中也有一样的菜单可选。打开项目选项窗口,转到Output选项页图32所示,图中1是选择编译输出的路径, 2是设置编译输出生成的文件名, 3则是决定是否要创建HEX 文件,选中它就可以输出HEX文件到指定的路径中。好,我们再将它重新编译一次,很快在编译信息窗口中就显示HEX文件创建到指定的路径中 了,如图33。这样我们就可用自己的编程 器所附带的软件去读取并烧到芯片了,再用 实验板看结果,至于编程器或仿真器品种繁 多具体方法就看它的说明书了,这里也不做 讨论。I/O口的观察(整理03.12.17苏美克工作室)(三) 我们按刚才

10、的步骤写下面的程序:(这是一个在P1口循环输出FFH和00H的程序)#include#includevoid main(void)while(1)P1=0xFF;P1=0x00;编译运行上面的程序,然后按外部设备菜单PeripheralsI/O PortsPort1(图33-1) 就打开Port1 的调试窗口了(图33-2):图33-1图33-2我们单步运行程序如下图33-3图33-3P1口的变化如下图33-4:图33-4好了,输入输出(I/O)口的操作就是这样了,很简单的,我可是都测试过的,没有问题的。典型的程序练习1、 宏定义的程序:不带参数的宏定义又称符号常量定义一般格式为#define

11、 标识符 常量表达式例如:#define PI 3.141592 那么PI=3.141592看一个程序:#include;/#include;/#define PI 3.141562;/ PI=3.141562#define R 3.0;/R=3.0#define L 2*PI*R#define S PI*R*Rvoid main(void)/void含义:不要求有返回值的函数都定义为void函数。SCON = 0x50; /串口方式1,允许接收TMOD = 0x20; /定时器1 定时方式2TCON = 0x40; /设定时器1 开始计数TH1 = 0xE8; /11.0592MHz 120

12、0 波特率TL1 = 0xE8;TI = 1;TR1 = 1; /启动定时器printf(“L=%fnS=%fn“,L,S);运行结果如下:2、 求最值的程序:#include#includeint Max(int a,int b);void main()int a;int b;SCON = 0x50; /串口方式1,允许接收TMOD = 0x20; /定时器1 定时方式2TCON = 0x40; /设定时器1 开始计数TH1 = 0xE8; /11.0592MHz 1200 波特率TL1 = 0xE8;TI = 1;TR1 = 1; /启动定时器printf(“input a and b:n

13、“);scanf(“%d %d“,printf(“Max=%d“,Max(a,b);int Max(int x,int y)int z;if(xy)z=x;else z=y;return(z);运行程序后,输入两个数据,中间用空格断开,然后回车,运行结果如下:输入数据以前:输入数据以后:如何直接操作系统的各个存储器地址空间为了能够在C51程序中直接对任意指定的存储器地址进行操作,可以采用指针的办法来实现。例如:void restmodul(void)char xdata *xdp;/*定义一个指向XDATA存储器空间的地址*/char data *dp; /*定义一个指向DATA存储器空间的地

14、址*/dp 02x; /*XDATA指针赋值,指向XDATA存储器地址0002H*/*xdp=0Xaa;/*将数据送往指定的地址*/dp 0x30;/*DATA指针赋值,指向XDATA存储器地址0030H*/*dp=0xBB;/*将数据0xBBH送往指定的地址*/另一种直接操作存储器空间地址的方法是利用C51运行库中提供的一套定义宏“ABSACC.H” 。例如:#include char c var;int r_var;XBYTE 0x12 c_var;/*向XDATA存储器空间的地址0012H,写入数据c_var */i_var=XWORD0x100 /*向XDATA存储器空间的地址0100H,读取数据并赋值给i_var */

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 事务文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报