當前位置:編程學習大全網 - 編程語言 - 微機實驗可編程定時器

微機實驗可編程定時器

下面是MSP430微控制器的壹個程序實例,可以每隔10秒點亮LED,6秒後關閉,重復這個過程。其中使用了MSP430G2553芯片,使用了其定時器A0定時器模塊和中斷服務程序。

# 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秒後熄滅,重復這個過程。

  • 上一篇:臨沂大學的數控機床這個專業怎麽樣
  • 下一篇:5個關於興趣的名人事例
  • copyright 2024編程學習大全網