流水燈設(shè)計(jì)的幾個(gè)程序
程序如下:
#include
delay(k)//延時(shí)函數(shù)
{
while(k--)
{}
}
void
{
unsigned
P1
for(n = 1;n
{
delay(t);
P1
P1
}
}
開(kāi)始的時(shí)候不會(huì)用位運(yùn)算,把每一步都寫出來(lái)(一閃一滅,每一次都是用賦值來(lái)表示),數(shù)著到那一個(gè)閃爍,
代碼很復(fù)雜,經(jīng)過(guò)提醒后,然后通過(guò)位運(yùn)算,大大化簡(jiǎn)了代碼的數(shù)量,而且可讀性提高不少..
錯(cuò)誤的原因是:不了解編譯語(yǔ)言是否可以像c語(yǔ)言一樣編譯,想了一會(huì),就用復(fù)雜的代碼去寫出這個(gè)程序.
第二個(gè)程序:讓流水燈,從右到左,第一個(gè)燈從暗到明,然后到最亮程度就保持住這個(gè)狀態(tài),然后第二個(gè)燈緊接著從暗到明,然后是第3個(gè)燈,以此類推直到全亮,然后集體熄滅.
程序如下:
#include
delay(k)//延時(shí)函數(shù)
{
while(k--)
{}
}
void
{
unsigned
const int t = 600;
P1
for(n = 1;n
{
for(i
{
delay(t-i);//通過(guò)每一次循環(huán)暗的時(shí)間減少
P1
delay(i);//通過(guò)每一次循環(huán),亮的時(shí)間增多,在人的眼睛看來(lái)就可以逐漸增亮
P1
}
}
P1
delay(25000);
}
開(kāi)始的時(shí)候,認(rèn)為通過(guò)閃爍次數(shù)和熄滅的次數(shù)一樣,然后最后就亮了,就可以算是由暗到亮了,這個(gè)想法到最后燒寫發(fā)現(xiàn)變化太快了,由暗到亮的過(guò)程不算表示出來(lái),出現(xiàn)了最致命的錯(cuò)誤...
其實(shí)我們主要是在亮和暗的時(shí)間方面做了緩慢的變化就可以表示有暗到亮的過(guò)程....
第三個(gè)程序:讓流水燈,從左到右,第一個(gè)燈,從暗到明,然后亮度再降下來(lái),然后是接下一個(gè)燈,就是依次明暗亮一個(gè)燈,一次只亮暗一個(gè)
程序如下:
#include
delay(k)//一個(gè)延時(shí)的函數(shù)
{
while(k--)
{}
}
void
{
unsigned
const
P1
for(n
{
for(i
P1
delay(t-i);
P1
delay(i);
}
for(i
{
delay(t-i);
P1
delay(i);
P1
}
dark
}
}
開(kāi)始的時(shí)候,也是想到用加法去表示出來(lái),用0xff<
在其中有一個(gè)常量用了變量的形式去表示,這個(gè)是占用內(nèi)存的錯(cuò)誤,因此,每一次寫,就要想好這個(gè)量是用常量還是用變量,如果是常量,可以用宏的形式去表示,也可以用const 去表示..用宏更容易維護(hù)
最后,我想下一次,每一次燒寫我的程序之前,都會(huì)用流水燈的程序運(yùn)行運(yùn)行一次,確保燈的連線閉路的...
而且,寫完運(yùn)行之后,就找找那些變量是不是變了,是不是可以用常量表示.
自己看自己的程序,是不是可以一路看到最后,走到那個(gè)一步是要找出他的大小..會(huì)有麻煩,不方便...就看是否可以進(jìn)行修改...
評(píng)論