文章目录
- 单片机中C语言的规则
- 基本标点符号
- C语言关键字与五大语句
- 32个关键字
- 特殊关键字
- C51单片机预处理关键字
- 单片机的常量(不可以被修改)
- 单片机的变量
- 构造类型:数组
- ==**特别注意RAM和ROM区别**==
- RAM随机存储器
- ROM只4读存储器
- 构造类型:结构体
- 构造类型:指针
- 指针数组
- 数组指针
- 多维数组指针
单片机中C语言的规则
基本标点符号
C51的标点符号有很多,编写程序的时候,特别注意两点
- 不能使用中文输入法或者其他国家的非美标英文输入法
- 两个符号组合出来的标点符号,中间不能有空格的
C语言关键字与五大语句
C语言主要是由判断,循环,条件循环,选择,跳转五大语句构成
C51总共32个关键字,以及十多个C51特殊关键字
32个关键字
32关键字 | 关键字的作用 |
---|---|
关键字1:if | 条件语句 |
关键字2:else | 条件语句否定分支(与if连用) |
关键字3:do | 循环语句的循环体 |
关键字4:while | 循环语句的循环判断 |
关键字5:for | 次数有限循环语句 |
关键字6:switch | 用于开关语句 |
关键字7:case | 开关语句分支 |
关键字8:default | 开关语句中的其他分支 |
关键字9:break | 跳出当前循环 |
关键字10:goto | 无条件跳转 |
关键字11:static | 声明静态变量 |
关键字12:auto | 声明自动变量,默认不写 |
关键字13:const | 声明只读变量,常量保存到内存区 |
关键字14:extern | 声明变量或函数在其他文件中 |
关键字15:char | 声明(8位)字符型变量或函数返回值类型 |
关键字16:short | 声明(16位)短整型变量或函数返回值类型 |
关键字17:long | 声明(32位)长整型变量或函数返回值类型 |
关键字18:float | 声明(小数)浮点型变量或函数返回值类型 |
关键字19:double | 声明双精度浮点型变量或函数返回值类型 |
关键字20:int | 声明整型变量或函数 |
关键字21:signed | 声明有符号类型变量或函数 |
关键字22:unsigned | 声明无符号类型变量或函数 |
关键字23:typedef | 用以给数据类型取别名 |
关键字24:void | 声明函数无返回值或无参数,无类型指针 |
关键字25:return | 子程序返回语句 |
关键字26:struct | 声明结构体类型 |
关键字27:union | 声明共用体类型 |
关键字28:enum | 声明枚举类型 |
关键字29:volatile | 用它修饰的变量可以防止被编译器优化 |
关键字30:register | 声明寄存器变量 |
关键字31:continue | 结束当前循环 |
关键字32:sizeof | 计算数据类型或变量长度(即所占字节数) |
特殊关键字
特殊关键字 | 特殊关键字的作用 |
---|---|
关键字1:bit | 声明一个位变量或者位类型函数 |
关键字2:sbit | 声明一个可以位寻址的变量 |
关键字3:sfr | 声明一个特殊功能寄存器(8位) |
关键字4:sfr16 | 声明一个特殊功能寄存器(16位) |
关键字5:data | 直接寻址的8051内部数据存储器 |
关键字6:bdata | 可以按位寻址的8051内部数据存储器 |
关键字7:idata | 间接寻址的8051内部数据寄存器 |
关键字8:pdata | “分页”寻址的8051内部数据存储器 |
关键字9:xdata | 8051外部数据存储器,STC增强型硬件内部,xdata如果没有赋值,可能会随机分配值 |
关键字10:code | 8051程序存储器 |
关键字11:interrupt | 定义一个中断入口函数 |
关键字12:reentrant | 定义一个再入函数 |
关键字12:using | 定义一个8051的工作寄存器组 |
C51单片机预处理关键字
C51单片机预处理关键字 | C51单片机预处理关键字的作用 |
---|---|
关键字1:# | 空指令,无任何效果 |
关键字2:#include | 包含一个源代码文件 |
关键字3:#define | 定义宏 |
关键字4:#undef | 取消已定义的宏 |
关键字5:#if | 如果给定条件为真,则编译下面代码 |
关键字6:#ifdef | 如果宏已经定义,则编译下面代码 |
关键字7:#ifndef | 如果宏没有定义,则编译下面代码 |
关键字8:#elif | 如果#if给定条件为假,当前条件为真编译代码 |
关键字9:#endif | 结束一个#if…#else条件编译块 |
关键字9:#error | 停止编译并显示错误信息 |
单片机的常量(不可以被修改)
下载之后,单片机在正常运行的时候,只读的数据,下载后保存于16KB的flash(ROM)里面。在C51里面用关键字code来标记,比如点阵的子模,数码管字模,符号代表的重要参数
比如:code a = 5;//定义常量a,固定值5 flash ROM 里面的code相当于电脑的硬盘
单片机的变量
单片机在正常运行的时候,可以随时擦写的数据,临时保存于4096字节的通用RAM寄存器里面。
数据类型有: bit(1位) char(8位) short(16位) long(32位) float(小数) int(16位或32位)
存储空间有: bdata(保存8个字节,是bit类型的变量) data(一级缓存,128个字节包括了bdata的8个字节) idata(二级缓存) pdata xdata(内存条)
生命周期:动态(auto) 静态(static) 外部(extern)
变量作用域: 函数内部使用局部变量 函数之间的全局变量
构造类型:数组
把相同类型的常量或者变量,多个进行排队放好,连续存储的集体,就是一堆一维数组
数组同单个变量或者常量一样使用,比如
数据类型————位置——数组名[数组长度]
unsigned char xdata a[3] = {255,100,8};
a[2]=0x55;//赋值给数组第三个数(编号2)
P3 = a[1];//取数组的第二个数(编号1)
二维数组:把相同类型的多个一维数组按照一定顺序排列,再构造高层集体,地址是连续的
数据类型–位置–数组名[二维] [一维]
char xdata Buffer[3][2]={{a,b},{c,d},{e,f}};
char a[] = "hello bit";//一维字符串
字符串要加双引号,代表的是ASCII值,例如上面P3 = a[0];查询ASCII码,h的码是0x68,P3口就等于0x68;
特别注意RAM和ROM区别
RAM随机存储器
RAM --random access memory 随机存储器 易挥发性 掉电失忆
人话解释: ram是运存容量 相当于内存条 ram 越大 手机能执行的程序越多 打开和切换程序的越快,运行游戏和程序就越不卡。
ROM只4读存储器
ROM --read only memory只读存储器 一次写入 反复读取
**人话解释:**rom是机子储存空间 相当于电脑内存 相对来说 存储空间越大 能装下的程序就越多 说白了功能相当于sd卡。
构造类型:结构体
把不同的数据类型,按数组的方式做成一个集合体,形成一个新的数据类型
构造类型:指针
指针:用于直接读取或者修改内存值
指针变量的定义和赋值
==变量指针:==变量在内存中的起始地址
==指针变量:==用新的变量来保存其他变量的内存地址
注意
指针变量是保存某个数据的地址,那么,指针的数据类型要和变量的数据类型一致
指针数组
指针数组:存放多个指针变量的集合体
数组指针
数组指针:不同数组在内存中的首地址
多维数组指针
多维数组指针:要明确 多维 下标