51单片机应用从零开始(七)·循环语句(if语句,swtich语句)-CSDN博客
目录
1. 用for 语句控制蜂鸣器鸣笛次数
2. 用while 语句控制 LED
3. 用 do‐while 语句控制 P0 口 8 位 LED 流水点亮
1. 用for 语句控制蜂鸣器鸣笛次数
C语言中的for语句是一种循环语句,通常用于执行特定的操作一定数量的次数。
for语句的语法如下:
for (initialization; condition; increment/decrement) {statement(s);
}
其中,initialization用于初始化循环计数器,通常是一个赋值语句;condition是循环条件,当条件为真时,循环继续执行,当条件为假时,循环停止;increment/decrement是循环计数器的增量或减量,通常是一个自增或自减语句;statement(s)是循环体,即要重复执行的语句块。
下面是一个计算1到10的累加和的示例:
#include <stdio.h>int main() {int sum = 0;int i;for (i = 1; i <= 10; i++) {sum += i;}printf("1到10的累加和为:%d\n", sum);return 0;
}
输出结果为:
1到10的累加和为:55
在51单片机中,用for 语句控制蜂鸣器鸣笛次数:
#include<reg51.h> //包含单片机寄存器的头文件
sbit sound=P3^7; //将 sound 位定义为 P3.7
/****************************************
函数功能:延时形成 1600Hz 音频
****************************************/
void delay1600(void)
{ unsigned char n; for(n=0;n<100;n++) ;
}
/****************************************
函数功能:延时形成 800Hz 音频
****************************************/
void delay800(void)
{ unsigned char n; for(n=0;n<200;n++) ;
}
/****************************************
函数功能:主函数
****************************************/
void main(void)
{ unsigned int i; while(1) { for(i=0;i<830;i++) { sound=0; //P3.7 输出低电平delay1600(); sound=1; //P3.7 输出高电平delay1600(); } for(i=0;i<200;i++) { sound=0; //P3.7 输出低电平delay800(); sound=1; //P3.7 输出高电平delay800(); } }
}
2. 用while 语句控制 LED
while语句是C语言中的迭代语句,用于在满足条件的情况下重复执行一组语句或语句块。while语句的语法如下:
while (condition)
{statement(s);
}
条件(condition)是一个表达式,当它的值为真(true)时,循环体中的语句会被执行。而当条件的值为假(false)时,循环会停止,程序将跳转到while语句之后的第一条语句继续执行。
例如,以下代码将不断地打印数字1到10,直到计数器变成11时退出循环:
#include <stdio.h>int main()
{int i = 1;while (i <= 10){printf("%d\n", i);i++;}return 0;
}
在51单片机中,用while 语句控制 LED:
#include<reg51.h> //包含单片机寄存器的头文件
/****************************************
函数功能:延时约 60ms (3*100*200=60000μs)
****************************************/
void delay60ms(void)
{ unsigned char m,n; for(m=0;m<100;m++) for(n=0;n<200;n++) ;
}
/****************************************
函数功能:主函数
****************************************/
void main(void)
{ unsigned char i; while(1) //无限循环{ i=0; //将 i 初始化为 0 while(i<0xff) //当 i 小于 0xff(255)时执行循环体{ P0=i; //将 i 送 P0 口显示delay60ms(); //延时i++; //i 自增 1 } }
}
3. 用 do‐while 语句控制 P0 口 8 位 LED 流水点亮
do-while语句是C语言中的一种循环语句,它先执行一次循环体,再根据循环条件判断是否继续循环。其基本语法如下:
do{// 循环体语句
} while(循环条件);
当执行do-while语句时,先执行一次循环体语句,随后判断循环条件是否成立,成立则继续执行循环体语句,否则退出循环。
与while语句不同的是,do-while语句保证循环体至少会被执行一次,即使循环条件一开始就不成立。
do-while语句的应用场景通常是需要至少执行一次循环体的情况,比如输入数据校验、菜单选择等。
在51单片机中,用 do‐while 语句控制 P0 口 8 位 LED 流水点亮:
#include<reg51.h> //包含单片机寄存器的头文件
/****************************************
函数功能:延时约 60ms (3*100*200=60000μs)
****************************************/
void delay60ms(void)
{ unsigned char m,n; for(m=0;m<100;m++) for(n=0;n<200;n++) ;
}
/****************************************
函数功能:主函数
****************************************/
void main(void)
{ do { P0=0xfe; //第一个 LED 亮delay60ms(); P0=0xfd; //第二个 LED 亮delay60ms(); P0=0xfb; //第三个 LED 亮delay60ms(); P0=0xf7; //第四个 LED 亮delay60ms(); P0=0xef; //第五个 LED 亮delay60ms(); P0=0xdf; //第六个 LED 亮delay60ms(); delay60ms(); P0=0xbf; //第七个 LED 亮delay60ms(); P0=0x7f; //第八个 LED 亮delay60ms(); }while(1); //无限循环,使 8 位 LED 循环流水点亮
}
更多推荐:
时光の尘_千题千解·Java面试宝典,Linux学习,嵌入式学习-CSDN博客