<meta name="keywords" content="必胜时时彩开户,keywords" /> 第二课 C51HEX文件的天生和单片机最小系统 联系我们

第二课 C51HEX文件的天生和单片机最小系统

  上一篇培植了第一个单片机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://mamjap.com  。法式模范模范以下:


 

#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 熄灭, 然后交替亮、灭。第一个真正的小实验就做完,假定没有这样的效果那么您就要认真检查一下电路或编译烧写的法式模范了。