单片机C语言:基本语法,你会吗?

在单片机开发中最常使用的就是C语言了,C语言主要由关键字、标识符、常量、字符串以及符号等令牌组成。

首先看一个程序,通过程序学习C语言的基本语法:

#include \”stdio.h\”

Int main()

{

int a;//a表示年龄

a=25;

Printf(\”需要输出的年龄为:%d\\n\”,a);

}

标识符:用一个符号表示函数,变量,常量或者其他名称,标识符第一个符号必须是a—-或者A—Z或_,不可以是数字,除了第一个符号其他的是可以使用数字的例如:A1,a2,都是对的,1a,1A都是错误的,标识符不可以使用标点符号,不可以和C关键字相同。在上面程序中,a就是一个标识符。

分号:在C语言中\”;\”是用来表示程序语句的结束。

关键字:C标准中有32个关键字,在单片机开发中常用,int,char,long,break,const,while等关键字,在上面的程序中用到了int关键字,下面我将32个关键字列出并说明。

auto :声明自动变量

break:跳出当前循环

case:开关语句分支

char :声明字符型变量或函数返回值类型

const :声明只读变量

continue:结束当前循环,开始下一轮循环

default:开关语句中的\”默认\”分支

do :循环语句的循环体

double :声明双精度浮点型变量或函数返回值类型

else :条件语句否定分支(与 if 连用)

enum :声明枚举类型

extern:声明变量或函数是在其它文件或本文件的其他位置定义

float:声明浮点型变量或函数返回值类型

for:一种循环语句

goto:无条件跳转语句

if:条件语句

int: 声明整型变量或函数

long :声明长整型变量或函数返回值类型

register:声明寄存器变量

return :子程序返回语句(可以带参数,也可不带参数)

short :声明短整型变量或函数

signed:声明有符号类型变量或函数

sizeof:计算数据类型或变量长度(即所占字节数)

static :声明静态变量

struct:声明结构体类型

switch :用于开关语句

typedef:用以给数据类型取别名

unsigned:声明无符号类型变量或函数

union:声明共用体类型

void :声明函数无返回值或无参数,声明无类型指针

volatile:说明变量在程序执行中可被隐含地改变

while :循环语句的循环条件

注释:在程序设计过程中,注释是避免不了的,合理的注释能方便我们对程序的阅读,上面程序中。\”//\”后面的文字就是注释,我们注释时使用\”//\”双斜杠的目的是告诉编译器这后面的是注释你不用看了。

如何学习单片机?单片机c语言编程入门教程

我当初是自学单片机的,也用同样的方法带出过月入15K以上的徒弟。

我的方法不能说是最好的,但绝对是靠谱的,毕竟都是曾经自己趟过的路。

如果你还在纠结你的学历,纠结英语数学不好能不能学会的问题。

今天我就给你吃的定心丸,别的行业不敢说,单片机:稳!

学历,以及数学英语是决定你的天花板有多高,而不是门槛。

Ok,下面干货开始

一、如何学习单片机?

看了很多帖子,单片机要学的东西很多,既要懂硬件又要会编程之类的话。

把很多人都吓尿在门外,其实这句话只对了一半。

单片机确实是要懂硬件和编程,但很多人忽略了学习的深度的问题

我拿当初自学java来举例吧,光是java se就学了我1个多月,学完以后才发现只是入了门,接下来还要学习java ee或者me,还要学数据库等等。

而对于单片机来说,同样是学编程,单片机主要是学C语言,学完以后直接就可以参与项目开发了。

那单片机+C语言只要你的学习路径正确,1个月之内完全可以搞定。

最佳学习路径和入门到高级教程可以参考我下面这篇文章,每个阶段学到什么程度都讲得很清楚

那再来说下硬件,同样也是学习深度的问题,做单片机软件开发其实只要看得懂电路原理就可以了。

工作中一般会有硬件工程师设计好电路,而大多数电路都是模块化的,比如说电源都是芯片方案,电路图原厂都会给你,蓝牙通讯也是模块,直接和串口通讯,语音播放也是模块,直接通过单个IO口来完成指定语音播放。

如果一开始你就去纠结什么放大电路、滤波电路、运算电路,信号转换等等,注定你很难学的会单片机。

因为你学习方向都偏了。

不是说这些不重要,而是看阶段,初学本来就没经验,所以理解起来也难。

当你有足够的经验了,再回过头来学习这些知识,或许就简单多了,理解也更深刻。

单片机「C语言」

以下是个人总结的,如有误请指出。

  • 常量和变量的区别在于

前者的数是固定的,后者的数是随机的。

  • 形参和实参的区别在于

前者只是规定了参数是什么类型的一个形式的参数 ,后者是一个实际的参数。

  • 函数模块化和调用

函数模块化无非就是把实现功能的语句放进C文件,再把定义函数的语句放进件(头文件)然后再在主函数main里面直接调用头文件里定义的语句。

传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路

模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include \”XXX.h\”文件即可。使用模块化编程可极大地提高代码的可阅读性、可维护性、可移植性等

模块化

  • 子函数和数组

子函数:将完成某一种功能的程序代码单独抽取出来形成一个模块,在其它函数中可随时调用此模块,以达到代码的复用和优化程序结构的目的

void Function(unsigned char x, y)

{

}

返回值 函数名(形参)

{

函数体

}

数组:把相同类型的一系列数据统一编制到某一个组别中,可以通过数组名+索引号简单快捷的操作大量数据

int x[3]; //定义一组变量(3个)

int x[]={1,2,3}; //定义一组变量并初始化

x[0] //引用数组的第0个变量

x[1] //引用数组的第1个变量

x[2] //引用数组的第2个变量

引用x[3]时,数组越界,读出的数值不确定,应避免这种操作

  • C预编译

C语言的预编译以#开头,作用是在真正的编译开始之前,对代码做一些处理(预编译)

  • C语言语句

选择结构

就是实现选择功能的。

循环结构

实现循环功能的。

  • 函数返回值以及如何接返回值

一个加工厂 给材料返回东西,就叫有参数有返回值。

一个加工厂 不给材料返回东西 ,就叫无参数有返回值。

一个加工厂 给材料不返回东西,就叫有参数无返回值。

一个加工厂 不给材料不返回东西,就叫无参数无返回值。

如何接住返回值呢?

定义一个变量,然后把函数有返回值的函数调用再赋值给变量。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。