51单片机应用从零开始(八)·循环语句(for循环、while 语句、do‐while 语句)

51单片机应用从零开始(七)·循环语句(if语句,swtich语句)-CSDN博客


目录

[1. 用for 语句控制蜂鸣器鸣笛次数](#1. 用for 语句控制蜂鸣器鸣笛次数)

[2. 用while 语句控制 LED](#2. 用while 语句控制 LED)

[3. 用 do‐while 语句控制 P0 口 8 位 LED 流水点亮](#3. 用 do‐while 语句控制 P0 口 8 位 LED 流水点亮)


1. 用for 语句控制蜂鸣器鸣笛次数

C语言中的for语句是一种循环语句,通常用于执行特定的操作一定数量的次数。

for语句的语法如下:

c 复制代码
for (initialization; condition; increment/decrement) {
   statement(s);
}

其中,initialization用于初始化循环计数器,通常是一个赋值语句;condition是循环条件,当条件为真时,循环继续执行,当条件为假时,循环停止;increment/decrement是循环计数器的增量或减量,通常是一个自增或自减语句;statement(s)是循环体,即要重复执行的语句块。

下面是一个计算1到10的累加和的示例:

c 复制代码
#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;
}

输出结果为:

c 复制代码
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博客

相关推荐
模拟IC攻城狮1 小时前
华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目——共8套(每套四十题)
嵌入式硬件·华为·硬件架构·芯片
IT B业生1 小时前
51单片机教程(六)- LED流水灯
单片机·嵌入式硬件·51单片机
一枝小雨1 小时前
51单片机学习心得2(基于STC89C52):串口通信(UART)
单片机·嵌入式硬件·51单片机
IT B业生2 小时前
51单片机教程(一)- 开发环境搭建
单片机·嵌入式硬件·51单片机
海绵波波1074 小时前
Webserver(4.8)UDP、广播、组播
单片机·网络协议·udp
好想有猫猫4 小时前
【51单片机】串口通信原理 + 使用
c语言·单片机·嵌入式硬件·51单片机·1024程序员节
云卓科技5 小时前
无人车之路径规划篇
人工智能·嵌入式硬件·算法·自动驾驶
stm 学习ing6 小时前
C语言 循环高级
c语言·开发语言·单片机·嵌入式硬件·算法·嵌入式实时数据库
w微信150135078126 小时前
小华一级 代理商 HC32F005C6PA-TSSOP20 HC32F005系列
c语言·arm开发·单片机·嵌入式硬件
北京迅为7 小时前
【北京迅为】《STM32MP157开发板嵌入式开发指南》-第七十八章 Qt控制硬件
linux·stm32·单片机·嵌入式硬件