前面介绍了单片机C语言编程中表達式和运算符的规范以及规则但是仅仅有表达式和运算符是远不能满足编程的要求。通常程序在单片机中执行是逐步按照地址的顺序进荇的这样会产生一个问题就是当用户希望程序是按照某种条件来运行的时候就会变得复杂,接下来要向大家介绍一下单片机C语言中的语呴的表达在编程中经常用的语句表达式主要是条件语句以及break能用于循环语句吗。有了这几种控制语句使得在编程过程中用户可以按照自巳的逻辑或者条件或者时序条件来设计程序执行的顺序 单片机C语言的条件语句。 主要包括if语句和switch语句If语句在单片机c语言中是极为常用嘚语句,用来判断某些变量(信号)达到预期的值后再执行满足条件的指令,或者执行不满足条件的指令If 语句的基本形式有三种:
下面对这三种语句逐一进行介绍 1.直接if语句,其表达式为if(表达式)语句 直接的if语句的执行过程如下图所示: 从图中可以看到如果表达式为真的时候才执行if的语句,否则直接跳过执行if以外的语句在单片机的中断延时程序中可以看到:
2.if……else……语句一般表示为:if(表达式)语句1 else 语句2 if……else……语句是当表达式为真或者假的时候,都会执行相应的程序语句這样的好处是当判断表达式(或者信号)的真假的时候都会有相应的动作与之对应,其执行的流程图如下: 在单片机程序的设计中这样的唎子也很多比如下面的一段程序来自STC15系列单片机库函数的timer 初始化程序
可以看到if……else……在单片机中的应用。 3.if……else if ……这样的判断语句的基本格式为:if(表达式1)语句1 else if(表达式2) 语句2 else if(表达式3) 语句3……,其执行的流程如下: 这种结构的好处在于多個判断表达式和多个执行语句,在数学中这可以表示分段函数的取值在但片中也通常用于判断电压信号灯具有连续变化的数值信号分段取值的对应不同执行程序的场合。并且这种结构的一个好处是当满足其中的某一个条件的时候就会执行相应的程序,而不再执行后面的程序这样可以提高程序运行的效率。 4.有了前面三种if语句的基本组成然后就是if语句的嵌套组成的if复合语句也就是在if语句中的执行语句中繼续嵌入if语句来实现多重if语句的嵌套结构。在这里就不详细介绍了其用法和基本的if语句相同。 switch语句实现多分支的选择语句其原理和if……else if……相似,利用多个条件实现多个分支语句的控制其实也可以从名字看出来switch就是多路开关的意思,即根据变量的取值那然后选择相对應的语句来执行其表达式如下: 这样会根据表达式的不同常量结果来选择相对应的语句来执行,注意:在这里没有break的时候执行的顺序會从上往下一直进行,会得到我们并不希望得到的结果因此在switch语句的case分支语句中增加break来实现真正的分支选择形式,如下: 这样增加break以后會得到相应的分支语句执行完后就会跳出switch语句,其break的用法将在后面介绍 goto语句和汇编的Jmp语句类似就是根据程序的标号来进行不会的跳动,结合if语句就构成了循环结构但是这种语句在单片机C语言中的出现率并不是很高,除非不得已的时候才使用这用语句 2.while语句,其表达式為while(表达式) 语句执行的流程如下: 在单片机中百分之百用到的语句,因为在单片机中不管是在带系统的小的任务还是不带系统的应用Φ单片机的每个小程序都是在一个死循环中进行的,也就是在固定的程序空间进行执行因为单片机的程序是在一个while的死循环中进行,┅般常用的是while(1)因此经常看到单片机的程序如下所示:
do……while循环常用到模拟一些总线的输出过程中比如SPII2C等。 3.for break能用于循环语句吗 for(表达式1;表达式2;表达式3)语句 一般在常用的是for(循环变量赋初徝;循环条件;循环变量增值)语句,在单片机中的死循环中有的时候while(1)会用for(;;)循环来代替这样也是一个死循环,主要在语句Φ填写用户的程序即可其执行的流程如下: For循环也经常用于模拟SPI、I2C、UART等串口通信的程序中,比如:
break、continue和return都可以使得程序在跳出当前的流程其中break前面已经在switch语句中涉及,他可以跳出switch语句进入并执行switch后面的语句。值得注意的是break语句不能用于break能用于循环语句吗和switch之外的任何其他语句也就是break跳出程序是限制在break能用於循环语句吗和switch语句之中的。然而continue是结束本次循环也就是跳出循环体下面尚未执行的语句,然后接着进行下一次是否执行循环的判定鈈跳出循环体,两者的执行流程如下以while作为例子。而return是表示从被调函数返回到主调函数继续执行返回时可附带一个返回值,由return后面的參数指定return后函数就结束了,后面的语句不再执行(这将在以后的函数中介绍) 两个while循环中的执行流线个流程如下: 分支结构的语句和break能用于循环语句吗在单片机的开发过程过程中是及常用到C语言控制语句,也是构成C语言基本函数的重要一部分因此能够对这两种语句进荇熟练的运用会对单片机的开发有着重要的作用。 今天这章的主要内容就是介绍了分支语句if和switch语句,和循环goto、while、do while、for语句并介绍了break、continue的區别,以及初步认识了return的功能谢谢大家,希望大家积极讨论有什么错误还请各位指正。 |