0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

第4章 C语言基础以及流水灯的实现(4.5 4.6)

137933yu 来源:137933yu 作者:137933yu 2025-11-06 11:21 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

4.5while循环语句
单片机C语言编程的时候,每个程序都会固定的加一句while(1),这条语句就可以起到死循环的作用。对于while语句来说,他的一般形式是:
while (表达式)
{
循环体语句;
}
在C语言里,通常“表达式”符合条件叫做真,不符合条件,叫做假。比如前边i<30000,当i等于0的时候,那这个条件成立,就是真;如果i大于30000的时候,i<30000条件不成立,就叫做假。
while(表达式)这个括号里的表达式,为真的时候,就会执行循环体语句,当为假的时候,就不执行。
还有另外一种情况,就是C语言里边,除了表达式外,还有常数,习惯上,把非0的常数都认为是真,只有0认为是假,所以程序中使用了while(1),这个数字1,可以改成2、3、4......等等都可以,都是一个死循环,不停的执行循环体的语句,但是如果把这个数字改成0,那么就不会执行循环体的语句了。
通过学习for循环和while循环,是不是会产生一个疑问?为何有的循环加上{},而有的循环却没加呢?什么时候需要加,什么时候不需要加呢?
前边讲过,在C语言中,分号表示语句的结束,而在循环语句里{}表示的是循环体的所有语句,如果不加大括号,则只循环执行一条语句,即第一个分号之前的语句,而加上大括号后,则会执行大括号中所有的语句,举个例子看一下,上节课的闪烁小灯程序如下所示。
程序(1): 程序(2):
while (1) while (1)
{ LED = 0;
LED = 0; for(i=0;i<30000;i++);
for(i=0;i<30000;i++);             LED = 1;
LED = 1; for(i=0;i<30000;i++);
for(i=0;i<30000;i++);
}
程序(1)可以实现闪烁功能。而程序(2)没有加大括号,从语法上来看是没有任何错误的,写到Keil里编译一下也不会报错。但是从逻辑上来讲,程序(2)只会不停的循环“LED = 0;”这条语句,实际上和程序(3)效果是相同的。
程序(3):
while(1)
{
LED = 0;
}
for(i=0;i<30000;i++);
LED = 1;
for(i=0;i<30000;i++);
程序执行到while(1)已经进入死循环了,所以后边三条语句是一辈子也执行不到的。因此为了防止出类似的逻辑错误,推荐不管循环语句后边是一条还是多条语句,都加上{}以防出错。
4.6函数的简单介绍
函数定义的一般形式如下:
函数值类型 函数名 (形式参数列表)
{
函数体
}
1、函数值类型,就是函数返回值的类型。在后边章节的部分例程中,会有很多函数中有return x这条语句,这个返回值也就是函数本身的类型。还有一种情况,就是这个函数只执行操作,不需要返回任何值,那么这个时候它的类型就是空类型void,这个void按道理来说是可以省略的,但是一旦省略,Keil软件会报一个警告,所以通常也不省。
2、函数名,可以由任意的字母、数字和下划线组成,但数字不能作为开头。函数名不能与其他函数或者变量重名,也不能是关键字。什么是关键字呢,后边慢慢接触,比如char这类,都是关键字,是程序中具备特殊功能的标志符,这种东西不可以命名函数。
3、形式参数列表,也叫做形参列表,这个是函数调用的时候,相互传递数据用的。有的函数不需要传递参数给它,那么可以用void来替代,void同样可以省略,但是那个括号是不能省略的。
4、函数体,包含了声明语句部分和执行语句部分。声明语句部分主要用于声明函数内部所使用的变量,执行语句部分主要是一些函数需要执行的语句。特别注意,所有的声明语句部分必须放在执行语句之前,否则编译的时候会报错。
5、一个工程文件必须有且仅有一个main函数,程序执行的时候,都是从main函数开始的。
6、关于形参和实参的概念,后边再总结,如果遇到程序里有,大家再跟着抄一段时间。先用,后讲解,这样更有利于理解。
来回顾一下闪烁LED程序中的主函数,根据注释再认真分析一遍,是不是对函数的认识就清楚多了。
void main() //void即函数类型
{
//以下为声明语句部分
unsigned int i = 0; //定义一个无符号整型变量i,并赋初值0

//以下为执行语句部分
ENLED = 0; //U3、U4两片74HC138总使能
ADDR3 = 1; //使能U3使之正常输出
ADDR2 = 1; //经U3的Y6输出开启三极管Q16
ADDR1 = 1;
ADDR0 = 0;
while (1)
{
LED = 0; //点亮小灯
for (i=0; i<30000; i++);  //延时一段时间
LED = 1; //熄灭小灯
for (i=0; i<30000; i++);  //延时一段时间
}
}
代码中的“//”是注释符,意思是说在这之后的内容都是注释。注释是给程序员自己或其他人看的,用于对程序代码做一些补充说明,对程序的编译和执行没有任何影响。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    183

    文章

    7649

    浏览量

    146400
  • 流水灯
    +关注

    关注

    21

    文章

    436

    浏览量

    62265
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    GD32开发实战指南(基础篇) 3 GPIO流水灯的前世今生

    上一通过控制GPIO的高低电平实现流水灯,但只是告诉了大家怎么做,如何实现流水灯,本文将深入剖析的GPIO
    的头像 发表于 05-10 08:58 7430次阅读
    GD32开发实战指南(基础篇) <b class='flag-5'>第</b>3<b class='flag-5'>章</b> GPIO<b class='flag-5'>流水灯</b>的前世今生

    如何使用c语言实现LED流水灯

    单片机实验:使用c语言实现LED流水灯目的:实现一个简单的流水灯程序仿真软件:Portues编程软件:KeilPortues 原理图绘制:需
    发表于 11-30 07:52

    LED流水灯程序【C语言版】

    LED流水灯程序【C语言版】LED流水灯程序【C语言版】LED
    发表于 12-29 11:05 0次下载

    LED流水灯程序【C语言+汇编版】

    LED流水灯程序【C语言+汇编版】,感兴趣的朋友可以学习。
    发表于 12-31 10:36 0次下载

    关于C语言流水灯验证的介绍

    使用C语言编写流水灯程序。
    的头像 发表于 07-10 06:01 3964次阅读
    关于<b class='flag-5'>C</b><b class='flag-5'>语言</b>的<b class='flag-5'>流水灯</b>验证的介绍

    C语言的基础知识及流水灯实现程序免费下载

    本文档的主要内容详细介绍的是C语言的基础知识及流水灯实现程序免费下载。
    发表于 04-15 18:24 2次下载
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>的基础知识及<b class='flag-5'>流水灯</b>的<b class='flag-5'>实现</b>程序免费下载

    使用单片机实现流水灯C语言程序免费下载

    本文档的主要内容详细介绍的是使用单片机实现流水灯C语言程序免费下载。
    发表于 08-15 17:32 1次下载
    使用单片机<b class='flag-5'>实现</b><b class='flag-5'>流水灯</b>的<b class='flag-5'>C</b><b class='flag-5'>语言</b>程序免费下载

    使用51单片机实现流水灯C语言的程序实例免费下载

    本文档的主要内容详细介绍的是使用51单片机实现流水灯C语言的程序实例免费下载。
    发表于 07-19 17:38 9次下载
    使用51单片机<b class='flag-5'>实现</b><b class='flag-5'>流水灯</b><b class='flag-5'>C</b><b class='flag-5'>语言</b>的程序实例免费下载

    使用51单片机实现流水灯C语言程序免费下载

    本文档的主要内容详细介绍的是使用51单片机实现流水灯C语言程序免费下载。
    发表于 05-27 08:00 3次下载
    使用51单片机<b class='flag-5'>实现</b><b class='flag-5'>流水灯</b>的<b class='flag-5'>C</b><b class='flag-5'>语言</b>程序免费下载

    使用单片机实现24C02存储花样流水灯C语言实例免费下载

    本文档的主要内容详细介绍的是使用单片机实现24C02存储花样流水灯C语言实例免费下载。
    发表于 03-24 13:52 20次下载

    基于AT89C51的单片机简易流水灯设计(C语言

    基于AT89C51的单片机简易流水灯设计(C语言)文章目录一、功能介绍二、代码展示三、仿真四、总结(一)思考题(二)注意的问题文章目录一、功能介绍此程序是基于
    发表于 11-05 11:06 19次下载
    基于AT89<b class='flag-5'>C</b>51的单片机简易<b class='flag-5'>流水灯</b>设计(<b class='flag-5'>C</b><b class='flag-5'>语言</b>)

    单片机实验:使用c语言实现LED流水灯

    单片机实验:使用c语言实现LED流水灯目的:实现一个简单的流水灯程序仿真软件:Portues编程软件:KeilPortues 原理图绘制:需
    发表于 11-21 10:51 11次下载
    单片机实验:使用<b class='flag-5'>c</b><b class='flag-5'>语言实现</b>LED<b class='flag-5'>流水灯</b>

    C语言查询按键控制8个流水灯

    C语言查询按键控制8个流水灯一.仿真电路图注意发光二极管的方向以及接的电阻的大小。二.C语言代码
    发表于 11-21 16:51 14次下载
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>查询按键控制8个<b class='flag-5'>流水灯</b>

    4 C语言基础以及流水灯实现(4.3 4.4)

    4.3 C语言基本运算符 小学数学学过加、减、乘、除等运算符号以及四则混合运算,而这些运算符号在C语言中也有,但是有些表达方法不一样,并且还
    的头像 发表于 10-29 15:30 476次阅读

    4 C语言基础以及流水灯实现(4.7 4.8)

    1.1 Keil软件延时 C语言常用的延时方法,有如图4-2所示4种。 图4-2  C
    的头像 发表于 11-19 17:20 1097次阅读
    <b class='flag-5'>第</b><b class='flag-5'>4</b><b class='flag-5'>章</b> <b class='flag-5'>C</b><b class='flag-5'>语言</b>基础<b class='flag-5'>以及</b><b class='flag-5'>流水灯</b>的<b class='flag-5'>实现</b>(4.7 4.8)