Kelp-Space 是記錄一些生活雜事的Blog
如有任何程式設計的問題歡迎到 飛特技術論壇 討論

2008-10-25

霹靂燈 - 使用右移減少燈數

某天在看加強版遊戲王的時候MSN突然傳來求救訊息。
順道把這個功能的程式PO上來。
這個功能怎麼想都只能想到這麼爛的標題。
直接看功能要求。
使用晶片為8051。


功能要求 複製程式碼(Copy to clipboard)
●●●●●●●
●●●●●●○
●●●●●○●
●●●●●○○
●●●●○●○
●●●●○○●
●●●●○○○
●●●○●○○
●●●○○●○
●●●○○○●
●●●○○○○
●●○●○○○
●●○○●○○
●●○○○●○
●●○○○○●
●●○○○○○
●○●○○○○
●○○●○○○
●○○○●○○
●○○○○●○
●○○○○○●
●○○○○○○
○●○○○○○


程式碼 複製程式碼(Copy to clipboard)
#include <REGX51.H>

void delay(void)
{
        unsigned long m;
        for(m=0;m<2000;m++);
}

int main(void)
{
        int i,j,x;
        while(1)
        {
                i=0xff;
                j=1;
                P2=i;
                delay();

                while(i>0)      //第一層迴圈   用來減少霹靂燈數量
                {
                        i<<=1;
                        j<<=1;
                        x=j;     //設定右移霹靂燈起始位置
                        while(x>1)     //第二層迴圈 用來右移霹靂燈
                        {
                                x>>=1;
                                P2=i|x;
                                delay();
                        }
                        P2=i;
                        delay();
                }
        }
}

沒有留言:

張貼留言