for语句是我们今后编程的一个常用的语句,这个语句必须得学会其用法,他不仅仅可以用来做延时,还可以用来做一些循环运算。for语句的一般形式如下:
for(表达式1; 表达式2; 表达式3)
(需要执行的语句);
其执行过程是:表达式1首先执行且只执行一次;然后执行表达式2,通常都是一个用于判定条件的表达式,如果表达式2条件成立,就执行(需要执行的语句);然后再执行表达式3;再判断表达式2,再执行表达式3.....一直到表达式2不成立时,跳出循环往下执行。举个例子:
for(i = 0; i<2; i++)
j++;
这里有一个符号++,这个符号表示加1的意思。假如j最开始初值是0,首先执行表达式1的i=0,然后判断i小于2这个条件成立,就执行一次j++,j的值就是1了,然后经过表达式3后,i的值也变成1了,再判断条件2,还是符合,j再加一次,j变成2了,表达式3后i也变成2了,再判断条件2,发现2<2这个条件不成立了,所以就不会再执行j++这个语句了。所以执行完毕后,j的值就是2。
for语句除了这种标准用法,还有几种特殊用法,我们上节课的闪烁小灯对for语句的用法for(i=0; i<30000; i++) ;我们没有加(需要执行的语句),没有加的话,就是什么都不操作。但是什么都不操作的话,我们这个for语句循环判断了30000次,程序执行是会用掉时间的,所以就起到了延时的作用。比如我们把30000改成20000,会发现灯的闪烁速度加快了,因为我们延时时间短了,当然,我们该成40000后会发现,闪烁慢了。但是有一点特别注意,C语言的延时时间是不能通过程序看出来的,也不会成比例,比如假如我们这个for循环里边的表达式2使用30000的时候延时3秒的话,那么延时40000的时候,可能不会是4秒,那如何看实际延时时间呢,一会我再教大家。
还有一种写法for( ; ; ),这样写后,这个for循环就变成了死循环了,就不停的执行(需要执行的语句),和我们前边讲的while(1)的意思是一样的。那while这个语法是如何用的呢?
关键字:单片机编程 for 循环语句
引用地址:
单片机编程中for循环语句
推荐阅读最新更新时间:2024-03-16 13:55
2GB RAM+Force Touch? 新一代iPhone你期待吗
六月将至,新一代苹果iPhone的消息又开始满天飞,显然众媒体对于新一代苹果iPhone的挖掘从未停止,而从目前曝光的数据来说,即便是外观上不会有太大变化的情况下,新一代的iPhone应该会让你感到眼前一亮,因为很多你所期待的配置与体验都会出现。虽然现在流行“拼颜值”,不过或许新一代的苹果iPhone推出之后,你还是会回到拼体验中来,总之按照以往的进程,新一代的iPhone手机即将到出货的阶段,下面就让我们一起来剖析一下值得关注的几点。 2GB RAM+Force Touch? iPhone7你期待吗
关于名字:iPhone6s or iPhone7
首先这第一个问题就是命名,究竟应该叫苹果iPhone 6s
[手机便携]
Molex 对 Excelfore 的投资拓展车载互连平台的范畴
(新加坡 – 2017 年2月7日) 全套互连解决方案的全球性制造商 Molex宣布与 Excelfore 公司达成战略性全球协作关系,并对其进行投资。后者是位于美国硅谷的一家创新型的提供商,主要为智能运输行业提供云计算平台和连接应用。Molex 在 A 轮投资中确定了持有 Excelfore 公司 20% 的少数股权。 Excelfore 总部位于美国加州的佛里蒙特,在中国、德国、印度和日本设有办事处,专业从事为智能移动网络提供中间件解决方案,为下一代智能、自主和自我学习式车辆、车队及相应的基础设施提供支持。Excelfore 的汽车软件产品可实现汽车零部件与基于云的服务器之间的通信,实现对车队的监控,并且提供空中固件更新
[汽车电子]
尺寸有限性能无线,FORESEE SPI NAND Flash问市
随着5G时代即将带来的数据狂潮,万物互联对存储芯片也提出了更高的要求。电子产品的功能越来越丰富且复杂,但尺寸却越来越小,存储芯片小型化的趋势愈加明显。凭借20多年的技术深化与经验的积累,江波龙电子旗下嵌入式存储品牌FORESEE推出SPI(Serial Peripheral Interface)NAND Flash产品,契合了移动电子产品小型化发展需求和便携的特点。经过全方位的测试与验证,其在容量及性能方面均已达到行业前列。 背景 以往电子产品的功能少而简单,所需要编写的程序代码不多,一般用NOR Flash来存储程序即可满足需要。而现在电子产品的功能越来越丰富、复杂,所需要运行的程序越来越大,代码越来越多
[嵌入式]
宾利推出“Naim for MULLINER”
据外媒报道,宾利汽车公司(Bentley Motors)向Mulliner Batur车型的客户发布全新音响系统的详细信息。经过10000小时的开发工作,加上卓越的新硬件和整个系统的重新校准,全新“Naim for Mulliner”堪称宾利有史以来最精致的车载音响系统。该选装系统价值25000英镑,仅限于18名客户预定的Batur车辆。 (图片来源:宾利公司) 宾利对20个扬声器的设置提出56条要求和建议,以满足定制Batur车型的高标准。虽然Batur只能容纳两名乘员,但搭载了6个高音扬声器、9个中音扬声器、2个低音扬声器、2个有源低音换能器和1个低音扬声器。这些中音扬声器和高音扬声器拥有独特的扬声器驱动器,而低
[汽车电子]
Cadence 推出全新数字孪生平台 Millennium Platform,提供超高性能和高能效比
内容提要 颠覆性的专用软硬件加速平台;利用 GPU 和 CPU 计算以及专有软件算法,提高准确度、速度和规模的同时,带来高达 100 倍的设计效率提升 与传统 HPC 相比,支持 GPU-resident 模式的求解器可将仿真能效显著提高 20 倍 将数字孪生、人工智能和 HPC 技术相结合,为汽车、航空航天、能源、叶轮机械和数据中心提供更优的多物理场仿真解决方案 利用创新的生成式人工智能技术,进一步加速设计和分析探索,获得卓越的设计洞见,提供更好的系统解决方案 支持在云端或本地进行 CFD 多物理场分析,以满足客户的业务需求 中国上海,2024 年 2 月 2 日 —— 楷登电子(美国 Cadenc
[半导体设计/制造]
#pragma vector语句在IAR for MSP430中断程序编程过程中的使用
在使用keil对STC89C52单片机程序开发过程中使用 void Name_Function interrupt n 来作为中断服务函数程序的入口,但是在IAR for MSP430程序开发过程中则使用#pragma vector提供中断函数入口地址,并使用 _interrupt void _Name_Function来定义中断函数名称,示例如下: #pragma vector = 0xFFF4; //WDT_VECTOR = 0xFFF4 是看门狗定时器中断地址 __interrupt void Watchdog_Timer(void) { /****/ } 1、上面的入口地址也可写成#pragma vector
[单片机]
关于单片机上for循环中运用ACC的隐蔽错误
最近写了几个程序,一个是用51单片机读取模数传感器adc0832的电压值,一个是读取ds1302的时间值,结果都出现了读数一直为0的情况。我调试了近一个星期,修改了一个我认为不可能会错的句子,程序运行成功了,这才发现了一个极其隐蔽的错误。(我用的是xp系统,用keil4软件编译) 先上代码:第一个为错误代码,第二个为正确代码。这是用来向ds1302芯片写入命令或数据的函数。实现把8位的数据dat一位一位地写入ds1302的io口。其中ACC0为ACC的第0位。 //for(i=0;i 8;i++),ACC版 void ds1302_input(uchar dat) { uchar i; //uchar= unsi
[单片机]
单片机编程中的时钟中断
本文以6MHz时钟的 单片机 AT89C51系统为例,说明时钟中断的应用: 定时器初值与中断周期 时钟中断无需过于频繁,一般取20mS(50Hz)即可。如需要百分之一秒的时基信号,可取10mS(100Hz)。这里取20mS,用定时器T0工作于16位定时器方式(方式1)。T0的工作方式为:每过一个机器周期自动加1,当计满0FFFFh,要溢出时,便会产生中断,并由硬件设置相应的标志位供软件查询。即中断时比启动时经过了N+1个机器周期。所以,我们只要在T0中预先存入一个比满值0FFFFh小N的数,然后启动定时器,便会在N个机器周期后产生中断。这个值便是所谓的“初值”。下面计算我们需要的初值:时钟为6MHz,12个时钟周期为一个
[单片机]