// Demo: Green LED blink from main code, red LED blink from WDT interrupt // Target: MSP430G2 Launchpad, with MSP430G2553 IC #include #include int main(void) { volatile uint16_t x; WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer P1DIR = 0b01000001; // Pin P1.6 (green LED) and P1.0 (red LED) are Outputs BCSCTL3 |= 32; // ACLK from internal VLOCLK // Resume WDT in Timer Mode, from ACLK, /8192, Reset count. WDTCTL = WDTPW | WDTTMSEL | WDTSSEL | WDTIS0 | WDTCNTCL; IE1 |= WDTIE; // Enable WDT interrupt __enable_interrupt(); // Regular code to blink the green LED for ( ; ; ) { for (x = 25000; x; --x) {} // Poor man's delay P1OUT ^= 0b01000000; // Toggle green LED } return 0; } #pragma vector=WDT_VECTOR __interrupt void WDT_ISR(void) { P1OUT ^= 0b00000001; // Toggle red LED }