昨天因为装修,装大门硬是弄了一天,就停了一天,装修真的满满都是坑,太难受了。
今日继续C51的基础学习
C51基础知识
基本结构和语句相关
1、顺序结构,按顺序A - B - C
2、选择结构 当调节P成立 则执行A 否则执行B,常见if else和switch等,后续会使用到,再细讲。
3、循环结构,使程序段循环
有当型循环结构,while 当条件成立则循环执行A,不成立就跳过,(如果....那么重复执行...)
直到型循环结构 do...while 先执行语句A,再判断条件P,成立则继续,不成立则跳过。(重复执行....直到...)
相关语句
1、if (表达式) {语句;}
例:
if(x!=y)printf(“x=%d,y=%d\n”,x,y); if只有一条语句大括号可以省略,
2、if(表达式){语句1;} else {语句2;}
例:
if (x>y) max=x; else max=y;
3、if(表达式1){语句1;}
else if (表达式2)(语句2;)
else if (表达式3)(语句3;)
......else if (表达式n-1)(语句n-1;)
else{语句n}
例:
fi(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");
switch/case语句
switch(表达式)
{
case 常量表达式1:{语句1;}break;
case 常量表达式2:{语句2;}break;
......
case 常量表达式 n :{语句n;}break;
default:{语句n+1;}
}
例
switch(grade)
{
case ‘A’;printf(”90~100\n”);break;
case ‘B’;printf(”80~90\n”);break;
case ‘C’;printf(”70~80\n”);break;
case ‘D’;printf(”60~70\n”);break;
case ‘E’;printf(”<60\n”);break;
default;printf(”error”\n)
}
while语句 满足表达式时循环执行语句
while(表达式)
{
语句;
}
do...whil 语句 在满足条件时循环执行(与whil的区别在于至少执行一次)
do
{
语句;
}
while(表达式);
for语句
for(表达式1;表达式2;表达式3;)
{
语句;
}
先求解表达式1,然后求解表达式2,如果2的值为真,则执行语句,然后求解表达式3的值,表达式3的值如果是真,则求解2,如果2的结果真,则又去执行语句;
常见表达式1是赋值语句,表达式2位条件语句,表达式3为循环变量的更新表达式,语句为循环体。
循环的嵌套
C51允许三个循环嵌套
例:
void delay (unsigned int x )
{
unsigned char j;
while(x--)
{
for(j=0; j<125; j++);
}
break和continue语句
break退出循环结构,只能用在循环语句和switch中
【例】下面一段程序用于计算圆的面积,当计算到面积大于 100 时,由 break 语句跳出循环。
for (r=1;r<=10;r++)
{
area=pi*r*r;
if (area>100) break;
printf(“%f\n”,area);
}
continue跳过该语句下面的循环体内的程序
【例】 输出 100~200 间不能被 3 整除的数。
for (i=100;i<=200;i++)
{
if (i%3= =0) continue;
printf(“%d ”;i);
}
return语句
语句一般放在函数的最后位置,用于终止函数的执行,并控制程序返 回调用该函数时所处的位置。
如果 return 语句后面带有表达式,则要计算表达式的值,并将表达式的值 66 作为函数的返回值。若不带表达式,则函数返回时将返回一个不确定的值。通常 我们用 return 语句把调用函数取得的值返回给主调用函数。
函数的定义
函数类型 函数名 (形式参数表)[reentrant] [interrupt m] [using n] 单片机中才有
形式参数说明
{
局部变量定义
函数体
}
函数的定义
int max (int x,int y)
{
int z;
z=x>y?x:y;
return(z);
}
函数的调用与声明
函数调用的一般形式如下: 函数名(实参列表);
在 C51 中,函数原型一般形式如下: [extern] 函数类型 函数名(形式参数表);
数组
一维数组
一维数组只有一个下标,定义的形式如下: 数据类型说明符 数组名[常量表达式][={初值,初值……}]
unsigned char x[5];
unsigned int y[3]={1,2,3};
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。
每次只能用一个元素,无法一次性使用所有的元素。
字符数组
char string1[10];
char string2[20];
字符数组用于存放一组字符或字符串,字符串以“\0”作为 结束符,只存放一般字符的字符数组的赋值与使用和一般的数组完全相同。
今天就把基础知识讲完了,对于C的讲解很一般,这个老师基本上就把知识点跟着PPT过了一遍,还是得买书专门去学。
明天开始正式开始单片机的知识与讲解~