/******************************************************************
定时器A自动溢出
简述:利用Timer_A 直接计数产生溢出,然后中断处理。
ACLK = TACLK = 32768Hz, MCLK = SMCLK = default DCO ~800kHz
例程:*/
//*****************************************************************
#include <msp430x14x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //停止看门狗定时器
P3DIR |= 0x20; // 设P3.4 为输出
TACTL = TASSEL_1 + MC_2 + TAIE + ID_1; // 辅助时钟ACLK, 定时器A 连续计数模式,且开中断功能,8分频
CCR0 = 1000-1;
_BIS_SR(LPM3_bits + GIE); //进入LPM3 低功耗模式和开总中断允许
for(;;);
}
// Timer_A3中断向量 (TAIV)处理程序
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch( TAIV ) //应用switch语句来处理多中断源的向量
{ //向量列表通过case 语句来分多中断源的入口
case 2: break; // CCR1比较/捕获寄存器的中断入口,
//本例子未用到。
case 4: break; // CCR2比较/捕获寄存器的中断入口,]
//本例子未用到。
case 10: P3OUT ^= 0x20; //定时器A在计满16位时将产生计数溢出中断
//进入中断,向量值为10。此中断处理入口
break;
}
}
//*********************************************************************