專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

msp430 CCR0捕獲/比較寄存器--比較功能中斷定時

作者:佚名   來源:不詳   點(diǎn)擊數(shù):  更新時間:2014年08月31日   【字體:

 /********************************************************************************

CCR0捕獲/比較寄存器--比較功能中斷定時
簡述:本程序是利用了定時器A 模塊中的CCR0 捕獲/比較寄存器的值與定時器A 的值進(jìn)行
比較。如果比較相等就產(chǎn)生CCR0 中斷,進(jìn)入Timer A0 中斷服務(wù)程序進(jìn)行中斷處理。以P1.0
作為指示,反轉(zhuǎn)速度= 32768/(2*1000) = 16.384 。
ACLK = TACLK = 32768Hz, MCLK = SMCLK = default DCO ~800kHz
本程序TA(Timer A)采用增計(jì)數(shù)模式。在增計(jì)數(shù)模式時,當(dāng)TA 中的計(jì)數(shù)值與CCR0的值相
等時(或TA>CCR0 的值時),TA 被清零并且重新由0 開始計(jì)數(shù)。在此同時,CCR0 產(chǎn)生中斷。
產(chǎn)生CCIFG0 標(biāo)志置位,及TAIFG 定時器A 溢出標(biāo)志置位。CCIFG0,TAIFG 在被中斷服務(wù)程
序處理時是自動復(fù)位。如本例中執(zhí)行__interrupt void Timer_A (void)時,CCIFG0已被清除標(biāo)志
位。
例程:
***********************************************************************************/
//*********************************************************************
#include <msp430x14x.h>
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD; //停止看門狗定時器
  P3DIR |= BIT4; //設(shè)P3.4 為輸出
  CCTL0 = CCIE; //CCR0開中斷允許
  CCR0 = 10000-1; //向CCR0捕獲/比較寄存器裝入初值,用于比較
  TACTL = TASSEL_1 + MC_1; //選ACLK為定時器A 時鐘源, 增計(jì)數(shù)模式
  _BIS_SR(LPM3_bits + GIE); //進(jìn)入LPM3模式/ 開中斷允許
}
// Timer A0中斷服務(wù)程序
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
  P3OUT ^= BIT4; //反轉(zhuǎn) P3.4
}
//**********************************************************************
關(guān)閉窗口