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

news/2025/1/12 18:57:51/

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


http://www.ppmy.cn/news/1236892.html

相关文章

达梦主机扩容(CPU和内存)规范

达梦管理工具 ***.***.53.48,分别连接主备修改参数 ---SP_SET_PARA_VALUE(2,FAST_RW_LOCK, 2); -----手动修改dm.ini文件参数值 达梦主&#xff1a;***.***.0.18 备***.***.0.26 停止顺序&#xff1a;1.监视器(dmmonitor) 2. 备主&#xff08;dmwatcher&#xff09;…

HarmonyOS ArkTS语言,运行Hello World(一)

一、下载与安装DevEco Studio 在HarmonyOS应用开发学习之前&#xff0c;需要进行一些准备工作&#xff0c;首先需要完成开发工具DevEco Studio的下载与安装以及环境配置。 进入DevEco Studio下载官网&#xff0c;单击“立即下载”进入下载页面。 DevEco Studio提供了Windows…

由红黑树引出的HashMap扩容机制的思考

红黑树是什么&#xff1f; 三大特点&#xff1a; 根节点是黑色&#xff0c;叶节点是不存储数据的黑色空节点 任何相邻的两个节点不能同时为红色 任意节点到其可到达的节点间包含相同数量的黑色节点 联想&#xff1a;Java HashMap底层红黑树原理 HashMap基于哈希表Map接口实…

快速掌握Pyqt5的三种主窗口

PyQt5是一个强大的跨平台GUI框架&#xff0c;它提供了多种不同类型的主窗口类&#xff0c;以满足不同的应用需求。下面是PyQt5中最常见的几种主窗口类型及其创建方式的简介&#xff1a; 1. QMainWindow QMainWindow是用于创建具有菜单栏、工具栏、状态栏和中心窗口部件&#…

chrome F12 performance 性能分析

本文主要是介绍chrome F12 performance 性能分析&#xff0c;对大家解决编程问题具有一定的参考价值&#xff0c;需要的程序猿们随着小编来一起学习吧&#xff01; 页面加载速度慢&#xff0c;到底是多少秒&#xff0c;瓶颈在哪里&#xff1f; 前端性能工具Chrome performance…

深入ReentrantReadWriteLock(一)

一、为什么要出现读写锁 synchronized和ReentrantLock都是互斥锁。 如果说有一个操作是读多写少的&#xff0c;还要保证线程安全的话。如果采用上述的两种互斥锁&#xff0c;效率方面很定是很低的。 在这种情况下&#xff0c;咱们就可以使用ReentrantReadWriteLock读写锁去实现…

详解Vue中的computed和watch

详解Vue中的computed和watch 前言原理computedcomputed特点computed有几种创建方式应用 WatchWatch有几种创建方式Watch主要内容Watch特性应用场景 computed和Watch区别 前言 在Vue当中&#xff0c;watch和computed都可以实现监听的效果&#xff0c;本文主要是围绕watch和comp…

如何通过类似于Android adb install apk 命令安装三方Harmony Hap包

安装命令 hdc install xxx.hapOpenHarmony设备安装Hap应用的五种方式 https://www.51cto.com/article/762223.htmlhttps://www.51cto.com/article/762223.html DevEco Studio 3.1为例新建个项目&#xff0c;点击File->Project Structure 进入签名页面然后点击Sign in登录华…