专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

msp430 CCR0捕获/比较寄存器--比较功能中断定时

作者:佚名   来源:不详   点击数:  更新时间:2014年08月31日   【字体:

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

CCR0捕获/比较寄存器--比较功能中断定时
简述:本程序是利用了定时器A 模块中的CCR0 捕获/比较寄存器的值与定时器A 的值进行
比较。如果比较相等就产生CCR0 中断,进入Timer A0 中断服务程序进行中断处理。以P1.0
作为指示,反转速度= 32768/(2*1000) = 16.384 。
ACLK = TACLK = 32768Hz, MCLK = SMCLK = default DCO ~800kHz
本程序TA(Timer A)采用增计数模式。在增计数模式时,当TA 中的计数值与CCR0的值相
等时(或TA>CCR0 的值时),TA 被清零并且重新由0 开始计数。在此同时,CCR0 产生中断。
产生CCIFG0 标志置位,及TAIFG 定时器A 溢出标志置位。CCIFG0,TAIFG 在被中断服务程
序处理时是自动复位。如本例中执行__interrupt void Timer_A (void)时,CCIFG0已被清除标志
位。
例程:
***********************************************************************************/
//*********************************************************************
#include <msp430x14x.h>
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD; //停止看门狗定时器
  P3DIR |= BIT4; //设P3.4 为输出
  CCTL0 = CCIE; //CCR0开中断允许
  CCR0 = 10000-1; //向CCR0捕获/比较寄存器装入初值,用于比较
  TACTL = TASSEL_1 + MC_1; //选ACLK为定时器A 时钟源, 增计数模式
  _BIS_SR(LPM3_bits + GIE); //进入LPM3模式/ 开中断允许
}
// Timer A0中断服务程序
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
  P3OUT ^= BIT4; //反转 P3.4
}
//**********************************************************************
关闭窗口