Mam tu do czynienia z kodem C, który jest uruchamiany na MSP430 LaunchPad. Muszę tutaj zmodyfikować program, aby za jednym naciśnięciem przycisku mikrokolej przechodził przez 4 różne tryby:
- Dioda LED1 miga, gdy dioda LED2 jest wyłączona
- Dioda LED2 miga, gdy dioda LED1 jest wyłączona
- Migają jednocześnie diody LED1 i LED2
- Migają naprzemiennie diody LED1 i LED2
Nie rozumiem tutaj, co mogę zrobić, aby obie diody LED migały jednocześnie i alternatywnie. Dioda LED1 miga, a dioda LED2 jest wyłączona, jeśli SW2 jest WYSOKA i odwrotnie. Jak działają pozostałe dwie?
Oto, co do tej pory zostało zrobione:
#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