新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > msp430定時(shí)器A中斷實(shí)例

msp430定時(shí)器A中斷實(shí)例

作者: 時(shí)間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
//例程描述:利用定時(shí)器定時(shí)功能,實(shí)現(xiàn)P1.0方波輸出。

#include <msp430x14x.h>

本文引用地址:http://butianyuan.cn/article/201611/316559.htm

{

WDTCTL = WDTPW + WDTHOLD; //停止看門狗WDT,不使用內(nèi)部看門狗定時(shí)器。

P1DIR |= 0x01; //設(shè)置P1.0口方向?yàn)檩敵觥?/p>

CCTL0 = CCIE; //設(shè)置捕獲/比較控制寄存器中CCIE位為1,CCR0捕獲/比較功能中斷為允許。

CCR0 = 50000;//捕獲/比較控制寄存器CCR0初值為5000。

TACTL = TASSEL_2 + MC_2; //設(shè)置定時(shí)器A控制寄存器TACTL,使時(shí)鐘源選擇為SMCLK輔助時(shí)鐘。

_BIS_SR(LPM0_bits + GIE); //進(jìn)入低功耗模式LPM0和開中斷

}

//定時(shí)器A 中斷服務(wù)程序區(qū)

#pragma vector=TIMERA0_VECTOR

__interrupt void Timer_A (void)

{

P1OUT ^= 0x01; //P1.0取反輸出

CCR0 += 50000; //重新載入CCR0捕獲/比較數(shù)據(jù)寄存器數(shù)據(jù)

}

//例程描述:利用定時(shí)器定時(shí)功能,實(shí)現(xiàn)P1.0方波輸出。

// 需要注意的是定時(shí)器中斷程序,采用向量查詢方式。

#include

void main(void)

{

WDTCTL = WDTPW + WDTHOLD; // 停止看門狗WDT

P1DIR |= 0x01; // 設(shè)置P1.0口方向?yàn)檩敵觥?/p>

TACTL = TASSEL_2 + MC_2 + TAIE; // 時(shí)鐘源選擇為SMCLK,選擇計(jì)數(shù)模式,定時(shí)器中斷開

_BIS_SR(LPM0_bits + GIE); //進(jìn)入低功耗模式LPM0和開中斷

}

// Timer_A3 中斷向量(TAIV)處理

#pragma vector=TIMERA1_VECTOR

__interrupt void Timer_A(void)

{

switch( TAIV )

{

case 2: break; //CCR1不使用

case 4: break; //CCR2不使用

case 10: P1OUT ^= 0x01; //溢出

break;

}

}



評論


技術(shù)專區(qū)

關(guān)閉