Estou negociando um código C aqui que é executado no MSP430 LaunchPad. O que eu preciso fazer aqui é modificar o programa, para que, ao pressionar o botão, o micro passe por 4 modos diferentes:
- LED1 pisca enquanto LED2 está desligado
- O LED2 pisca enquanto o LED1 está desligado
- LED1 e LED2 piscam simultaneamente
- LED1 e LED2 piscam alternativamente
Não entendo aqui o que posso fazer para que o LED pisque simultaneamente e alternadamente. O LED1 pisca e o LED2 se apaga se SW2 estiver ALTO e vice-versa. Como os outros dois funcionam?
Aqui embaixo está o que foi feito até agora:
#include <msp430.h>
#include "msp430g2553.h"
int sw2=0;
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; //stop watchdog timer
P1DIR = 0x00; //port 1 all inputs
P1DIR |= (BIT0 | BIT6); //set P1.0 and P1.6 as outputs (LED1, LED2)
P1REN |= BIT3; //activate resister on P1.3
P1OUT |= BIT3; //make it pull up because SW2 is active low
for(;;)
{ sw2 = P1IN; //read values from P1
sw2 &= BIT3; //mask out only BIT3 where SW2 is connected
if (sw2 == BIT3)
{ //if SW2 is high
P1OUT &= ~BIT6; //turn LED2 off
P1OUT ^= BIT0; //toggle LED1
__ delay_cycles(50000); //delay 50,000 micro seconds
}
else
{ //else (SW2 is low)
P1OUT &= ~BIT0; //turn LED1 off
P1OUT ^= BIT6; //toggle LED2
__delay_cycles(200000); //delay 200,000 micro seconds
}
}
// end of infinite loop
}
//end of main