#include "MSP430X24X.h"
int Count;
void main(void)
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD; //关狗
P4DIR = BIT0|BIT1|BIT2|BIT3; //设置为输出
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; //电平翻转
}
}
}
// Port 1 interrupt service routine
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
P4OUT ^= 0x0F; //电平翻转
P1IFG &= ~0x08; // P1.3 IFG cleared,注意清标志位,否则会一直进入中断
}
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
//P4OUT ^= 0x0F; //电平翻转
Count++;
if( 10 < Count )
{
__bic_SR_register_on_exit(LPM0_bits); // Exit LPM0
}
}
|