欢迎来到天天文库
浏览记录
ID:59457331
大小:1.27 MB
页数:12页
时间:2020-09-15
《第七讲--延时子函数.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、延时子函数引入:通过前几次课的学习,我们已经知道了控制LED闪烁程序设计,同时,也能对闪烁的快慢进行适当的调节。但,如果需要较为准确的延时,程序应该怎么编写呢?能不能将这一部分模块化,直接调用?子函数的编写与调用利用for语句实现延时一、利用for语句实现延时(重难点)1、延时程序(空转)for(a=1000;a>0;a--){for(b=125;b>0;b--){}}“for(b=125;b>0;b--)”将会被执行1000*125=125000次,所需时间约等于1000ms,即1s。我们可以在b不变的情况下,改变a的值,得到需要的时间
2、2s=2000*125(a=2000)0.5s=500*125(a=500)会被执行多少次?for(a=1000;a>0;a--){for(b=125;b>0;b--){}}*此处变量a,b,x需提前给出数据类型;注意这两条语句名尾的标点符号红色框内即为延时模块,延时时间由x决定。当x=1000,延时1s,x=500时,延时0.5s。for(a=1000;a>0;a--){for(b=125;b>0;b--);}for(a=1000;a>0;a--)for(b=125;b>0;b--);2、程序化简:for(a=x;a>0;a--)for
3、(b=125;b>0;b--);二、子函数1、作用:将部分程序段模块化,防止重复编写,使用时直接调用。如不使用子函数并不一定影响程序执行,但整个主函数将非常臃肿。比如:voidmain(){while(1){P1=0x00;for(a=1000;a>0;a--)for(b=125;b>0;b--);P1=0xff;for(a=1000;a>0;a--)for(b=125;b>0;b--);}}重复书写!!2、子函数的基本结构void名称(定义变量)//无变量时为空//{程序语句;……}voidyanshi(uintx){uinta,b;f
4、or(a=x;a>0;a--)for(b=125;b>0;b--);}3、子函数的调用格式:子函数名称(常量/变量);yanshi(1000);for(a=1000;a>0;a--)for(b=125;b>0;b--);m=1000;yanshi(m);for(a=1000;a>0;a--)for(b=125;b>0;b--);等同于执行等同于执行延时1s延时1s4、子函数使用规则1)不是每个C语言程序都必须要有子函数。2)子函数必须预先声明。格式为:void子函数名(数据类型);3)子函数不能自动运行,必须被调用后才能被执行。4)主函数
5、可以调用子函数,子函数也可以调用子函数,但子函数不能调用主函数。5)子函数通常取易记不与系统冲突的名字。要注意区分大小写。三、八只LED闪烁完整程序#include//导入头文件//#defineuintunsignedint//宏定义//voidyanshi(uint);//声明子函数//voidmain(){while(1){P1=0x00;yanshi(1000);//灯亮1s//P1=0xff;yanshi(1000);//灯灭1s//}}voidyanshi(uintx){uinti,j;for(i=x;i>0
6、;i--)for(j=125;j>0;j--);}声明部分死循环主函数子函数包含调用完成亮灭交替完成延时预备工作P1=~P1;yanshi(1000);我们已经学习了灯的闪烁及时间的准确设置,如果希望八只LED从左往右或从右往左轮流点亮(逐一点亮),程序应该怎么写呢?1、如果让接在P1口的八只LED同时闪烁,亮一秒钟灭两秒钟。程序应该怎么设计?2、子函数命名时为小写,调用时为大写,程序(能/不能)正常执行。3、子函数使用规则有哪些?
此文档下载收益归作者所有