Keil C51应用程序设计.ppt
《Keil C51应用程序设计.ppt》由会员分享,可在线阅读,更多相关《Keil C51应用程序设计.ppt(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Keil C51应用程序设计应用程序设计Keil C51Keil C51程序的一般结构程序的一般结构 与标准C语言相同,Keil C51程序由一个或多个 函数构成,其中应至少包含一个main函数。一般结构如下: 预处理命令 /* 用于包含头文件等 */全局变量说明 /* 全局变量可被本程序的所有函数引用 */功能函数说明 /* 说明自定义函数,以便调用 */ main() /* 主函数 */ 局部变量说明;/* 局部变量只能在所定义函数内部引用 */ 执行语句; 函数调用;/* 其他函数定义 */ 数数据类型据类型 Keil C51编译器除了支持常用的char(字符型), int(整型), l
2、ong(长整型), float(浮点型),*(指针型)等基本数据类型之外,还支持以下扩充数据类型。bit bit 位类型位类型。可定义一个位变量,但不能定义位 指针, 也不能定义位数组。sfr sfr 特殊功能寄存器。特殊功能寄存器。可以定义8051单片机的所有内部8位特殊功能寄存器。sfr型数据占用一个内存单元, 其取值范围是0255。sfr16 16sfr16 16位特殊功能寄存器。位特殊功能寄存器。它占用两个内存单元, 取值范围是065535,可以定义8051单片机内部16位特殊功能寄存器。sbit sbit 可寻址位。可寻址位。可以定义8051单片机内部RAM中的可寻址位或特殊功能寄存
3、器中的可寻址位。 Keil C51Keil C51能够识别的数据类型能够识别的数据类型 数据类型长 度值 域 unsigned char单字节0255signed char单字节-128127unsigned int双字节065536signed int 双字节-3276832767unsigned long四字节04294967295signed long四字节 -21474836482147483647float四字节1.175494E-383.402823E38*13字节对象的地址bit位 0 或 1sfr单字节0255sfr16双字节 065536sbit位0 或 1变量定义格式变量定
4、义格式Keil C51 中对变量进行定义的格式如下: 存储种类存储种类 数据类型数据类型 存储器类型存储器类型 变量名表;变量名表;其中, “存储种类”和“存储器类型”是可选项。 变量的存储种类有四种: 自动(auto)、外部(extern)、静态(static)和寄存器(register)。定义变量时如果省略存储种类选项,则该变量将为自动(auto)变量。 Keil C51编译器还允许说明变量的存储器类型,使之能够在8051单片机内准确地定位。Keil C51Keil C51能够识别的存储器类型能够识别的存储器类型 存储器类型说 明DATA直接寻址的片内数据存储器(128字节), 访问速度最
5、快。BDATA可位寻址的片内数据存储器(16字节), 允许位与字节混合访问。IDATA间接访问的片内数据存储器(256字节), 允许访问全部片内地址。PDATA分页寻址的片外数据存储器(256字节), 用MOVX Ri指令访问。XDATA片外数据存储器(64K字节), 用MOVX DPTR指令访问。CODE程序存储器(64K字节), 用MOVC A+DPTR指令访问。编译模式编译模式 Keil C51定义变量时如果省略“存储器类型”选项, 则按编译时使用的存储器模式SMALLSMALL、COMPACTCOMPACT或LARGELARGE来规定默认存储器类型,确定变量的存储器空间, 函数中不能采
6、用寄存器传递的参数变量和过程变量也保存在默认的存储器空间。 Keil C51Keil C51能够识别的编译器模式能够识别的编译器模式 编译模式存储器类型SMALLDATA,变量被定义在8051片内数据存储器中。COMPACT PDATA,变量被定义在分页寻址的片外数据存储器中, 每一页片外数据存储器的长度为256字节。这时对变量的访问是通过寄存器间接寻址(MOVX Ri)进行 。LARGEXDATA,变量被定义在片外数据存储器中(最大可达64K字节), 使用数据指针DPTR来间接访问变量(MOVX DPTR)。 一般指针与基于存储器的指针一般指针与基于存储器的指针 Keil C51支持两种指针
7、类型:一般指针和基于存储器的指针。一般指针可用于存取任何变量而不必考虑变量在8051单片机存储器空间的位置,许多C51库函数采用了一般指针。 定义一般指针与ANSI C相同,例如:char * sptr; /* char 型指针 */int * numptr /* int 型指针 */ 定义基于存储器的指针时可以指定存储器空间 ,例如:char data * xdata str; /* 指向data空间char型数据的指针, 指针本身在xdata空间*/ int xdata * data num; /* 指向xdata空间char型数据的指针, 指针本身在data空间*/long code *
8、 idata pow; /* 指向code空间long型数据的指针, 指针本身在idata空间*/ Keil C51Keil C51对存储器的访问对存储器的访问Keil C51可以采用指针变量来访问存储器地址空间。由于8051单片机存储器结构自身的特点,仅用指针方式访问有时会感觉不太方便,也可以利用库函数中绝对地址访问头文件“ABDACC.H”来访问不同区域的存储器地址空间。绝对地址访问绝对地址访问 Keil C51在源程序中定义变量时,可以利用扩展关键字“_at_”来对指定变量在存储器空间的绝对地址,一般格式如下: 存储器类型存储器类型 数据类型数据类型 标识符标识符 _at_ 地址常数地址
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Keil C51应用程序设计 C51 应用 程序设计
限制150内