|
普通的流水燈是讓8個led依次點亮,此升級版會讓流水燈點亮第三個LED后再回到第二個LED,讓LED呈現(xiàn)出震蕩的形式,從左邊到右邊,再從右邊彈到左邊,實驗程序很簡單,還是很有趣的。此程序會讓初學(xué)者對FOR語句的掌握更加牢固。
一下是本程序的源碼:
/*本程序使led向右移動2格再向左移動一格以此循環(huán),在觸及到第八個LED時又彈回來向左以以上規(guī)律移動*/
/********************************************************************/
#include<reg52.h> // 定義了一些特殊功能寄存器
#include<intrins.h> // 需用到左右移函數(shù)
#define led P2 // 將P2定義為led
typedef unsigned int u16; //對數(shù)據(jù)類型進行聲明定義
typedef unsigned char u8;
/***********************************/
void delay(u16 i) //延時函數(shù) 循環(huán)一次延時10us,當(dāng)i=50000時大概延時450ms
{
while(i--);
}
/***********************************/
void main() //主函數(shù)
{
u8 i,j; // i led逐步右移計數(shù),jled左右閃動計數(shù)
while(1) //無限循環(huán)
{ led=0x01; //讓第一個LED發(fā)光 ,延時
delay(8000);
for(i=0;i<6;i++) //由于最后一個LED發(fā)光后不能跳到后一個LED,所以第七次單獨運行
{
for(j=0;j<2;j++) //LED向右移動2
{
led=_crol_(led,1);
delay(8000);
}
for(j=j;j>1;j--) //LED向左移動1
{
led=_cror_(led,1);
delay(8000);
}
}
for(i=i;i<7;i++) //當(dāng)i=6時led向右移動2
{
led=_crol_(led,1);
delay(8000);
}
for(i=0;i<6;i++) // 和以上過程相反
{
for(j=0;j<2;j++)
{
led=_cror_(led,1);
delay(8000);
}
for(j=j;j>1;j--)
{
led=_crol_(led,1);
delay(8000);
}
}
for(i=i;i<7;i++)
{
led=_cror_(led,1);
delay(8000);
}
}
}
相機速度有點慢,看起來有兩個LED同時移動
|
評分
-
查看全部評分
|