首页 理论教育 C51程序控制语句|单片机应用技术

C51程序控制语句|单片机应用技术

时间:2023-11-06 理论教育 版权反馈
【摘要】:1)C51语句的分类C51语言的语句分为5类,具体如下:控制语句控制语句用于完成一定的控制功能。C51语言有9种控制语句,它们是:①if()…表示内嵌的语句。表达式能构成语句是C51语言的一大特色。例如:2)C51程序的基本结构C51程序的结构有顺序结构、选择结构和循环结构3种。图3.17选择结构示意图在C51中,实现选择结构的语句为if…另外,在C51中还支持多分支结构。图3.20for循环语句的执行过程a.求解表达式1的值。

C51程序控制语句|单片机应用技术

1)C51语句的分类

C51语言的语句分为5类,具体如下:

(1)控制语句

控制语句用于完成一定的控制功能。C51语言有9种控制语句,它们是:

①if()…else…:条件语句。

②for()…:循环语句。

③while()…:循环语句。

④do…while():循环语句。

⑤continue:结束本次循环语句。

⑥break:中止执行switch或循环语句。

⑦switch:多分支选择语句。

⑧goto:转向语句。

⑨return:从函数返回语句。

上面9种语句表示形式中的括号“()”表示括号中是一个“判断条件”,“…”表示内嵌的语句。例如,“do…while()”的具体语句可以写成:do y=x;While(x<y);。

(2)函数调用语句

函数调用语句由一个函数调用加一个分号构成,如项目1程序中的delay02s()。

(3)表达式语句

表达式语句由一个表达式加一个分号构成。表达式能构成语句是C51语言的一大特色。最典型的表达式语句是由赋值表达式构成的一个赋值语句。例如,x=6。

(4)空语句

只有一个分号的语句为空语句,空语句不执行任何操作。空语句可用作流程的转向点(流程从程序其他地方转到此语句处),也可用作循环语句中的循环体(循环体是空语句,表示循环体什么也不做)。

(5)复合语句

用“{}”把一些语句括起来就构成了复合语句。例如:

2)C51程序的基本结构

C51程序的结构有顺序结构、选择结构和循环结构3种。

(1)顺序结构

顺序结构是最基本、最简单的结构。在这种结构中,程序由低地址到高地址依次执行。其执行过程如图3.16所示。

图3.16 顺序结构的执行过程

(2)选择结构

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

图3.17 选择结构示意图

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

(3)循环结构

在程序处理过程中,有时需要某一段程序重复执行多次,可采用循环结构来实现。循环结构就是能够使程序段重复执行的结构。循环结构又分为3种:当(while)型循环结构、直到(do…while)型循环结构和for循环结构。

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

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

图3.18 当型循环结构

图3.19 直到型循环结构

③for循环结构。for循环结构比较灵活,适用于循环次数不确定,但明确循环条件的情况。for语句是常用的循环语句之一。for语句的一般形式如下:

for循环语句的执行过程如图3.20所示。

图3.20 for循环语句的执行过程

a.求解表达式1的值。

b.求解表达式2的值,若其值为“假”(即值为0),则结束循环,转到第④步;若其值为“真”(即值为非0),则执行for语句内嵌的循环体语句组。

c.求解表达式3,然后转回第②步。

d.执行for语句后面的下一语句。

在实际应用中,for语句最简单、最易理解的形式如下:

for(循环变量赋初值;循环条件;循环变量增值)

循环体语句组;

说明:

Ⅰ.“表达式1”可以是任何类型,一般为赋值表达式,用于给控制循环次数的变量赋初值。

Ⅱ.“表达式2”可以是任何类型,一般为关系或逻辑表达式,用于控制循环是否继续执行。

Ⅲ.“表达式3”可以是任何类型,一般为赋值表达式,用于修改循环控制变量的值,以便使得某次循环后,表达式2的值为0(假),从而退出循环。

Ⅳ.“循环体语句组”可以是任何语句,既可以是单独的一条语句,也可以是复合语句。

Ⅴ.“表达式1”“表达式2”“表达式3”这3个表达式可以省略其中的1个、2个或3个,但相应表达式后面的分号不能省略。

3)C51的主要语句介绍

(1)if语句

if语句是C51中的一个基本条件选择语句,它通常有3种格式:(www.xing528.com)

①if(表达式){ 语句;}

②if(表达式){ 语句1;} else { 语句2;}

③if(表达式1){语句1;}

【例3.2】if语句的用法。

①if (x!=y) printf(“x=%d,y=%d\n”,x,y);

执行上面语句时,如果x不等于y,则输出x的值和y的值。

②if (x>y)  max=x;  else max=y;

执行上面语句时,如x大于y成立,则把x送给最大值变量max;如x大于y不成立,则把y送给最大值变量max,使max变量得到x、y中的大数。

③if (score>=90)printf(“Your result is an A\n”);

else if (score>=80)printf(“Your result is an B\n”);

else if (score>=70)printf(“Your result is an C\n”);

else if (score>=60)printf(“Your result is an D\n”);

else printf(“Your result is an E\n”);

执行上面语句后,可根据分数score分别打印出A、B、C、D、E五个等级。

(2)switch…case语句

if语句通过嵌套可以实现多分支结构,但结构复杂。switch是C51中专门处理多分支结构的多分支选择语句。它的格式如下:

说明:

Ⅰ.switch后面括号内的表达式,可以是整型字符型表达式。

Ⅱ.当该表达式的值与某一“case”后面的常量表达式的值相等时,就执行该“case”后面的语句,然后遇到break语句退出switch语句。若表达式的值与所有case后的常量表达式的值都不相同,则执行default后面的语句,然后退出switch结构。

Ⅲ.每个case常量表达式的值必须不同,否则会出现自相矛盾的现象。

Ⅳ.case语句和default语句的出现次序对执行过程没有影响。

Ⅴ.每个case语句后面可以有“break”,也可以没有。若有break语句,则执行到break退出switch结构;若没有,则会顺次执行后面的语句,直到遇到break或结束。

Ⅵ.每个case语句后面可以带一个语句,也可以带多个语句,还可以不带。语句可以用花括号括起,也可以不括。

Ⅶ.多个case可以共用一组执行语句。

【例3.3】将学生成绩划分为A—D,对应不同的百分制分数,要求根据不同的等级打印出所对应的百分数。可以通过switch…case语句来实现。

(3)while语句

while语句在C51中用于实现当型循环结构,它的形式如下:

while语句后面的表达式是能否循环的条件,后面的语句是循环体。当表达式为非0(真)时,就重复执行循环体内的语句;当表达式为0(假)时,中止while循环,程序将执行循环结构之外的下一条语句。while语句的特点是:先判断条件,后执行循环体。在循环体中对条件进行改变,然后再判断条件,如条件成立,则再执行循环体,如条件不成立,则退出循环。如条件第一次就不成立,则循环体一次也不执行。

【例3.4】通过while语句实现计算并输出1~100的累加和。

程序执行的结果如下:

该语句的特点是:先执行循环体中的语句,后判断表达式。如果表达式成立(真),则再执行循环体,然后判断,直到有表达式不成立(假)时,退出循环,执行do…while结构的下一条语句。do…while语句在执行时,循环体内的语句至少会被执行一次。

【例3.5】通过do…while语句实现计算并输出1~100的累加和。

(5)for语句

在C51语言中,for语句是使用最灵活、使用最多的循环控制语句,同时也最为复杂的循环控制语句。for语句可以用于循环次数已经确定的情况,也可以用于循环次数不确定的情况。for语句完全可以代替while语句,其功能强大。for语句的格式如下:

for(表达式1;表达式2;表达式3){语句;} /*循环体*/

在for循环中,一般表达式1为初值表达式,用于给循环变量赋初值;表达式2为条件表达式,对循环变量进行判断;表达式3为循环变量更新表达式,用于对循环变量的值进行更新,使循环变量能不满足条件而退出循环。

【例3.6】用for语句实现计算并输出1~100的累加和。

程序执行的结果:

1+2+3+…+100=5050

(6)循环的嵌套

在一个循环的循环体中允许包含一个完整的循环结构,这种结构称循环的嵌套。外面的循环称外循环,里面的循环称内循环,如果在内循环的循环体内又包含循环结构,就构成了多重循环。

在C51中,允许3种循环结构相互嵌套。

【例3.7】用嵌套结构构造一个延时程序。

此处,用内循环构造一个基准的延时,调用时通过参数设置外循环的次数,可形成各种延时关系。

(7)break和continue语句

break和continue语句通常用于循环结构中,用来跳出循环结构。但是两者有所不同,下面分别作一介绍。

①break语句。前面已介绍过用break语句可以跳出switch结构,使程序继续执行switch结构后面的一个语句。使用break语句还可以从循环体中跳出循环,提前结束循环而接着执行循环结构下面的语句。break语句不能用在除了循环语句和switch语句之外的任何其他语句中。

【例3.8】下面程序用于计算圆的面积,当计算到面积大于100时,由break语句跳出循环。

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

continue语句和break语句的区别在于:continue语句只是结束本次循环,而不是终止整个循环;break语句是结束整个循环,不再进行条件判断。

【例3.9】输出100~200间不能被3整除的数。

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

我要反馈