欢迎来到天天文库
浏览记录
ID:34640593
大小:156.12 KB
页数:3页
时间:2019-03-08
《pic单片机c语言程序设计(3)new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、PIC单片机c语言程序设计(3)●丁锦滔在2009年11期连载中,我们已将C语言的上述for语句也可以改为:一些基本知识通过表1~表3列出,希望初学者加说明语句;强对上述表格内容的记忆,在编制C语言程序时,for(初始化条件;条件表达式;自减量--)逐步学会其使用,直到灵活应用。下面继续介绍C执行语句;语言中的循环语句及其应用。其功能是等效的。读者可以按需选用。3.for语句从上述for语句的组成可以看出,for语句实际for语句在前面的程序实例中已使用过一次。这上是一种按设计者要求编写的循环计数器,利用它里作进一步介绍。可使程序按指定的次数重复执行一个语句或者一串一般形式:语句
2、,所以常常用作延时功能。在延时函数中,为说明语句;了增加延时量,可将for语句按不同的变量组合使用,for(初始化条件;条件表达式;自增量++)以下的延时函数:执行语句;voiddelay()II延时函数运行过程如下:先求解初始化条件(初始化值{由用户设置);再判断条件表达式,若其值满足条inti:II自定义整型变量i件表达式,则执行for的内嵌语句(for以下的执行intj:II自定义整型变量j语句);在执行for的内嵌语句之后,求自增量4-+;for(i=O;i<=kl:i++)求解自增量++之后,返回运行过程的第2)步继for(j=0:j<=k2:j十+)续执行。如果在继续
3、执行过程中出现了不满足条件continue;表达式的值。则退出循环。·}for语句是组成延时函数的主要成分,即:其中,k1、k2是基本整型变量,其值按用户需voiddelay()//延时函数要的延时设定。{该延时函数可替换本连载2009年10期实例中inti:II整型变量i(说明语句)的voiddelay()函数,来增加或细调延时时间。for(0:_<=k:i++)//for语句4.do—while语句continue;II转向下次循环格式:do){对照本连载2009年1O期56页的程序实例中语句:的for语句,由该程序中,点亮LED的延时是一个)固定值,所以来用无参数延时(de
4、lay)函数voidwhile(条件表达式);delay()。其for语句中的k是基本的整型变量int功能:程序运行时,首先执行do中的内嵌语型,故取值上限不应超过两个字节(见本连载2009句,然后判断while中的条件表达式。若条件表达年11期的表3)。在该实例中,k=20000。k值越大,式为非零,则回执行do中的内嵌语句,如此循环,延时越长。直到条件表达式的值等于零时,才退出循环,执行2Oo9年囊'2期电荨镧佑57while语句之后的程序。staticbitPORTB一6@PORTBIT(PORTB,6)可见。do—while循环语句与循环语句while和voiddeIay
5、(unsignedlongintK):for的不同点是,do—while的循环是先执行d0中的∥带形式参数的延时函数声明内嵌语句,然后进行条件的判断,即不管条件判断unsignedlongintj=O:的结果如何(即使为0),其do—while中的语句至∥无符号的长整形变量j声明少要执行一次。main()//主函数5.程序实例3-一do—while语句的应用{do—while语句看似简单。但其应用十分广泛和TRISA=Ox3F;∥以下是口的初始化灵活。在while(条件表达式)中的条件表达式是由TRISB=0xOO:do中的内嵌语句执行的,这里仍以本连载(1)中INTC0N=Ox
6、O0;的图1为例加以说明。从中读者可以看到,点亮多PORTB=OxO0;个LED灯的C程序有多种编写方式,均可达到相P0RTB=OxFF;同的功能。While(RAO);do{。、PORTB=OxFE;∥给B13赋值B’11111110’delay(20000);∥延时3fgIlP0RTB=OxFD;∥给B口赋值B’111111O1’delay(20000);∥延时该程序功能是给PIC16F84A的端口PORTB赋00RTB=OxFB;不同的值,使端13PORTB各位外接的LED按所∥给B口赋值B’11111O11’赋的值不断点亮、熄灭,并重复循环。循环过程delay(20000
7、);//延时由do—whiIe语句中的内嵌语句自增量进行,循00RTB=OxF7;环次数由whiIe中的条件表达式决定。笔者将上∥给B口赋值B’1111O111’述功能的do—while语句应用程序命名为pic03c,delay(20000);//延时其清单如下:P0RTB=OxEF;#include∥包含头文件∥给B口赋值B’111O1111’#dellnePORTAIT(add,bit)(【unsigned)delay(20000);//延时(&add)1+(b
此文档下载收益归作者所有