(玩电子) 电子技术学习与研讨
当时方位:单片机教程网 >> 根底教程 >> 阅览文章

第二课 C51HEX文件的生成和单片机最小体系

作者:佚名   来历:本站原创   点击数:x  更新时刻:2007年07月19日   【字体:

  上一篇树立了第一个单片机C言语项目,但为了让编译好的程序能经过编程器写入51芯 片中,要先用编译器生成HEX文件,下面来看看如何用KEIL uVISION2来编译生成用于烧写 芯片的HEX文件。HEX文件格局是Intel公司提出的按地址摆放的数据信息,数据宽度为字 节,一切数据运用16进制数字表明,  常用来保存单片机或其他处理器的方针程序代码。它保 存物理程序存储区中的方针代码映象。一般的编程器都支撑这种格局。咱们先来翻开第一个 项目,翻开它的地点目录,找到test.Uv2的文件就能翻开从前的项目了。然后右击图2-1 中的1项目文件夹,弹出项目功用菜单,选Options for Target’Target1’,弹出项目选项设置窗口, 相同先选中项目文件夹图标,这个时分在Project菜单中也有相同的菜单可选。翻开项目选项窗口, 转到Output选项页图2-2所示,图中1是挑选编译输出的途径,2是设置编译输出生成的文件 名,3则是决议是否要创立HEX文件,选中它就能输出HEX文件到指定的途径中。选好了? 好,咱们再将它从头编译一次,很快在编译信息窗口中就显现HEX文件创立到指定的途径 中了,如图2-3。这样咱们就可用自己的编程器所顺便的软件去读取并烧到芯片了,再用实 验板看成果,至于编程器或仿真器品种繁多具体方法就看它的说明书了,这儿也不做谈论。

(技巧:一、在图2-1中的1里的项目文件树形目录中,先选中目标,再单击它就可对它进 行重命名操作,双击文件图标便可翻开文件。二、在Project下拉菜单的最下方有最近修改过

的项目途径保存,这儿能快速翻开最近在修改的项目。)

图2-1项目功用菜单
 

图2-2    项目选项窗口

图 2-3    编译信息窗口

或许您已把编译好的文件烧到了芯片上,假如您购买或克己了带串行口输出元件的学习实 验板,那您就能把串行口和 PC 机串行口相联用串行口调试软件或 Windows 的超级终端,将其波特 率设为  1200,就能看到不断输出的“Hello  World!”字样。假如您还没有试验板,那这 里先说说 AT89c51 的最小化体系,再以一实例程序验证最小化体系是否在运转,这个最小化 体系也易于克己用于试验。图 2-4 就是 AT89c51 的最小化体系,不过为了让咱们能看出它 是在运转的,加了一个电阻和一个 LED,用以显现它的状况,晶体震动器能依据自己的状况运用, 一般试验板上是用 11.0592MHz 或 12MHz,运用前者的好外是能发生规范的串行口波特率,后 者则一个机器周期为 1 微秒,便于做准确守时。在自己做试验里,留意的是 VCC 是+5V 的, 不能高于此值,否则将损坏单片机,太低则不能正常作业。在 31 脚要接高电平,这样咱们 才干履行片内的程序,如接低电平则运用片外的程序存储器。下面建一个新的项目名为 OneLED 来验证最小化体系是否能作业(一切的例程都可在笔者的主页下面下载到,网址: http://www.62pa.com  。程序如下:


 

casino

#include  < AT89X51.h>  //预处理指令

void  main(void)  //主函数名

{

//这是第一种注释方法

unsigned  int  a;  //界说变量 a 为 int 类型

/* 这是第二种注释方法

*/

do{  //do  while 组成循环

for  (a=0;  a<50000;  a++);  //这是一个循环 P1_0  =  0;  //设 P1.0 口为低电平,点亮 LED for  (a=0;  a<50000;  a++);  //这是一个循环 P1_0  =  1;  //设 P1.0 口为高电平,平息 LED

}

while(1);

}

图 2-4    AT89c51 最小化体系

这儿先讲讲 KEIL  C 编译器所支撑的注释句子。一种是以“//”符号开端的句子,符号之后 的句子都被视为注释,直到有回车换行。另一种是在“/*”和“*/”符号之内的为注释。注 释不会被 C 编译器所编译。一个 C 应用程序中应有一个 main 主函数,main 函数能调用别


 

的功用函数,但其它功用函数不允许调用 main 函数。不管 main 函数放在程序中的那个方位, 总是先被履行。用上面学到的常识编译写好的 OneLED 程序,并把它烧到刚做好的最小化系 统中。上电,刚开端时 LED 是不亮的(由于上电复位后一切的 IO 口都置 1 引脚为高电平), 然后延时一段时刻(for  (a=0;  a<50000;  a++)这句在运转),LED 亮,再延时,LED 平息, 然后替换亮、灭。第一个真实的小试验就做完,假如没有这样的作用那么您就要仔细检查一下电路或编译烧写的过程了。

 

宣布谈论】【沆瀣一气老友】【保藏此文】【封闭窗口

文章谈论