資源描述:
《第七講--延時(shí)子函數(shù).ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、延時(shí)子函數(shù)引入:通過(guò)前幾次課的學(xué)習(xí),我們已經(jīng)知道了控制LED閃爍程序設(shè)計(jì),同時(shí),也能對(duì)閃爍的快慢進(jìn)行適當(dāng)?shù)恼{(diào)節(jié)。但,如果需要較為準(zhǔn)確的延時(shí),程序應(yīng)該怎么編寫呢?能不能將這一部分模塊化,直接調(diào)用?子函數(shù)的編寫與調(diào)用利用for語(yǔ)句實(shí)現(xiàn)延時(shí)一、利用for語(yǔ)句實(shí)現(xiàn)延時(shí)(重難點(diǎn))1、延時(shí)程序(空轉(zhuǎn))for(a=1000;a>0;a--){for(b=125;b>0;b--){}}“for(b=125;b>0;b--)”將會(huì)被執(zhí)行1000*125=125000次,所需時(shí)間約等于1000ms,即1s。我們可以在b不變的情況下,改變a的值,得到需要的時(shí)間
2、2s=2000*125(a=2000)0.5s=500*125(a=500)會(huì)被執(zhí)行多少次?for(a=1000;a>0;a--){for(b=125;b>0;b--){}}*此處變量a,b,x需提前給出數(shù)據(jù)類型;注意這兩條語(yǔ)句名尾的標(biāo)點(diǎn)符號(hào)紅色框內(nèi)即為延時(shí)模塊,延時(shí)時(shí)間由x決定。當(dāng)x=1000,延時(shí)1s,x=500時(shí),延時(shí)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、程序化簡(jiǎn):for(a=x;a>0;a--)for
3、(b=125;b>0;b--);二、子函數(shù)1、作用:將部分程序段模塊化,防止重復(fù)編寫,使用時(shí)直接調(diào)用。如不使用子函數(shù)并不一定影響程序執(zhí)行,但整個(gè)主函數(shù)將非常臃腫。比如: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--);}}重復(fù)書寫!!2、子函數(shù)的基本結(jié)構(gòu)void名稱(定義變量)//無(wú)變量時(shí)為空//{程序語(yǔ)句;……}voidyanshi(uintx){uinta,b;f
4、or(a=x;a>0;a--)for(b=125;b>0;b--);}3、子函數(shù)的調(diào)用格式:子函數(shù)名稱(常量/變量);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--);等同于執(zhí)行等同于執(zhí)行延時(shí)1s延時(shí)1s4、子函數(shù)使用規(guī)則1)不是每個(gè)C語(yǔ)言程序都必須要有子函數(shù)。2)子函數(shù)必須預(yù)先聲明。格式為:void子函數(shù)名(數(shù)據(jù)類型);3)子函數(shù)不能自動(dòng)運(yùn)行,必須被調(diào)用后才能被執(zhí)行。4)主函數(shù)
5、可以調(diào)用子函數(shù),子函數(shù)也可以調(diào)用子函數(shù),但子函數(shù)不能調(diào)用主函數(shù)。5)子函數(shù)通常取易記不與系統(tǒng)沖突的名字。要注意區(qū)分大小寫。三、八只LED閃爍完整程序#include//導(dǎo)入頭文件//#defineuintunsignedint//宏定義//voidyanshi(uint);//聲明子函數(shù)//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--);}聲明部分死循環(huán)主函數(shù)子函數(shù)包含調(diào)用完成亮滅交替完成延時(shí)預(yù)備工作P1=~P1;yanshi(1000);我們已經(jīng)學(xué)習(xí)了燈的閃爍及時(shí)間的準(zhǔn)確設(shè)置,如果希望八只LED從左往右或從右往左輪流點(diǎn)亮(逐一點(diǎn)亮),程序應(yīng)該怎么寫呢?1、如果讓接在P1口的八只LED同時(shí)閃爍,亮一秒鐘滅兩秒鐘。程序應(yīng)該怎么設(shè)計(jì)?2、子函數(shù)命名時(shí)為小寫,調(diào)用時(shí)為大寫,程序(能/不能)正常執(zhí)行。3、子函數(shù)使用規(guī)則有哪些?