keil c51应用程序设计

keil c51应用程序设计

ID:36201804

大小:209.00 KB

页数:21页

时间:2019-05-07

keil c51应用程序设计_第1页
keil c51应用程序设计_第2页
keil c51应用程序设计_第3页
keil c51应用程序设计_第4页
keil c51应用程序设计_第5页
资源描述:

《keil c51应用程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、KeilC51应用程序设计KeilC51程序的一般结构与标准C语言相同,KeilC51程序由一个或多个函数构成,其中应至少包含一个main函数。一般结构如下:预处理命令/*用于包含头文件等*/全局变量说明/*全局变量可被本程序的所有函数引用*/功能函数说明/*说明自定义函数,以便调用*/main(){/*主函数*/局部变量说明;/*局部变量只能在所定义函数内部引用*/执行语句;函数调用;}/*其他函数定义*/数据类型KeilC51编译器除了支持常用的char(字符型),int(整型),long(长整型),float(浮点型),*(指针型)等基本数据类型之外,还支

2、持以下扩充数据类型。bit位类型。可定义一个位变量,但不能定义位指针,也不能定义位数组。sfr特殊功能寄存器。可以定义8051单片机的所有内部8位特殊功能寄存器。sfr型数据占用一个内存单元,其取值范围是0~255。sfr1616位特殊功能寄存器。它占用两个内存单元,取值范围是0~65535,可以定义8051单片机内部16位特殊功能寄存器。sbit可寻址位。可以定义8051单片机内部RAM中的可寻址位或特殊功能寄存器中的可寻址位。KeilC51能够识别的数据类型数据类型长度值域unsignedchar单字节0~255signedchar单字节-128~127un

3、signedint双字节0~65536signedint双字节-32768~32767unsignedlong四字节0~4294967295signedlong四字节-2147483648~2147483647float四字节±1.175494E-38~±3.402823E+38*1~3字节对象的地址bit位0或1sfr单字节0~255sfr16双字节0~65536sbit位0或1变量定义格式KeilC51中对变量进行定义的格式如下:[存储种类]数据类型[存储器类型]变量名表;其中,“存储种类”和“存储器类型”是可选项。变量的存储种类有四种:自动(auto)、外

4、部(extern)、静态(static)和寄存器(register)。定义变量时如果省略存储种类选项,则该变量将为自动(auto)变量。KeilC51编译器还允许说明变量的存储器类型,使之能够在8051单片机内准确地定位。KeilC51能够识别的存储器类型存储器类型说明DATA直接寻址的片内数据存储器(128字节),访问速度最快。BDATA可位寻址的片内数据存储器(16字节),允许位与字节混合访问。IDATA间接访问的片内数据存储器(256字节),允许访问全部片内地址。PDATA分页寻址的片外数据存储器(256字节),用MOVX@Ri指令访问。XDATA片外数据

5、存储器(64K字节),用MOVX@DPTR指令访问。CODE程序存储器(64K字节),用MOVC@A+DPTR指令访问。编译模式KeilC51定义变量时如果省略“存储器类型”选项,则按编译时使用的存储器模式SMALL、COMPACT或LARGE来规定默认存储器类型,确定变量的存储器空间,函数中不能采用寄存器传递的参数变量和过程变量也保存在默认的存储器空间。KeilC51能够识别的编译器模式编译模式存储器类型SMALLDATA,变量被定义在8051片内数据存储器中。COMPACTPDATA,变量被定义在分页寻址的片外数据存储器中,每一页片外数据存储器的长度为256

6、字节。这时对变量的访问是通过寄存器间接寻址(MOVX@Ri)进行。LARGEXDATA,变量被定义在片外数据存储器中(最大可达64K字节),使用数据指针DPTR来间接访问变量(MOVX@DPTR)。一般指针与基于存储器的指针KeilC51支持两种指针类型:一般指针和基于存储器的指针。一般指针可用于存取任何变量而不必考虑变量在8051单片机存储器空间的位置,许多C51库函数采用了一般指针。定义一般指针与ANSIC相同,例如:char*sptr;/*char型指针*/int*numptr/*int型指针*/定义基于存储器的指针时可以指定存储器空间,例如:charda

7、ta*xdatastr;/*指向data空间char型数据的指针,指针本身在xdata空间*/intxdata*datanum;/*指向xdata空间char型数据的指针,指针本身在data空间*/longcode*idatapow;/*指向code空间long型数据的指针,指针本身在idata空间*/KeilC51对存储器的访问KeilC51可以采用指针变量来访问存储器地址空间。由于8051单片机存储器结构自身的特点,仅用指针方式访问有时会感觉不太方便,也可以利用库函数中绝对地址访问头文件“ABDACC.H”来访问不同区域的存储器地址空间。绝对地址访问Keil

8、C51在源程序中定义变量

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。