// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0 (void)
{
P10=~P10;P11=~P11;P12=~P12;P13=~P13;
//P1低4位取反
}
//***********************************************************
// Timer B0 interrupt service routine
#pragma vector=TIMERB0_VECTOR
__interrupt void Timer_B0 (void)
{
P14=~P14;P15=~P15;P16=~P16;P17=~P17;
//P1低4位取反
}
//***********************************************************************************
//主函数
//***********************************************************************************
main()
{
IO_init();
//IO初始化
WDTCTL
= WDTPW + WDTHOLD;
//禁止看门狗复位
//定时器A设置
CCTL0
= CCIE;
//设置捕获/比较控制寄存器中CCIE位为1,CCR0捕获/比较功能中断为允许。
CCR0 =
8192;
//实现8192x(1/4096)=2S秒的定时,捕获/比较控制寄存器CCR0初值为4096。
TACTL
= TASSEL_1+ID_3 + MC_1;
//时钟源选择为ACLK(32768HZ)、8分频、增计数模式(0-CCR0溢出),32768/8=4096
HZ.
//定时器B设置
TBCCTL0 = CCIE;
//设置捕获/比较控制寄存器中CCIE位为1,CCR0捕获/比较功能中断为允许。
TBCCR0
= 2048;
//2048x(1/4096)=0.5S秒的定时,捕获/比较控制寄存器CCR0初值为2048。
TBCTL
= TBSSEL_1+ID_3 + MC_1;
//时钟源选择为ACLK(32768HZ)、8分频、增计数模式(0-CCR0溢出),32768/8=4096
HZ.
_BIS_SR(LPM0_bits + GIE);
//进入低功耗模式LPM0和开中断
while(1);
//死循环
}