Randy 发表于 2012-7-18 09:22:05

【大赛原创经验贴】用定时器A的中断实现LED灯闪烁

#include<MSP430x24x.h>
void main (void)
{
      WDTCTL= WDTPW + WDTHOLD;                     //设置看门狗控制寄存器,关看门狗
      TACTL = TASSEL_2 + TACLR;                              // 设置定时器A控制寄存器,
      // TASSEL2=0x1000,Timer A clock source select: 2 - SMCLK
      // TACLR=0x0004,清除定时器A计数器
      CCTL0 = CCIE;                                                   //设置捕获/比较控制寄存器,CCIE=0x0010,使能捕获比较中断
      CCR0 =16384;                                                   //设置捕获/比较寄存器,初始值为16384,对于32768Hz的频率,相当于0.5s
      P1DIR |=BIT0;                                                   //P1为输出
      TACTL |= MC0;                                                    //设置定时器A控制寄存器,MC0=0x0010,使计数模式为增计数
      _EINT();                                                               //使能中断,这是一个C编译器支持的内部过程。
      while(1);                                                               //无限次while循环
}
#pragma vector=TIMERA0_VECTOR
__interrupt voidTimer_A (void)                //定时器A的CC0中断处理程序
                                                               //TIMERA0_VECTOR=6*2,等于基地址0xFFE0+12=0xFFEC
{
    P1OUT ^= BIT0;                                 //将P1引脚取反,就是使发光二极管闪烁
}
页: [1]
查看完整版本: 【大赛原创经验贴】用定时器A的中断实现LED灯闪烁