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博客