2017-08-29 15 views
0

以下のコードは、blackfin用LED点滅プログラムの例です。bf537 LEDが右から左に点滅し、トグルバックします。/**/blackfin bf537 LED点滅

/**/

EX_INTERRUPT_HANDLER(Timer0_ISR) 
{ 
// confirm interrupt handling 
*pTIMER_STATUS = 0x0001; 

// shift old LED pattern by one, left to right 
if(sLight_Move_Direction) 
{ 
    if((ucActive_LED = ucActive_LED >> 1) <= 0x0020) ucActive_LED = 0x1000; 
} 
else 
{ 
    if((ucActive_LED = ucActive_LED << 1) == 0x0020) ucActive_LED = 0x0020; 
} 

// write new LED pattern to PORTF LEDs 
*pPORTFIO_TOGGLE = ucActive_LED; 

今、私は新しい機能を達成するためにコードを変更しようとしています、私はそれはそう、私は湖底を押す右1回に左から点滅します私のコードは下にあります /**/

EX_INTERRUPT_HANDLER(Timer0_ISR) 
{ 
// confirm interrupt handling 
*pTIMER_STATUS = 0x0001; 

// shift old LED pattern by one, left to right 
if(sLight_Move_Direction){ 

    ucActive_LED == 0x0800; 

    ucActive_LED = ucActive_LED >> 1; 

    ucActive_LED == 0x0040; 
} 

// write new LED pattern to PORTF LEDs 
*pPORTFIO_TOGGLE = ucActive_LED; 

/**/

今では動作しないことができるか、ジュースの点滅LED3、どのように私はそれを修正することができますか?

おかげ

+1

=の代わりに==を使用すると、「効果のない文」という警告が表示されます(すべてがboolに変換されます)。 ucActive_LED = ucActive_LED >> 1; ucActive_LED >> 1に置き換えることができます。 –

+0

私は試しましたが、まだ動作していません。コードや考え方に間違いはありますか? –

+0

私の間違いは、ucActive_LED >> = 1です。 –

答えて

0

数日考えた後、ここに私の答えです:

int Mode; 

EX_INTERRUPT_HANDLER(Timer0_ISR) 
{ 
    // confirm interrupt handling 
    *pTIMER_STATUS = 0x0001; 

    if(Mode == 1) 
    { 
    if((ucActive_LED = ucActive_LED >> 1) <= 0x0020) 
     ucActive_LED = 0x1000; 
    } 
    else if(Mode == 2) 
    { 
    if((ucActive_LED = ucActive_LED << 1) >= 0x1000) 
    ucActive_LED = 0x0020;    
    } 
    else if(Mode == 3) 
    { 
    if((ucActive_LED = ucActive_LED >> 2) <= 0x0020) 
     ucActive_LED = 0x1000; 
    } 


    // write new LED pattern to PORTF LEDs 
    *pPORTFIO = ucActive_LED; 
    } 

し、各ボタンが各モードに対応してPF5(SW13〜SW10) にPF2からボタンをプッシュするPORTFIOを設定したがって、モード1はLEDが左から右に点滅していることがわかります。モード2が右から左に点滅しています。モード3ではLED 2,4,6が点滅します。

関連する問題