Timer overflow on MSP430
Not sure exactly which series MSP you're using so you'll have to look up the specifics. But the basic premise should apply across the board I think.

The following example is from the file msp430g2xx1_ta_03.c in the code snippets that can be downloaded from the TI Wiki:

#include &lt;msp430.h&gt;

int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P1DIR |= 0x01;                            // P1.0 output
  TACTL = TASSEL_2 + MC_2 + TAIE;           // SMCLK, contmode, interrupt

  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
}

// Timer_A3 Interrupt Vector (TAIV) handler
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
 switch( TAIV )
 {
   case  2: break;                          // CCR1 not used
   case  4: break;                          // CCR2 not used
   case 10: P1OUT ^= 0x01;                  // overflow
            break;
 }
}


The key is checking the TAIV register to see what caused the interrupt. Take a look at page 416 of the CC430 Family User's Guide:



Now the code example is looking for a value of 10 in the TAIV register and the User Guide indicates that 0x0E is the overflow. So, again, check your specific chip's documentation. But the TAIV register is what will tell you what the cause of the interrupt is.