#include #include #include #define interrupt(x) void __attribute__((interrupt (x))) uint8_t recvbyte, enable; int8_t cmd; void delay_ms(uint16_t ms) { while (ms--) __delay_cycles(1000); } /*void send(char data) { UCA0TXBUF = data; while (!(IFG2 & UCA0TXIFG)) ; }*/ void set(bool on) { P2OUT |= BIT0 | (on ? BIT1 : BIT2); P1OUT |= BIT0; delay_ms(200); P2OUT = 0; P1OUT &= ~BIT0; delay_ms(1000); } int main() { WDTCTL = WDTPW | WDTHOLD; BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; P1REN = BIT3; P1DIR = BIT0; P1OUT = BIT3; //UCA0CTL1 |= UCSSEL_2; // SMCLK clock // http://mspgcc.sourceforge.net/cgi-bin/msp-uart.pl?clock=1000000&baud=9600&submit=calculate //UCA0BR0 = 0x68; //UCA0BR1 = 0x00; //UCA0MCTL = 0x04; // http://mspgcc.sourceforge.net/cgi-bin/msp-uart.pl?clock=8000000&baud=115200&submit=calculate //UCA0BR0 = 0x45; //UCA0BR1 = 0x00; //UCA0MCTL = 0xAA; // UART //P1SEL = 0x02 | 0x04; //P1SEL2 = 0x02 | 0x04; // RXD on P1.1, TXD on P1.2 //P1OUT = 0x00; //P1DIR |= BIT0 | BIT6; // Everything as GPIO P2SEL &= ~(BIT6 | BIT7); P2OUT = 0x00; P2DIR = 0xFF; //UCA0CTL1 &= ~UCSWRST; // Start UART //IE2 |= UCA0RXIE; __enable_interrupt(); P1OUT |= BIT0; delay_ms(200); P1OUT &= ~BIT0; delay_ms(200); cmd = -1; while (true) { while (cmd == -1) delay_ms(100); if (cmd == 0) set(false); else if (cmd == 1) set(true); cmd = -1; } while (true) { P2OUT |= BIT0 | BIT1; P1OUT |= BIT0; delay_ms(200); P2OUT = 0; P1OUT &= ~BIT0; delay_ms(1000); while (P1IN & BIT3) ; } return 0; } /*interrupt(USCIAB0RX_VECTOR) uart_rx_isr() { recvbyte = UCA0RXBUF; if (!enable) { if (recvbyte == 0x81) { enable = true; __bic_status_register_on_exit(LPM3_bits); } return; } if (recvbyte == 0x82) enable = false; }*/