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

單晶片程式解釋 ~ 麻煩大大們 &15點&

請高手大大幫忙一下 ~ ( 每行程式的解釋 ) 15點喔^^

麻煩哩 ~

//= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

unsigned int table2[8] = {0x003F,0x0006,0x005B,0x004F,0x0066,0x006D,0x007D,0x0027};

int main()

{

unsigned Key= 0x0000;

//unsigned i=0;

*P_IOA_Dir = 0x00ff;

*P_IOA_Attrib = 0x00ff;

*P_IOA_Data = 0xff00;

*P_IOB_Dir=0x000ff;

*P_IOB_Attrib=0x00ff;

*P_IOB_Data = 0x0000;

while(1)

{

*P_IOB_Data = 0x003f;

Key = GetKey();

if (Key&0x0100)

{

*P_IOA_Data=table2[0];

Delay();

*P_IOA_Data=0x0000;

}

if (Key&0x0200)

{

*P_IOA_Data=table2[1];

Delay();

*P_IOA_Data=0x0000;

}

if (Key&0x0400)

{

*P_IOA_Data=table2[2];

Delay();

*P_IOA_Data=0x0000;

}

if (Key&0x0800)

{

*P_IOA_Data=table2[3];

Delay();

*P_IOA_Data=0x0000;

}

if (Key&0x1000)

{

*P_IOA_Data=table2[4];

Delay();

*P_IOA_Data=0x0000;

}

if (Key&0x2000)

{

*P_IOA_Data=table2[5];

Delay();

*P_IOA_Data=0x0000;

}

if (Key&0x4000)

{

*P_IOA_Data=table2[6];

Delay();

*P_IOA_Data=0x0000;

}

if (Key&0x8000)

{

*P_IOA_Data=table2[7];

Delay();

*P_IOA_Data=0x0000;

}

}

}

//======================================================

// 函數名稱: void Delay()

// 日期:20090709

// 功能描述: 延時並清看門狗

//======================================================

int Delay()

{

int DelayValue = 0;

for (DelayValue = 0; DelayValue < 0xf000; DelayValue++)

*P_Watchdog_Clear = 1;

}

//======================================================

這是一個 執行單晶片的LED燈的程式 ~~~

麻煩大大能幫幫小弟我每一行 都能解釋清楚嗎 ?? ^^"

感激喔 ~ *15點*

1 個解答

評分
  • 1 0 年前
    最佳解答

    unsigned int table2[8] = {0x003F,0x0006,0x005B,0x004F,0x0066,0x006D,0x007D,0x0027};

    int main()

    {

    unsigned Key= 0x0000;

    //unsigned i=0;

    *P_IOA_Dir = 0x00ff; //把設定PORTA設定成I/O PORT

    *P_IOA_Attrib = 0x00ff;/把PORT 設定為 OUTPUT PORT

    *P_IOA_Data = 0xff00;//設定PORTA開始資料

    *P_IOB_Dir=0x000ff; //把設定PORTB設定成I/O PORT

    *P_IOB_Attrib=0x00ff;//把PORT設定為 OUTPUT PORT

    *P_IOB_Data = 0x0000;/設定PORTB開始資料

    while(1)

    {

    *P_IOB_Data = 0x003f;//在設定一次 PORTB開始資料

    Key = GetKey(); //把按鍵KEY值讀出來

    if (Key&0x0100)//判斷是否按了KEY 0x0100

    {

    *P_IOA_Data=table2[0]; //將TABLE第0資料輸出

    Delay();

    *P_IOA_Data=0x0000; //清除PORTA的資料

    }

    if (Key&0x0200)//判斷是否按了KEY 0x0200

    {

    *P_IOA_Data=table2[1];//將TABLE第1資料輸出

    Delay();

    *P_IOA_Data=0x0000;//清除PORTA的資料

    }

    if (Key&0x0400)//判斷是否按了KEY 0x0400

    {

    *P_IOA_Data=table2[2];//將TABLE第2資料輸出

    Delay();

    *P_IOA_Data=0x0000;//清除PORTA的資料

    }

    if (Key&0x0800)//判斷是否按了KEY 0x0800

    {

    *P_IOA_Data=table2[3];//將TABLE第3資料輸出

    Delay();

    *P_IOA_Data=0x0000;//清除PORTA的資料

    }

    if (Key&0x1000)//判斷是否按了KEY 0x1000

    {

    *P_IOA_Data=table2[4];//將TABLE第4資料輸出

    Delay();

    *P_IOA_Data=0x0000;//清除PORTA的資料

    }

    if (Key&0x2000)//判斷是否按了KEY 0x2000

    {

    *P_IOA_Data=table2[5];//將TABLE第5資料輸出

    Delay();

    *P_IOA_Data=0x0000;//清除PORTA的資料

    }

    if (Key&0x4000)//判斷是否按了KEY 0x4000

    {

    *P_IOA_Data=table2[6];//將TABLE第6資料輸出

    Delay();

    *P_IOA_Data=0x0000;//清除PORTA的資料

    }

    if (Key&0x8000)//判斷是否按了KEY 0x8000

    {

    *P_IOA_Data=table2[7];//將TABLE第7資料輸出

    Delay();

    *P_IOA_Data=0x0000;//清除PORTA的資料

    }

    }

    }

還有問題?馬上發問,尋求解答。