# include & ltmsp430.h & gt
//定義LED管腳和初始狀態。
#定義LED_PIN位0
#定義LED_ON 1
#定義LED_OFF 0
volatile int led _ state = LED _ OFFLED的初始狀態是關閉的。
volatile int timer _ count = 0;//計時器計數器
無效總管(無效)
{
//禁用看門狗
WDTCTL = WDTPW | WDTHOLD
//將LED引腳配置為輸出模式。
p 1 dir | = LED _ PIN;
//配置定時器A0定時器。
ta 0 CTL = TASSEL _ 2+MC _ 1+ID _ 3;//選擇SMCLK作為時鐘源,遞增計數,除以8。
ta 0 CCR 0 = 12500-1;//設置計數器的上限,產生10秒的中斷。
//使能定時器A0中斷
ta 0 cctl 0 | = CCIE;
//全局中斷使能
_ _ enable _ interrupt();
//主循環空轉
while(1);
}
//定時器A0中斷服務程序
#pragma vector =定時器0_A0_VECTOR
_ _中斷無效定時器_A0_ISR(無效)
{
//累加計數器
timer _ count++;
if (led_state == LED_OFF) {
//如果LED熄滅,則點亮LED。
p 1 out | = LED _ PIN;
led _ state = LED _ ON
}否則{
//如果LED亮起,請關閉LED
p 1輸出和輸出。= ~ LED _ PIN
led _ state = LED _ OFF
}
if (timer_count == 6) {
//如果定時器計數器達到6,則關閉LED並重置計數器。
p 1輸出和輸出。= ~ LED _ PIN
led _ state = LED _ OFF
定時器計數= 0;
}
}
程序的總體思路是初始化主函數中的LED引腳和Timer A0 timer,啟用Timer A0中斷,啟用全局中斷。在timer A0中斷服務程序中,每次進入中斷都會累加定時器計數器,如果LED處於關閉狀態,則LED點亮;如果指示燈亮起,請關閉指示燈。當計時器達到6時,關閉LED並重置計數器。這樣,LED可以每隔10秒點亮壹次,6秒後熄滅,重復這個過程。