- 9
- 0
- 约6.32千字
- 约 27页
- 2016-12-10 发布于重庆
- 举报
C51单片机
* * 使用C语言有以下的优点: C 语言具有结构化和模块化特点,便于阅读和维护。 C 语言可移植性好,很多微控制器都支持C 编译器。 C 语言编写的程序比汇编语言编写的程序更符合人们的思考习惯,开发者可以更专心的考虑算法,而不是考虑一些细节问题。这样可以减少编程出错的机率,从而提高开发效率,减少调试的时间。 C 语言和微控制器是相对独立的,开发者不必知道处理器的具体内部结构和处理过程。当基于新型的微控制器开发程序时,可以很快上手,减少学习时间和程序开发时间。 C51语言 C51数据类型 数据类型 C51专用 长度 取值范围 signed char 单字节 -128 ~ +127 unsigned char 单字节 0 ~ 255 signed short 2字节 -32768 ~ +32767 unsigned short 2字节 0 ~ 65535 signed int 2字节 -32768 ~ +32767 unsigned int 2字节 0 ~ 65535 signed long 4字节 -2147483648 ~ +214746483647 unsigned long 4字节 0 ~ 4294967295 float 4字节 ±1.175494E-38 ~ ±3.402823E+38 * 1~3字节 对象的地址 enum 1或2字节 -128 ~ +127 或 -32768 ~ +32767 位运算符 符号 含义 按位与 | 按位或 ^ 按位异或 ~ 按位取反。一元运算符 左移。左边移出的位舍去,右边移入的位补0 右移。右边移出的位舍去,左边移入的位对无符号数补0;对有符号数补符号位 例: unsigned char x=0x55 ; 0101 0101B unsigned char y=0x37 ; 0011 0111B unsigned char z; z=xy ; 则 z=0x15 0001 0101B z=x|y ; 则 z=0x77 0111 0111B z=x^y ; 则 z=0x62 0110 0010B z=~x; 则 z=0xAA 1010 1010B z=x2; 则 z=0x54 0101 0100B z=x1; 则 z=0x2A 0010 1010B 位运算符举例 C51中的特殊数据类型 C51中有几种ANSI C所没有的特殊数据类型,这些数据类型与存储区域和存储器类型的概念密切相关。 数据类型 C51专用 长度 取值范围 bit 专用 1位 0 或 1 sbit 专用 1位 0 或 1 sfr 专用 1字节 0 ~ 255 sfr16 专用 2字节 0 ~ 65535 位变量 位变量(Bit Types)是指用一个二进制位表示的变量。位数据类型可以用来说明变量,参数表,函数返回值等。位数据变量声明和基本的数据类型声明一样。 所有的位变量都存储在内部数据区的可位寻址段(0x20~0x2F)中。因为该段只有16个字节长,所以在一个作用域内最多只能声明128个位变量。 static bit done_flag = 1; // 位变量 bit testfunc (bit flag1, bit flag2 ) //参数和返回值均为位类型 { return done_flag; //位类型返回值 } 可位寻址的对象 可位寻址的对象(Bit-addressable Objects)是指既可以字节(字)寻址也可以位寻址的对象。 只有当数据对象占据8051内部数据区的可位寻址区时,才是一个可位寻址对象。 C51使用bdata存储器类型来声明可位寻址对象。 例如: int bdata ibase; /*可位寻址的整型变量 */ char bdata bary [4]; /* 可位寻址的字符型数组 */ 注意:可位寻址的对象必须为全局变量,不能是局部变量。由于bdata区为16个字节,因此可寻址对象所占存储空间不能大于16个字节。 可位寻址的对象的位可以单独访问和更改。可以用sbit声明位变量来访问bdata声明的变量的指定位。如: sbit mybit0 = ibase ^ 0; /* bit 0 of ibase */ sbit mybit15 = ibase ^ 15; / * bit 15 of ibase */ sbit ary07 = bary[0] ^ 7; /* bit 7 of bary[0] */ sbit ary37 = bar
原创力文档

文档评论(0)