Uso de un solo retardo en el parpadeo del LED

2

El siguiente código básicamente parpadea en amarillo LED en la Plataforma de lanzamiento MSP430 en el puerto 1.6.

Tuve que usar dos

  

do-while

bucles para proporcionar retrasos. ¿Hay alguna manera de hacer esto usando un solo do-while?

int main(void)
{
      P2DIR = 0xFF;
      P2OUT = 0x00;
          P3DIR = 0xFF;
          P3OUT = 0x00;
        volatile unsigned int i;    // volatile to prevent optimization
       WDTCTL = WDTPW + WDTHOLD;       // Stop watchdog timer
       P1DIR |= 0x40;                  // Set P1.6 (Green LED) to output
       while( 1 ) {
           i = 9000;                    // SW Delay
           do i--;
               while(i != 0);
           P1OUT |= 0x40;              // Green LED On
           i = 9000;                    // SW Delay
             do i--;
       while(i != 0);

       P1OUT &= ~0x40;             // Green LED Off
   }
}
    
pregunta gpuguy

1 respuesta

2

Como desea parpadear el LED, puede usar X-OR en lugar de & y O así, será como:

 while( 1 )
   {
           i = 9000;                    // SW Delay
           do 
           {
              i--;
           } while(i != 0);
           P1OUT ^= 0x40;              // Toggle Green LED
    }

XOR se usa normalmente para alternar.

    
respondido por el Swanand

Lea otras preguntas en las etiquetas