C51的数据结构.ppt
《C51的数据结构.ppt》由会员分享,可在线阅读,更多相关《C51的数据结构.ppt(46页珍藏版)》请在优知文库上搜索。
1、C51的数据结构的数据结构 C51变量定义的四个要素存储种类存储种类 一、 自动变量(auto)在函数内部定义的变量,退出函数后,分配给该变量的存储单元即自行消失(局部变量)。 二、外部变量(extern)在函数外部定义的变量,可始终保持变量的数值(全局变量)。 【强调】一个外部变量只能被定义一次,在定义文件之外的地方使用时需用extern进行声明。 三、 静态变量(static)静态局部变量/静态全局变量 四、 寄存器变量(register)以寄存器为存储空间的变量 * 若省略存储种类选项,则变量默认为自动变量 基本数据类型基本数据类型 38 38 308 30810101010数据类型长度
2、值域字符型(char)unsigned char单字节0255signed char单字节-128+127整形(int)unsigned int双字节065535signed int双字节-32768+32767长整形(long)unsigned long4字节04294967295signed long4字节-2147483648+2147483647浮点型(float)float4字节double8字节指针型普通指针*1-3字节065535C51扩充数据类型扩充数据类型 C51扩充数据类型:bit、sfr或sfr16、sbit sfr或sfr16型 sfr定义特殊功能寄存器SFR的地址,语
3、法规则如下: sfr 或 sfr16 sfr_name = 字节地址常数; 例如,sfr P0 = 0 x80; /定义P0口地址80Hsfr PCON = 0 x87; /定义PCON地址87H sfr16 DPTR=0 x82; /定义DPTR的低端地址82H 有些新型的单片机,有些新增的寄存器在Keil C的包含文件夹“inc”里可能没有,这是就需要在程序的最前面用此方法定义。 如宏晶公司的单片机STC12C5A60S中为一个称作AUXR的寄存器,在内部RAM中的地址为0 x8E,可定义如下: sfr AUXR=0 x8E; 这种定义以后,在程序中就可对AUXR进行操作。sbit型 sb
4、t型是能够按位寻址的特殊功能寄存器中位变量。其定义的一般格式为: sbit位变量名 位地址表达式位地址表达式有三种形式 直接位地址;特殊功能寄存器名带位号;字节地址带位号。1、sbit bit_name = 位地址常数; 将位于SFR字节地址内的绝对位地址定义为位变量名。 例如,sbit CY = 0 xD7; 2、sbit bit_name = sfr_name 位位置; 将已有定义的SFR的07位定义为位变量名。 例如: sfr PSW = 0 xD0; sbit CY = PSW7; 3、sbit bit_name = sfr字节地址 位位置; 将SFR字节地址的相对位地址定义为位变量名
5、。 例如: sbit CY = 0 xD07; 以上三种定义对于CY来讲是一样的,即等效.举例:点亮一个发光二极管 图6.1 复位时的仿真情况解答 #include sbit D1=P10; main() D1=; while(1); 对位变量的定义也可以是: “sbit D=0 x900”,因为P1口的地址为0 x90. C51编译器在头文件“reg51.h”中定义了全部sfr/sfr16和sbit变量。 用一条预处理命令#include 把这个头文件包含到C51程序中,无需重定义即可直接使用它们的名称。 reg51.h中的内容如下: #ifndef _REG51_H_ #define _R
6、EG51_H_ /* BYTE Register */ sfr P0 = 0 x80; sfr P1 = 0 x90; /* BIT Register */ /* PSW */ sbit CY = 0 xD7; sbit AC = 0 xD6; sbit RI = 0 x98; #endif4、几点说明 1)用sbit定义的位变量,必须能够按位操作,而不能够对无位操作功能的位定义位变量。 2)用sbit定义位变量,必须放在函数外面作为全局位变量,而不能在函数内部定义。 3)用sbit每次只能定义一个位变量。 4)对其它模块定义的位变量(bit型或 sbit型)的引用声明,都使用bit。 5)用
7、sbit定义的是一种绝对定位的位变量(因为名字是与确定位地址对应的),具有特定的意义,在应用时不能像bit型位变量那样随便使用。三、bit 型位变量的C51定义 除了通常的C数据类型外, C51编译器还支持“bit”数据类型, 称之为位变量,只有一位,其值只能是0或1, 这对于记录系统状态是十分有用的, 因为它往往需要使用某一位而不是整个数据字节。 例如:bit door = 0 ; /定义一个叫door的变量且初值为0 与标准C的变量定义及初始化用法是一致的。在C51中定义位变量的一般语法形式如下: 位类型标识符(bit) 位变量名; bit my_bit; /* 把my_bit 定义为位变
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C51 数据结构