极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10720|回复: 0

【大赛原创经验贴】用定时器A实现LED流水灯程序

[复制链接]
发表于 2012-7-18 09:23:00 | 显示全部楼层 |阅读模式
学习msp430有一段时间了,刚开始自己是一点都不懂,什么寄存器之类的,压根就不知道是什么回事。虽然之前发了一个用定时器A实现LED灯闪烁程序,但是那只是一个非常简单的程序,对于初学者学习还行。我以前学过C51单片机,所以今天想通过MSP430f249实现LED流水灯闪烁。下面是我自己写的程序,同时也经过了我同学的帮助和修改。
  1. #include<msp430x24x.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uint table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  5. //uint table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  6. uint i=0,num=0;
  7. void main(void)
  8. {
  9.   WDTCTL=WDTPW+WDTHOLD;
  10.   P1DIR|=0Xff;
  11.   CCTL0=CCIE;
  12.   CCR0=1200;
  13.   TACTL=TASSEL_2+MC_2;
  14.   _EINT();
  15.   for(;;);
  16. }
  17. #pragma vector=TIMERA0_VECTOR
  18. __interrupt void TimerA0(void)
  19. {
  20.   i++;
  21.   if(i==6)
  22.   {
  23.     i=0;
  24.    P1OUT=table[num];
  25.     // P1OUT^=table[num];
  26.     num++;
  27.   }
  28.   if(num==8)
  29.     num=0;
  30. }
  31.        我们刚开始想实现流水灯来回闪烁,上面的程序可以实现一位一位点亮,不能来回闪烁。在编写中我们开始没有将num,i 置0,只能用Uint型使程序工作。还有num=8,才能够置0,不是num=7置0,否则出现第8个灯不闪。后面加//的程序可以加到前一行,可以看到不同的效果。
  32. 后面我们修改了一次,采用了flag标志,可以实现流水灯来回闪烁。
  33. #include<msp430x24x.h>
  34. #define uchar unsigned char
  35. #define uint unsigned int
  36. uint table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  37. uint i=0,num,flag;
  38. void main(void)
  39. {
  40.   WDTCTL=WDTPW+WDTHOLD;
  41.   P1DIR=0XFF;
  42.   CCTL0=CCIE;
  43.   CCR0=10;
  44.   TACTL=TASSEL_2+MC_2;
  45.   _EINT();
  46.   for(;;);
  47. }
  48. #pragma vector=TIMERA0_VECTOR
  49. __interrupt void TimerA0(void)
  50. {
  51.   if(flag==0)
  52.   {
  53.     i++;
  54.     for(num=0;num<10;num++);
  55.     P1OUT=table[ i ];
  56.     if(i==7)
  57.     {
  58.       flag=1;   
  59.     }
  60.   }
  61.   else
  62.   {
  63.     i--;
  64.     for(num=0;num<10;num++);
  65.     P1OUT=table[ i ];
  66.     if(i==0)
  67.     {
  68.       flag=0;
  69.     }
  70.   }
  71. }

复制代码
回复

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 09:07 , Processed in 0.039252 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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