- 积分
- 207
- 在线时间
- 238 小时
- 最后登录
- 2012-8-17
- 阅读权限
- 50
- 精华
- 0

- UID
- 327390
- 帖子
- 142
- 精华
- 0
- 经验
- 207 点
- 金钱
- 152 ¥
- 注册时间
- 2011-5-1
|

楼主 |
发表于 2011-8-18 13:09
|
显示全部楼层
继续我们的教程,今天来讲讲for循环语句的运用。
for语句的特点是先判断表达式,如果为“真”则执行{}里的程序,如果为“假”则退出程序,每次执行完{}内的程序之后for语句会重新判断表达式,并按结果循环执行或退出。听上去好像与while语句相同,但for有他的独特之处。我们先来看看他的表示方法。
for(表达式1;表达式2;表达式3;){语句1;语句2;}
for语句的执行流程为:首先执行表达式1,然后判断表达式2,如果为“假”则退出,如果表达式2为“真”,则先执行{}内的程序,再执行表达式3,再回来判断表达式2,根据结果循环或是退出。
有点晕把?没关系,我刚开始学for循环语句也是这样,对着表示方法,多看看执行流程,我相信你会理解的。
for循环语句多用于多次判断和执行,在C语言中运用非常频繁。最常见的就是延时函数。经典表达方法是 for(a = 0;a < 100;a++){},看不懂?也没关系,今天我们讲for循环,我带你慢慢看。
在这个语句中,a是一个变量,进入for循环,首先让a=0,然后判断a是否小于100,因为a=0,小于100,表达式为真,执行{}的程序(因为{}内没有程序,所以无需执行),在回去执行表达式3,a++的意思是a的值不断加1,因为执行了一次for循环语句,所以此时a不在等于0,a=1了,但还是小于100,继续循环,直到a=100了,不是小于而是等于了,表达式为“假”退出for循环语句。
这样单片机在无聊的加一运算中浪费时间,在单片机看来是浪费时间,但在我们看来,却是延长了时间,因为单片机的处理速度是毫秒级的,而我们人类的眼睛是无法观察到的。所以说,for语句是为了“以人为本”而产生的。
下面是我们第一个实验闪灯的程序,他已经出现过一次了,不是吗?这次我们主要看延时程序,看看for循环语句在实际程序中的运用。
#include <AT89X52.h>
sbit LED = P1 ^ 7; //定义P1.7为LED控制口
void Delay (unsigned int a){ //定义一个变量a,需要输入变量值0~65535
unsigned int i; //定义一个变量i
while( --a != 0){ //i 从0加到600,CPU大概就耗时1毫秒
for(i = 0; i < 600; i++); //空指令循环
}
}
void main (void){ //主程序开始
while(1){ //无限循环以下程序
LED = ~LED; //取LED相反状态
Delay(250); //调用延时函数,修改括号里的数值看看会有什么变化(0~65535之间,想想为什么是0~65535之间?)
}
}
相信你已经对for循环语句有一定了解了,有没有发现我的文章越来越短了?因为大家知道的东西多了,不需要我在一条一条解释了。如果你在我诱惑性的语言坑蒙拐骗下走进了单片机的世界,那就请你跟我继续前行,进入单片机的殿堂。
我们的编程语句已经学会3种了,剩下还有switch语句和do while语句,他们是两种比较少用到的(我是很少用,尤其是do while),我们明天将一起解决它。 |
|