<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 流水燈設計的幾個(gè)程序

流水燈設計的幾個(gè)程序

作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò ) 收藏
第一個(gè)程序:讓流水燈,從左到右,第一個(gè)燈,一瞬間到最高亮度,然后降到最低亮度,之后,就是前兩個(gè)燈重復第一個(gè)燈的情況,然后是前三個(gè)燈,然后是前4個(gè)燈,直到全部完成
程序如下:
#include
delay(k)//延時(shí)函數
{
while(k--)
{}
}

voidmain(void)//主函數
{
unsignedintt=25000,n=1;
P1=0xfe;
for(n = 1;n<=7;n++)//可讀性提高
{
delay(t);
P1=(0xfe<delay(t);
P1=0XFF;
}
}
開(kāi)始的時(shí)候不會(huì )用位運算,把每一步都寫(xiě)出來(lái)(一閃一滅,每一次都是用賦值來(lái)表示),數著(zhù)到那一個(gè)閃爍,
代碼很復雜,經(jīng)過(guò)提醒后,然后通過(guò)位運算,大大化簡(jiǎn)了代碼的數量,而且可讀性提高不少..
錯誤的原因是:不了解編譯語(yǔ)言是否可以像c語(yǔ)言一樣編譯,想了一會(huì ),就用復雜的代碼去寫(xiě)出這個(gè)程序.

第二個(gè)程序:讓流水燈,從右到左,第一個(gè)燈從暗到明,然后到最亮程度就保持住這個(gè)狀態(tài),然后第二個(gè)燈緊接著(zhù)從暗到明,然后是第3個(gè)燈,以此類(lèi)推直到全亮,然后集體熄滅.
程序如下:

#include
delay(k)//延時(shí)函數
{
while(k--)
{}
}

voidmain(void)//主函數
{
unsignedintn=1,i=1;//都最后要看看那些是變量,那些是常量
const int t = 600;


P1=0XFF;
for(n = 1;n<9;n++)
{
for(i=1;i<=t;i++)
{
delay(t-i);//通過(guò)每一次循環(huán)暗的時(shí)間減少
P1=(0XFF>>n);
delay(i);//通過(guò)每一次循環(huán),亮的時(shí)間增多,在人的眼睛看來(lái)就可以逐漸增亮
P1=(0XFF>>(n-1));
}
}
P1=0XFF;
delay(25000);
}
開(kāi)始的時(shí)候,認為通過(guò)閃爍次數和熄滅的次數一樣,然后最后就亮了,就可以算是由暗到亮了,這個(gè)想法到最后燒寫(xiě)發(fā)現變化太快了,由暗到亮的過(guò)程不算表示出來(lái),出現了最致命的錯誤...
其實(shí)我們主要是在亮和暗的時(shí)間方面做了緩慢的變化就可以表示有暗到亮的過(guò)程....

第三個(gè)程序:讓流水燈,從左到右,第一個(gè)燈,從暗到明,然后亮度再降下來(lái),然后是接下一個(gè)燈,就是依次明暗亮一個(gè)燈,一次只亮暗一個(gè)
程序如下:
#include

delay(k)//一個(gè)延時(shí)的函數
{
while(k--)
{}
}

voidmain()//主函數
{
unsignedintdark=0xfe,i=1,n=1;
constintt=600;//珍惜內存啊,不變的可以用常量來(lái)表示

P1=0xff;
for(n=1;n<=8;n++)
{
for(i=1;i{
P1=0XFF;
delay(t-i);
P1=(dark);
delay(i);
}
for(i=i;i>0;i--)//由亮到暗
{
delay(t-i);
P1=(dark);
delay(i);
P1=0XFF;
}
dark=(dark<<1)+1;//向左位移后,最右補0,如果沒(méi)有+1,那就會(huì )亮起來(lái),沒(méi)有一次只亮一個(gè)
}
}
開(kāi)始的時(shí)候,也是想到用加法去表示出來(lái),用0xff<在其中,for中的語(yǔ)句有一些可讀性不高的語(yǔ)句for(;n<9;n++),這些語(yǔ)句,在看程序的時(shí)候就要找出那個(gè)已經(jīng)賦值的n在那里,是什么值..最后就把他改為for(n = 1;n<9;n++)
在其中有一個(gè)常量用了變量的形式去表示,這個(gè)是占用內存的錯誤,因此,每一次寫(xiě),就要想好這個(gè)量是用常量還是用變量,如果是常量,可以用宏的形式去表示,也可以用const 去表示..用宏更容易維護


最后,我想下一次,每一次燒寫(xiě)我的程序之前,都會(huì )用流水燈的程序運行運行一次,確保燈的連線(xiàn)閉路的...
而且,寫(xiě)完運行之后,就找找那些變量是不是變了,是不是可以用常量表示.
自己看自己的程序,是不是可以一路看到最后,走到那個(gè)一步是要找出他的大小..會(huì )有麻煩,不方便...就看是否可以進(jìn)行修改...


關(guān)鍵詞: 流水燈延時(shí)函

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>