C51 流程控制语句
- 格式:ppt
- 大小:580.50 KB
- 文档页数:63
C51的程序语句1表达式语句在表达式的后面加一个分号“;”,构成表达式语句;一行可以放一个表达式语句,也可放多个表达式语句,每个表达式后面须用“;”分隔;一行还可以仅由一个“;”占一行形成一个表达式语句,即空语句2复合语句由若干条语句组合而成的一种语句,用大括号“{ }”将若干条语句包括在一起就形成了一个复合语句。
复合语句最后不需要以分号“;”结束,但它内部的各条语句仍需以分号“;”结束。
复合语句的一般形式如下:{局部变量定义<程序体>}3顺序、选择和循环结构选择结构可以用if/else, if/else if等语句实现;多分支结构,通过if和else if 语句嵌套实现,也可用switch/case语句实现;循环结构通过while、do while、for、goto等语句实现。
4条件、分支和循环语句4.1 if语句――基本条件选择语句,一般有三种格式4.2 switch/case语句――处理多分支结构的语句4.3 while—循环语句While do语句:先判断,后执行。
While (表达式)[do] {语句;} /*循环体*/先计算表达式的值,为真时,执行循环体内的语句,否则,不执行循环体中的语句,中止循环,执行循环体后的下一条语句。
表达式的值可以在循环体内改变。
Do{语句;} /*循环体*/While (表达式);/*先执行,后判断表达式的值,表达式的值为真,则再执行循环体,然后再判断。
循环体的内容至少执行一次*/4.4 for 语句――循环For 语句是C51中使用最灵活、最频繁的循环控制语句,可以完全代替while语句,功能最强大,格式如下:For (表达式1;表达式2;表达式3){语句;} /*循环体*/4.5 循环的嵌套4.6 break和continue语句4.7 return语句5 C51的函数方法5.1 函数的定义格式函数类型函数名(形式参数表) [reentrant] [interrupt m] [using n] 形式参数说明{ 局部变量定义函数体}函数类型说明了函数的返回值的类型函数名是用户为自定义函数取的名字,以便于调用函数时使用形式参数用于列举在主调函数与被调函数之间进行数据传递的形式参数Reentrant 修饰符Interrupt m修饰符Using n用于指定本函数内部使用的工作寄存器组,其中n的取值为0~3,表示寄存器组号。
第1章C51数据类型与运算1.1C51数据类型C51的数据类型如下所示:C51编译器支持的数据类型、长度和值域如下表1-1所示。
与面向数学运算的计算机相比,51单片机对变量类型或数据类型的选择更具有关键性意义。
如果在程序设计中使用大量而不必要的变量类型,这会导致C编译器调用库函数的数量,以处理大量的变量类型和数据类型。
所以必须特别慎重地进行变量和数据类型的选择。
1.2C51数据存储类型C51编译器还可以通过将变量、常量定义成不同的存储类型(data,bdata,idata,pdata,xdata,code)的方法,将它们定义在不同的存储区中。
存储类型与51单片机实际存储空间的对应关系如表1-2所示。
储区中。
片内RAM是存放临时性传递变量或使用频率较高变量的理想场所。
访问片内数据存储器(data、bdata、idata)比访问片外数据存储器(xdata、pdata)相对快一些,因此可将经常使用的变量置于片内数据存储器,而将规模较大的或不常使用的数据置于片外数据存储器中。
C51存储类型及其大小和值域如表1-3所示。
例如:表1-3 C51存储类型及其大小和值域char data var1; /*字符变量var1被定义为data存储类型,定位在片内RAM中*/bit bdata flags; /*位变量flags被定义为data存储类型,定位在片内RAM中的位寻址区*//*(20H~2FH)*/float idata x,y,z; /*浮点变量x,y,z被定义为idata存储类型,定位在片内RAM中,并只能用间接寻址的方法进行访问*/unsigned int pdata dimension; /*无符号整型变量dimension被定义为pdata存储类型,定位在片外RAM中,并用MOVX @Ri访问*/ unsigned char xdata vector[10][4][4]; /*无符号字符三维数组变量vector[10][4][4]被定义为xdata存储类型,定位在片外RAM中,占据10×4×4=160个字节空间*/如果在变量定义时省略存储类型标志符,编译器会自动默认存储类型。