/******************************************************************
定時器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;
}
}
//*********************************************************************