单片机程序结构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 C51程序流程与控制
C语言是一种结构化的编程语言。
其基本元素是模块,它是程序的一部分,只有一个入口和一个出口,不允许有中途插入或从模块的其它路径退出。
C语言有3种基本结构:
顺序结构;
选择结构;
循环结构;
1.1顺序结构程序
顺序结构的程序是最简单、最基本的程序结构,其特点是按指令的排列顺序一条条地执行,如图所示,程序先执行A操作,再执行B
操作,两者是顺序执行的关系。
选择结构程序
此结构中必包含一个判断框,根据给定的条件P是
否成立而选择执行A框或B框。
选择结构由条件语句构
成。
条件语句
条件语句又被称为分支语句,其关键字是由if语句
或switch/case构成。
C语言提供了3种形式的if语句结构:
用法1:
if (条件表达式) 语句
描述:当条件表达式的结果为真时,就执行语句,否则就跳过。
例:
if(a>=3)
b=0;
用法2:
if (条件表达式)
语句1
else
语句2
描述:当条件表达式成立时,就执行语句1,否则就执行语句2。
例:
if (a==b)
a++;
else
a--;
当a等于b时,a加1,否则a-1。
用法3:
if (条件表达式1)
语句1;
else if (条件表达式2)
语句2;
else if (条件表达式3)
语句3;
else if (条件表达式n)
语句n;
else
语句m;
描述:如果表达式1为“真”,则执行语句1,退出if语句;否则去判断表达式2,如果为“真”,则执行语句2,退出if语句;否则去判断表达式3···最后,如果表达式n 也不成立,则执行else后面的语句m。
else和语句m也可省略不用。
例:if (a>=3)
b=10;
else if (a>=2)
b=20;
else if (a>=1)
b=30;
else
b=0;
switch/ case语句结构
我们学习了条件语句,用多个条件语句可以实现多方向条件分支,但是可以发现使用过多的条件语句实现多方向分支会使条件语句嵌套过多,程序冗长,这样读起来也很不好读。
这时使用开关语句同样可以达到处理多分支选择的目的,又可以使程序结构清晰。
它的语法为下:
switch (表达式)
{
case 常量表达式1: 语句1; break;
case 常量表达式2: 语句2; break;
case 常量表达式3: 语句3; break;
case 常量表达式n: 语句n; break;
default: 语句m
}
描述:运行中switch后面的表达式的值将会做为条件,与case后面的各个常量表达式的值相对比,如果相等时则执行后面的语句,再执行break(间断语句)语句,跳出switch 语句。
如果case没有和条件相等的值时就执行default后的语句。
当要求没有符合的条件时不做任何处理,则可以不写default语句。
循环结构程序
循环程序的作用就是用来实现需要反复执行某一部分程序行的操作,有如下两类循环结构。
当型循环
在这种结构中,当判断条件P成立时,执行循
环体A部分。
执行完毕回来再一次判断条件P。
如
果条件成立则继续循环A,否则退出循环。
通常用
while循环语句来实现,其形式如下:
While(表达式)
{
循环语句;
}
描述:当表达式为非0(“真”)时,执行while
中的内嵌循环语句。
直到型循环
在这种结构中,先执行循环A部分,然后判断条件P
成立时,执行循环体A部分。
执行完毕回来再一次判断
条件P。
如果条件成立则继续循环A,否则退出循环。
通
常用do-while循环语句来实现,其形式如下:
do
{
循环语句;
}
while(表达式)
描述:先执行do-while中的内嵌循环语句,再判断
表达式表达式为非0(“真”)时,继续执行内嵌循环语句。
for循环语句
for语句的一般形式为:
for(表达式1;表达式2;表达式3)
{
循环语句;
}
描述:①先求解表达式1;
②求解表达式2,其值为“真”时,则执行for语句中的循环语句,然后执
行第③步,如果表达式2,其值为“假”时,则结束循环,转到第⑤步。
③求解表达3;
④转回第②步继续执行;
⑤退出for循环。
表1-2 存储器类型
表1-3 C51编译器的扩展关键字
表1-4 常用转义字符表
表1-5 KEIL uVision2 C51编译器所支持的数据类型
表1-6 运算符优先级和结合性
表1-7 AT89C51特殊功能寄存器列表
(适用于同一架构的芯片)
带*。