/******************************************************************
**
** File : TimerA.c | Timer Interrupt |
** Version : 1.0
** Description: TimerA Interrupt
** Author : LightWu
** Date : 2013-4-16
**
*******************************************************************/
#include "MSP430X24X.h"
int Count;
void main(void)
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD; //關(guān)狗
P4DIR = BIT0|BIT1|BIT2|BIT3; //設(shè)置為輸出
P4SEL = 0;
P1IE |= 0x08; // P1.3 interrupt enabled
P1IES |= 0x08; // P1.3 Hi/lo edge
P1IFG &= ~0x08; // P1.3 IFG cleared
//__bis_SR_register(LPM4_bits + GIE); // Enter LPM4 w/interrupt
CCTL0 = CCIE; // CCR0 interrupt enabled
CCR0 = 10;
TACTL = TASSEL_2 + MC_2; // SMCLK, contmode
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
while(1)
{
if( 10 < Count )
{
Count = 0;
P4OUT ^= 0x0F; //電平翻轉(zhuǎn)
}
}
}
// Port 1 interrupt service routine
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
P4OUT ^= 0x0F; //電平翻轉(zhuǎn)
P1IFG &= ~0x08; // P1.3 IFG cleared,注意清標(biāo)志位,否則會一直進(jìn)入中斷
}
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
//P4OUT ^= 0x0F; //電平翻轉(zhuǎn)
Count++;
if( 10 < Count )
{
__bic_SR_register_on_exit(LPM0_bits); // Exit LPM0
}
}