单片机中C语言的规则

这是我参与11月更文挑战的第28天,活动详情查看:2021最后一次更文挑战

[toc]

单片机中C语言的规则

基本标点符号

C51的标点符号有很多,编写程序的时候,特别注意两点

  1. 不能使用中文输入法或者其他国家的非美标英文输入法
  2. 两个符号组合出来的标点符号,中间不能有空格的
image-20210926090128271

image-20210926090215521

image-20210926090239519

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)

变量作用域: 函数内部使用局部变量 函数之间的全局变量

image-20210926063701472

image-20210926070037134

构造类型:数组

把相同类型的常量或者变量,多个进行排队放好,连续存储的集体,就是一堆一维数组

数组同单个变量或者常量一样使用,比如

数据类型————位置——数组名[数组长度]

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卡。

构造类型:结构体

把不同的数据类型,按数组的方式做成一个集合体,形成一个新的数据类型

构造类型:指针

指针:用于直接读取或者修改内存值

指针变量的定义和赋值

变量指针:变量在内存中的起始地址

指针变量:用新的变量来保存其他变量的内存地址

image-20210926150955756

注意

指针变量是保存某个数据的地址,那么,指针的数据类型要和变量的数据类型一致

指针数组

指针数组:存放多个指针变量的集合体

数组指针

数组指针:不同数组在内存中的首地址

多维数组指针

多维数组指针:要明确 多维 下标

猜你喜欢

转载自juejin.im/post/7035418348812763144