图2-1中的1项目文件夹弹出项目功能菜单选OptionsforTarget’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就能看到不停输出的“HelloWorld”字样。
如果您还没有实验板那这里先说说AT89c51的最小化系统再以一实例程序验证最小化系统是否在运行这个最小化系统也易于自制用于实验。
图2-4便是AT89c51的最小化系统不过为了让我们能看出它是在运行的加了一个电阻和一个LED用以显示它的状态晶体震荡器能根据自己的情况使用一般实验板上是用11.0592MHz或12MHz使用前者的好外是能产生标准的串行口波特率后者则一个机器周期为1微秒便于做精确定时。
在自己做实验里注意的是VCC是5V的不能高于此值不然将损坏单片机太低则不能正常工作。
在31脚要接高电平这样我们才能执行片内的程序如接低电平则使用片外的程序存储器。
下面建一个新的项目名为OneLED来验证最小化系统是否能工作所有的例程都可在笔者的主页下面下载到网址http://www.51hei.com。
程序如下include//预处理命令voidmainvoid//主函数名//这是第一种注释方式unsignedinta//定义变量a为int类型/这是第二种注释方式/do//dowhile组成循环fora0alt50000a//这是一个循环P1_00//设P1.0口为低电平点亮LEDfora0alt50000a//这是一个循环P1_01//设P1.0口为高电平熄灭LEDwhile1图2-4AT89c51最小化系统这里先讲讲KEILC编译器所支持的注释语句。
一种是以“//”符号开始的语句符号之后的语句都被视为注释直到有回车换行。
另一种是在“/”和“/”符号之内的为注释。
注释不会被C编译器所编译。
一个C应用程序中应有一个main主函数main函数能调用别的功能函数但其它功能函数不允许调用main函数。
不论main函数放在程序中的那个位置总是先被执行。
用上面学到的知识编译写好的OneLED程序并把它烧到刚做好的最小化系统中。
上电刚开始时LED是不亮的因为上电复位后所有的IO口都置1引脚为高电平然后延时一段时间fora0alt50000a这句在运行LED亮再延时LED熄灭然后交替亮、灭。
第一个真正的小实验就做完如果没有这样的效果那么您就要认真检查一下电路或编译烧写的步骤了。
sylar源于heros了解更多电源解决方案回复回复本帖回到顶端我想评分sylar我是MM高级会员用户等级院士加为好友发短消息所有发言个人档案最后登陆时间2010-06-0408:20:15状态离线每写一个程序总离不开数据的应用在学习c51语言的过程中掌握理解数据类型也是很关键的。
先看表31表中列出了KEILuVision2单片机c语言编译器所支持的数据类型。
在标准C语言中基本的数据类型为charintshortlongfloat和double而在c51编译器中int和short相同float和double相同这里就不列出说明了。
下面来看看它们的具体定义数据类型长度值域unsignedchar单字节0255signedchar单字节-128127unsignedint双字节065535signedint双字节-3276832767unsignedlong四字节04294967295signedlong四字节-21474836482147483647float四字节±1.175494E-38±3.402823E3813字节对象的地址bit位0或1sfr单字节0255sfr16双字节065535sbit位0或1表31KEILuVision2单片机c语言编译器所支持的数据类型1char字符类型char类型的长度是一个字节通常用于定义处理字符数据的变量或常量。
分无符号字符类型unsignedchar和有符号字符类型signedchar默认值为signedchar类型。
unsignedchar类型用字节中所有的位来表示数值所能表达的数值范围是0255。
signedchar类型用字节中最高位字节表示数据的符号“0”表示正数“1”表示负数负数用补码表示。
所能表示的数值范围是-128127。
unsignedchar常用于处理ASCII字符或用于处理小于或等于255的整型数。
正数的补码与原码相同负二进制数的补码等于它的绝对值按位取反后加1。
2int整型int整型长度为两个字节用于存放一个双字节数据。
分有符号int整型数signedint和无符号整型数unsignedint默认值为signedint类型。
signedint表示的数值范围是-3276832767字节中最高位表示数据的符号“0”表示正数“1”表示负数。
unsignedint表示的数值范围是065535。
先停一下来写个小程序看看unsignedchar和unsignedint用于延时的不一样效果说明它们的长度是不一样的学习它们的使用方法。
依旧用上一篇的最小化系统做实验不过要加多一个电阻和LED如图31。
实验中用D1的点亮表明正在用unsignedint数值延时用D2点亮表明正在用unsignedchar数值延时。
图31第3课实验用电路把这个项目称为TwoLED实验程序如下include//预处理命令voidmainvoid//主函数名unsignedinta//定义变量a为unsignedint类型unsignedcharb//定义变量b为unsignedchar类型do//dowhile组成循环fora0alt65535aP1_00//65535次设P1.0口为低电平点亮LEDP1_01//设P1.0口为高电平熄灭LEDfora0alt30000a//空循环forb0blt255bP1_10//255次设P1.1口为低电平点亮LEDP1_11//设P1.1口为高电平熄灭LEDfora0alt30000a//空循环while1同样编译烧写上电运行您就能看到结果了。
很明显D1点亮的时间长于D2点亮的时间。
这里必须要讲的是当定义一个变量为特定的数据类型时在程序使用该变量不应使它的值超过数据类型的值域。
如本例中的变量b不能赋超出0255的值如forb0blt255b改为forb0blt256b编译是能通过的但运行时就会有问题出现就是说b的值永远都是小于256的所以无法跳出循环执行下一句P1_11从而造成死循环。
同理a的值不应超出065535。
3long长整型long长整型长度为四个字节用于存放一个四字节数据。
分有符号long长整型signedlong和无符号长整型unsignedlong默认值为signedlong类型。
signedint表示的数值范围是-21474836482147483647字节中最高位表示数据的符号“0”表示正数“1”表示负数。
unsignedlong表示的数值范围是04294967295。
4float浮点型float浮点型在十进制中具有7位有效数字是符合IEEE754标准的单精度浮点型数据占用四个字节。
因浮点数的结构较复杂在以后的章节中再做详细的讨论。
5指针型指针型本身就是一个变量在这个变量中存放的指向另一个数据的地址。
这个指针变量要占据一定的内存单元对不一样的处理器长度也不尽相同在c51中它的长度一般
上一篇:
【精品】TinyXML入门教程
下一篇:
浅析党建优势在煤矿安全生产管理中的作用