首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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

/********************************************************************************
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
}
//**********************************************************************
返回列表