Money 發問時間: 電腦與網際網路程式設計 · 1 0 年前

8051 LED燈...

這是他的程式:

#include<c8051f000.h>

main()

{

void delay(int);

int i,j;

WDTCN = 0xde;

WDTCN = 0xad;

XBR2 = 0xC0;

PRT3CF |= 0x00;

while(1)

{

i=0x80;

for(j=0;j<=7;j++)

{

P3=~i;

delay(10000);

i>>=1;

}

}

}

void delay(int count)

{

int i;

for(i=1;i<=count;i++);

}

這是LED燈從右跑到左的程式..

我想多加幾個程式下去..希望他可以照順序跑下去,各位高手幫忙一下。

●<--亮○<--滅

1: LED從外跑到裡在從裡跑到外,跑2次

--> <-- <--- --->

●○○○○○○●-->○○○●●○○○

2: 8顆LED燈同時閃..3次

3: 同上程式跑3次

4: 8顆LED燈同時閃..5次完後..在次重複1~4動作

拜託各位了..謝謝

已更新項目:

下面打錯..順序3: 由左到右跑2次後在執行4..抱歉ˊˋ

2 個已更新項目:

然後怎幫妳加點數阿..第一次用這個問..也算幫我了拉..謝謝!

1 個解答

評分
  • 1 0 年前
    最佳解答

    憑直覺有錯誤見怪~

    這是LED燈從右跑到左的程式..

    感覺有點怪捏~

    i >> 1

    意思是向 >> 方向移動一 ㄍ位置

    1000 0000 >>1

    0100 0000

    所以應該是右跑道左才對

    以下程式假設 ●=1 ○=0

    假如相反下列程式碼請自己左 not運算

    #include<c8051f000.h>

    main()

    {

    void delay(int);

    int i,j;

    WDTCN = 0xde;

    WDTCN = 0xad;

    XBR2 = 0xC0;

    PRT3CF |= 0x00;

    while(1)

    {

    for(j=1;j<=3;j++)

    {

    P3=~0x81;delay(10000);//●○○○ ○○○●

    P3=~0x42;delay(10000);//○●○○ ○○●○

    P3=~0x24;delay(10000);//○○●○ ○●○○

    P3=~0x18;delay(10000);//○○○● ●○○○

    P3=~0x24;delay(10000);//○○●○ ○●○○

    P3=~0x42;delay(10000);//○●○○ ○○●○

    P3=~0x81;delay(10000);//●○○○ ○○○●

    P3=~0xFF;delay(10000);//●●●● ●●●●

    P3=~0xFF;delay(10000);//●●●● ●●●●

    P3=~0xFF;delay(10000); //●●●● ●●●●

    }

    for(j=1;j<=5;j++){

    P3=~0xFF;delay(10000); //●●●● ●●●●

    }

    }

    }

    void delay(int count)

    {

    int i;

    for(i=1;i<=count;i++);

    }

    參考資料: 自己經驗
還有問題?馬上發問,尋求解答。