【全栈计划 —— 单片机】——Part_01 单片机数字电路基础+C51基础概念(3)

简介: 【全栈计划 —— 单片机】——Part_01 单片机数字电路基础+C51基础概念(3)

2.2.4、表达式及复合语句


2.2.4.1、表达式语句

微信图片_20221019144816.png

可以一行放一个表达式形成表达式语句,也可以一行放多个表达式形成表达式语句,这时每个表达式后面都必须带 ; 号,另外,还可以仅由—个分号 ;占一行形成一个表达式语句,这种语句称为空语句。


2.2.4.2、复合语句


复合语句是由若干条语句组合而成的一种语句,在C51 中,用一个大括号{ }将若干条语句括在一起就形成了一个复合语句,复合语句最后不需要以分号“;”结束,但它内部的各条语句仍需以分号;结束。微信图片_20221019144835.png

复合语句在执行时,其中的各条单语句按顺序依次执行,整个复合语句在语法上等价于一条单语句,因此在C51 中可以将复合语句视为一条单语句。


通常复合语句出现在函数中,实际上,函数的执行部分(即函数体)就是一个复合语句;复合语句中的单语句一般是可执行语句,此外还可以是变量的定义语句(说明变量的数据类型)。在复合语句内部语句所定义的变量,称为该复合语句中的局部变量,它仅在当前这个复合语句中有效。利用复合语句将多条单语句组合在—起,以及在复合语句中进行局部变量定义是C51 的一个重要特征。


2.2.5、基本结构和相关语句


2.2.5.1、顺序结构


顺序结构是最基本、最简单的结构,在这种结构中,程序由低地址到高地址依次执行


2.2.5.2、选择结构


选择结构可使程序根据不同的情况,选择执行不同的分支,在选择结构中,程序先都对一个条件进行判断。当条件成立,即条件语句为“真”时,执行一个分支,当条件不成立时,即条件语句为“假”时,执行另一个分支。

在C51 中,实现选择结构的语句为 if - else , if - else if 语句。另外在C51中还支持多分支结构,多分支结构既可以通过if 和 else if 语句嵌套实现,可用swith/case 语句实现。


2.2.5.3、循环结构


在程序处理过程中,有时需要某一段程序重复执行多次,这时就需要循环结 构来实现,循环结构就是能够使程序段重复执行的结构。循环结构又分为两种:

当(while)型循环结构和直到(do…while)型循环结构。


①当型循环结构

当型循环结构如图:当条件P 成立(为“真”)时,重复执行语句A,当条件不成立(为“假”)时才停止重复,执行后面的程序。

②直到型循环结构

直到型循环结构,先执行语句A,再判断条件P,当条件成立(为“真”)时,再重复执行语句A,直到条件不成立(为“假”)时才停止重复,执行后面的程序。

构成循环结构的语句主要有:while、do - while、for、goto。


2.2.5.4、break 和 continue 以及 return 语句


(1)、使用break 语句还可以从循环体中跳出循环,提前结束循环而接着执行循环结构下面的语句。它不能用在除了循环语句和switch 语句之外的任何其它语句中。


(2)、continue 语句用在循环结构中,用于结束本次循环,跳过循环体中continue下面尚未执行的语句,直接进行下一次是否执行循环的判定


(3)、return 语句一般放在函数的最后位置,用于终止函数的执行,并控制程序返回调用该函数时所处的位置。返回时还可以通过return语句带回返回值。return 语句格式有两种: ① return; ② return (表达式);

如果return语句后面带有表达式,则要计算表达式的值,并将表达式的值作为函数的返回值。若不带表达式,则函数返回时将返回一个不确定的值。通常我们用return语句把调用函数取得的值返回给主调用函数。


2.2.6、函数


2.2.6.1、函数的定义

微信图片_20221019144835.png

格式说明:

1.函数类型

函数类型说明了函数返回值的类型。

2.函数名

函数名是用户为自定义函数取的名字以便调用函数时使用。

3.形式参数表

形式参数表用于列录在主调函数与被调用函数之间进行数据传递的形式参数。


区别在这儿:

4.reentrant 修饰符

这个修饰符用于把函数定义为可重入函数。所谓可重入函数就是允许被递归调用的函数。函数的递归调用是指当一个函数正被调用尚未返回时,又直接或间接调用函数本身。一般的函数不能做到这样,只有重入函数才允许递归调用。——(感觉不如c和cpp方便,一般也应该用不到,递归效率低,开发时候用不划算,权当了解吧)

关于重入函数,注意以下几点:

(1)用reentrant 修饰的重入函数被调用时,实参表内不允许使用bit 类型的参数。函数体内也不允许存在任何关于位变量的操作,更不能返回bit 类型的值。

(2)编译时,系统为重入函数在内部或外部存储器中建立一个模拟堆栈区, 称为重入栈。重入函数的局部变量及参数被放在重入栈中,使重入函数可以实现递归调用。

(3)在参数的传递上,实际参数可以传递给间接调用的重入函数。无重入属性的间接调用函数不能包含调用参数,但是可以使用定义的全局变量来进行参 数传递。

5、interrupt m 修饰符

interrupt m 是C51 函数中非常重要的一个修饰符,这是因为中断函数必须 通过它进行修饰。在C51 程序设计中,当函数定义时用了interrupt m修饰符, 系统编译时把对应函数转化为中断函数,自动加上程序头段和尾段,并按51 系 统中断的处理方式自动把它安排在程序存储器中的相应位置。

在该修饰符中,m 的取值为0~31,对应的中断情况如下:

0——外部中断0

1——定时/计数器T0

2——外部中断1

3——定时/计数器T1

4——串行口中断

5——定时/计数器T2

其它值预留。


2.2.6.2、自定义函数的声明


在C51 中,函数原型一般形式如下:

[extern] 函数类型函数名(形式参数表);

函数的声明是把函数的名字、函数类型以及形参的类型、个数和顺序通知编译系统,以便调用函数时系统进行对照检查。

函数的声明后面要加分号。如果声明的函数在文件内部,则声明时不用extern,如果声明的函数不在文件内部,而在另一个文件中,声明时须带extern,指明使用的函数在另一个文 件中。


2.2.7、构造数据类型


2.2.7.1、数组


① 常规数组

微信图片_20221019145142.png

需要注意的是,C51 语言中数组的下标是从0 开始的,因此上面:> 第一句定义 的5个元素分别是:x[0]、x[1]、x[2]、x[3]、x[4]。

第二句定义的3个元素分别是:y[0]、y[1]、y[2]。赋值情况为:y[0]=1;y[1]=2;y[2]=3。

C51 规定在引用数组时,只能逐个引用数组中的各个元素,而不能一次引用 整个数组。但如果是字符数组则可以一次引用整个数组


②字符数组

字符数组的定义与一般数组相同,只是在定义时把数据类型定义为char 型。 在C51中,字符数组用于存放一组字符或字符串,字符串以“\0”作为 结束符,只存放一般字符的字符数组的赋值与使用和一般的数组完全相同。对于存放字符串的字符数组。既可以对字符数组的元素逐个进行访问,也可以对整个 数组按字符串的方式进行处理。


总结


一、电平特性知道什么是高低电平,什么是TTL,什么是CMOS即可

二、C51大致和C语言大多数是差不多的,我总结的内容可以也当做系统的复习和知识清单。

C51和C语言不同的地方我也用显眼的颜色备注出来了。直接拿捏就好,注意typedef叭,我看到很多项目源代码中的变量类型都是被重命名过的。

相关文章
|
7月前
|
数据格式
用C51单片机制作LED流水的灯
用C51单片机制作LED流水的灯
|
监控 数据处理 开发工具
单片机的C51基础知识介绍2
三、单片机的开发流程和工具 单片机的开发流程通常包括以下几个步骤: 硬件设计:根据应用需求,设计和选择合适的外部电路和接口电路,包括时钟电路、输入输出电路、存储器等。 软件开发:根据应用需求,使用相应的开发工具和编程语言进行软件开发,如C语言、汇编语言等。开发人员需要编写相应的代码,实现系统的功能和控制。 编译和烧录:将开发好的软件代码进行编译和链接,生成可执行的机器代码。然后将机器代码通过编程器烧录到单片机的存储器中。 调试和测试:将烧录好的单片机进行调试和测试,验证系统的功能和性能是否符合要求。可以通过调试工具和示波器等设备进行调试和测试。 单片机的开发工具和软件包括: 开发板
98 0
【期末不挂科-单片机考前速过系列P7】(第七章:11题速过串行口基本概念/结构/工作方式/双机通信例题)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P7】(第七章:11题速过串行口基本概念/结构/工作方式/双机通信例题)经典例题盘点(带图解析)
|
4月前
|
人工智能 C语言
【51单片机】让AI识别电路图,帮你进行编码(以51单片机为例)
【51单片机】让AI识别电路图,帮你进行编码(以51单片机为例)
186 0
|
5月前
|
传感器 存储 程序员
《单片机原理与应用及C51编程技术》期末复习笔记
《单片机原理与应用及C51编程技术》期末复习笔记
|
6月前
|
数据安全/隐私保护
单片机课程设计——基于C51电子密码锁(源代码)
单片机课程设计——基于C51电子密码锁(源代码)
|
7月前
|
存储 移动开发
80C51单片机----数据传送类指令
80C51单片机----数据传送类指令
245 2
|
7月前
|
传感器
基于51单片机的自动浇花器电路
该文档是一个基于AT89C51单片机的自动浇水灌溉系统的设计方案。系统由5V供电模块、土壤湿度传感器模块、ADC0832模数转换模块、水泵控制模块、按键输入模块、LCD显示模块和声光报警模块组成。它通过检测土壤湿度并将其转换为数字信号,与预设的湿度上下限值进行比较,以决定是否启动水泵进行灌溉。用户可以通过按键设置湿度上下限值,LCD屏幕实时显示当前湿度和上下限值。如果湿度低于下限,系统会启动声光报警并打开水泵;当湿度超过上限,声光报警关闭,但水泵会继续工作,直至湿度下降到下限以下。设计中还提供了Proteus仿真电路图和C代码实现。
|
7月前
|
存储 移动开发 程序员
80C51单片机的七种寻址方式
80C51单片机的七种寻址方式
160 1
【单片机】简易计算器完整代码带电路图
【单片机】简易计算器完整代码带电路图
504 0
【单片机】简易计算器完整代码带电路图