单片机C51基础知识汇总
李小鹏
2019.12.24
1、标识符
2、数据类型
3、变量
4、常量
5、二进制、八进制、十进制、十六进制
6、运算符
7、语句
8、注释
9if语句
10switch--case语句
11for循环
12while循环
13do—while循环
14、循环控制
15、一维数组
16、二维数组
17、字符数组与字符串数组
18、函数
19、函数重入与递归
20、预处理
21、宏
22、条件编译指令
23、指针(*
24、结构 struct
25、联合(union)
26、枚举(enum)
主要内容
1 .标识符
标识符就是编程时使用的表示某个事情名称的符号,如函数名、变量名、引脚名、特殊功能寄存器名等。标识符有系统标识符和用户自定义标识符之分。
标识符的命名规则:
(1) 标识符第一个字符必须是字母或下划线。
(2) 标识符只能由字母、数字和下划线三类字符组成。
(3) 标识符是区分大小写的。如 A a 是两个不同的标识符。
(4) 标识符有效长度不超过 32 个字符。
(5) 标识符不能是 C51 的关键字。
2 数据类型
char 有符号字符型,一字节,值域-128127
int 有符号整型,两字节,值域-3276832767
long 有符号长整型,四字节,值域-2147483648单片机printf函数2147483647
unsigned char 无符号字符型,一字节,值域 0255
unsigned int 无符号整型,两字节,值域 065535
unsigned long 无符号长整型,四字节,值域 04294967295
float 浮点型(都是有符号的),四字节,±1.175494E-38~±3.402823E+38
bit 位变量,一个二进制位,值域 01
sbit  51 单片机特殊功能寄存器位,值域 01
Sfr  51 单片机特殊功能寄存器,值域 0255
sfr16  51 单片机特殊功能寄存器,如 DPTR,值域 065535
bitsbitsfrsfr16 不是标准 C 的内容,是 51 单片机及 C51 编译器特有的,不能用指针对它们进行操作。
3 .变量
C51 规定所有变量在使用前都必须加以说明。变量说明语句由数据类型、可选的存储类型和
其后的一个或多个变量名组成,形式如下:
数据类型 [存放类型] 变量表;
变量的作用范围:在花括号内说明(也称声明或定义)的变量,其作用范围仅限该花括号内,称为局部变量;在所有函数外面定义的变量,其作用范是整个程序,称为全局变量。
静态变量:在类型前加关键词 static 说明的变量,称静态变量。在函数内部定义的静态变量也是局部变量,但它在函数下次调用时,能保存上次调用的值。在函数外面定义的静态变量,是全局变量,但它只在当前 C 文件中有效。这可以防止多个 C 文件中同名冲突。
(函数加了关键词 static,可以定义成静态函数,静态函数只能被同一个 C 文件的程序调用。)
4 .常量
常量的意思就是不可改变的量,是一个常数。同变量一样,常量也可以有各种数据类型。常量可以用以下几种方式定义:
(1)宏定义
#define  OFF  1          /*定义常量标识符 OFF,其值为 1*/
(2)使用 CODE 空间
char code array[]={1,2,3,4};
                      /*定义一个常数表,存放在程序存储器中*/
(3)常量定义关键词 const
Const  int  MAX = 60;
(4) enum 枚举常量
enum  switchENUM {ON,OFF};       /*ON 值为 0OFF 值为 1*/
5 二进制,十进制,八进制,十六进制
1C 语言中没有二进制的直接表示方法。
2)以数字“0”开头的数为八进制,如 067
3)以“0x”或“0X”开头的数为十六进制,如 0x3F
4)八进制及十六进制与二进制都可以直接转换,八进制每 1 位数对应 3 位二进制数。十六进制的每 1 位对应 4 位二进制数。