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