首页 理论教育 单片机程序结构实例应用

单片机程序结构实例应用

时间:2023-10-22 理论教育 版权反馈
【摘要】:C51同C语言一样,都是结构化的程序设计语言,其程序结构与一般的C语言程序结构没有差别,每个程序由若干个模块组成,每个模块又包含若干个基本结构,每个基本结构可以有若干条语句。结构化的C51程序设计语言有三种基本程序结构:顺序结构、分支结构和循环结构。本节重点介绍其他两种程序结构及控制语句。C51提供了do-while语句实现这种循环结构。C51语言实现程序如下:图5-6 for语句执行流程图

单片机程序结构实例应用

C51同C语言一样,都是结构化的程序设计语言,其程序结构与一般的C语言程序结构没有差别,每个程序由若干个模块组成,每个模块又包含若干个基本结构,每个基本结构可以有若干条语句。结构化的C51程序设计语言有三种基本程序结构:顺序结构、分支结构和循环结构。

顺序结构是最基本、最简单的程序结构,程序按照语句的先后顺序依次执行。本节重点介绍其他两种程序结构及控制语句。

1.分支程序

分支程序有三种基本形式,其结构流程如图5-1所示。

978-7-111-46831-8-Chapter05-1.jpg

图5-1 分支程序结构流程图

a)基本形式if(表达式)语句 b)if-else形式c)switch-case语句形式或if-else的嵌套形式

(1)if语句 用if语句可以构成分支结构,是两个条件的选择语句,它根据给定的条件进行判断,以决定执行哪个分支程序段。if语句有以下两种基本形式。

1)简单if语句。

格式:if(表达式)语句;

说明:如果表达式的值为真,则执行其后的语句,否则不执行该语句,即不操作。基本形式if(表达式)语句流程如图5-1a所示。

例如:两个数求较大值,用单if语句。

C51语言实现程序如下:

void main()

{ inta,b,max;

978-7-111-46831-8-Chapter05-2.jpg

说明:如果表达式的值为真,则执行语句1,否则执行语句2。if-else形式流程如图5-1b所示。

例如:如图5-2所示,开关S1接在P3.0接口上,用发光二极管VL1(接在单片机P1.0接口上)显示开关状态,如果开关合上,VL1亮,开关断开,VL1熄灭。流程如图5-3所示。

978-7-111-46831-8-Chapter05-3.jpg

图5-2 接线图

978-7-111-46831-8-Chapter05-4.jpg

图5-3 流程图

978-7-111-46831-8-Chapter05-5.jpg

978-7-111-46831-8-Chapter05-6.jpg

3)if-else的嵌套形式。

由于前两种形式的if语句只有两个分支的情况,当有多个分支选择时,可在分支里面套分支,来实现多分支结构。

其一般形式为:

978-7-111-46831-8-Chapter05-7.jpg

说明:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句,然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n+1,然后继续执行后续程序。嵌套形式if-else语句的流程如图5-1c所示。

例如:比较两个数的大小。

C51语言实现程序如下:

978-7-111-46831-8-Chapter05-8.jpg

另外,if-else的嵌套还可以把新的分支嵌在if分支里,也可以在if分支和else分支各自插入新的分支。

在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句(语句块),则必须把这一组语句用{}括起来组成一个复合语句,但要注意的是在“}”之后不能再加分号。(www.xing528.com)

(2)switch-case语句switch-case语句是另一种用于多分支选择的语句,其一般形式为:

978-7-111-46831-8-Chapter05-9.jpg

说明:计算表达式的值,并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有“case”后的语句。如果表达式的值与所有case后的常量表达式均不相同,则执行“default”后的语句。switch-case语句形式如图5-1c所示。

另外值得注意的是:各个“case”后面的语句,如果没有break语句,程序则不会跳出switch-case结构,会对后面的“case”条件继续进行判断,符合则执行相应的语句块,直到结束。

2.循环程序

978-7-111-46831-8-Chapter05-10.jpg

图5-4 循环结构程序流程图

a)当型循环结构 b)直到型循环结构

循环结构是程序设计中一种极为重要的程序结构,其特点是:当条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。循环结构程序流程如图5-4所示。图5-4a是典型的当型循环结构,控制语句在循环体之前,所以在结束条件已具备的情况下,循环体程序可以一次也不执行。C51提供了while和for语句实现这种循环结构。图5-4b是直到型循环结构,其控制部分在循环体之后,即使在执行循环体程序之前结束条件已经具备,循环体程序至少还要执行一次,因此称为直到型循环结构。C51提供了do-while语句实现这种循环结构。

(1)while语句 while语句的一般形式为:

while(表达式) {语句块;}

其中表达式是循环条件,语句块为循环体。

说明:程序首先计算表达式的值,当值为真(非0)时,执行循环体语句块。

978-7-111-46831-8-Chapter05-11.jpg

图5-5 接线图

例如:发光二极管接在AT89C51的P1.0引脚上,其接线如图5-5所示(只画出与题目相关部分),用while语句编制延时程序实现发光二极管闪烁。

C51语言实现程序如下:

978-7-111-46831-8-Chapter05-12.jpg

978-7-111-46831-8-Chapter05-13.jpg

(2)do-while语句 do- while语句的一般形式为:

978-7-111-46831-8-Chapter05-14.jpg

这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此do-while循环至少要执行一次循环语句。其执行过程可用图5-4b表示。

例如:按上例中的要求,用do-while语句编制延时程序实现发光二极管闪烁。

C51语言实现程序如下:

978-7-111-46831-8-Chapter05-15.jpg

978-7-111-46831-8-Chapter05-16.jpg

(3)for语句 for语句使用非常灵活,执行流程如图5-6所示,它的一般形式为:

for([变量赋初值];[循环继续条件];[循环变量增值]){循环体语句组;}

例如:按上例中的要求,用for语句编制延时程序实现发光二极管闪烁。

C51语言实现程序如下:

978-7-111-46831-8-Chapter05-17.jpg

978-7-111-46831-8-Chapter05-18.jpg

图5-6 for语句执行流程图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈