2017-08-29 4 views
0

Ces codes ci-dessous sont l'exemple du programme de clignotement de LED pour blackfine bf537 les voyants clignotent de droite à gauche et de bascule arrière. /**/blackfin bf537 LED clignotant

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; 

/**/

Maintenant, je suis en train de modifier les codes pour accomplir la nouvelle fonction, je veux clignoter de gauche à droite une fois quand je pousse le buttom, donc il y a mes codes ci-dessous: /**/

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; 

/**/

maintenant, il ne peut pas fonctionner ou jus clignement LED3, Comment puis-je résoudre ce problème?

Merci

+1

Vous utilisez == au lieu de = et vous obtiendrez une "déclaration sans effet" (le tout sera converti en booléen). ucActive_LED = ucActive_LED >> 1; peut être remplacé par ucActive_LED >> 1; –

+0

J'ai essayé mais je ne travaille toujours pas. Y at-il quelque chose de mal avec les codes ou ma pensée? –

+0

Mon erreur, c'est ucActive_LED >> = 1; –

Répondre

0

après quelques jours de penser, voici ma réponse:

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; 
    } 

puis définissez le PORTFIO pour pousser les boutons de PF2 à PF5 (SW13 ~ SW10) chaque bouton correspond à chaque mode , donc nous pouvons voir que le mode 1 est les LED clignotent de gauche à droite. Le mode 2 clignote de droite à gauche. Et le mode 3 clignote les LED 2, 4 et 6.