极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11568|回复: 0

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

[复制链接]
发表于 2012-7-18 09:22:05 | 显示全部楼层 |阅读模式
  1. #include<MSP430x24x.h>
  2. void main (void)
  3. {
  4.         WDTCTL= WDTPW + WDTHOLD;                       //设置看门狗控制寄存器,关看门狗
  5.         TACTL = TASSEL_2 + TACLR;                              // 设置定时器A控制寄存器,
  6.         // TASSEL2=0x1000,Timer A clock source select: 2 - SMCLK
  7.         // TACLR=0x0004,清除定时器A计数器
  8.         CCTL0 = CCIE;                                                     //设置捕获/比较控制寄存器,CCIE=0x0010,使能捕获比较中断
  9.         CCR0 =16384;                                                     //设置捕获/比较寄存器,初始值为16384,对于32768Hz的频率,相当于0.5s
  10.         P1DIR |=BIT0;                                                     //P1为输出
  11.         TACTL |= MC0;                                                    //设置定时器A控制寄存器,MC0=0x0010,使计数模式为增计数
  12.         _EINT();                                                               //使能中断,这是一个C编译器支持的内部过程。
  13.         while(1);                                                               //无限次while循环
  14. }
  15. #pragma vector=TIMERA0_VECTOR
  16. __interrupt void  Timer_A (void)                //定时器A的CC0中断处理程序
  17.                                                                  //TIMERA0_VECTOR=6*2,等于基地址0xFFE0+12=0xFFEC
  18. {
  19.     P1OUT ^= BIT0;                                   //将P1引脚取反,就是使发光二极管闪烁
  20. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-26 14:23 , Processed in 0.045799 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表