大连创客空间

 找回密码
 立即注册吧!

QQ登录

只需一步,快速开始

一键登录:

搜索
查看: 10010|回复: 74
收起左侧

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

  [复制链接]
发表于 2012-7-11 11:37:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多交流,硬件的世界向你敞开大门!

您需要 登录 才可以下载或查看,没有帐号?立即注册吧!

x
本帖最后由 xinzhengcheng53 于 2012-7-24 15:28 编辑

        学习msp430有一段时间了,刚开始自己是一点都不懂,什么寄存器之类的,压根就不知道是什么回事。虽然之前发了一个用定时器A实现LED灯闪烁程序,但是那只是一个非常简单的程序,对于初学者学习还行。我以前学过C51单片机,所以今天想通过MSP430f249实现LED流水灯闪烁。下面是我自己写的程序,同时也经过了我同学的帮助和修改。
#include<msp430x24x.h>
#define uchar unsigned char
#define uint unsigned int
uint table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//uint table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uint i=0,num=0;
void main(void)
{
  WDTCTL=WDTPW+WDTHOLD;
  P1DIR|=0Xff;
  CCTL0=CCIE;
  CCR0=1200;
  TACTL=TASSEL_2+MC_2;
  _EINT();
  for(;;);
}
#pragma vector=TIMERA0_VECTOR
__interrupt void TimerA0(void)
{
  i++;
  if(i==6)
  {
    i=0;
   P1OUT=table[num];
    // P1OUT^=table[num];
    num++;
  }
  if(num==8)
    num=0;
}
       我们刚开始想实现流水灯来回闪烁,上面的程序可以实现一位一位点亮,不能来回闪烁。在编写中我们开始没有将num,i 置0,只能用Uint型使程序工作。还有num=8,才能够置0,不是num=7置0,否则出现第8个灯不闪。后面加//的程序可以加到前一行,可以看到不同的效果。
后面我们修改了一次,采用了flag标志,可以实现流水灯来回闪烁。

#include<msp430x24x.h>
#define uchar unsigned char
#define uint unsigned int
uint table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uint i=0,num,flag;
void main(void)
{
  WDTCTL=WDTPW+WDTHOLD;
  P1DIR=0XFF;
  CCTL0=CCIE;
  CCR0=10;
  TACTL=TASSEL_2+MC_2;
  _EINT();
  for(;;);
}
#pragma vector=TIMERA0_VECTOR
__interrupt void TimerA0(void)
{
  if(flag==0)
  {
    i++;
    for(num=0;num<10;num++);
    P1OUT=table[ i ];
    if(i==7)
    {
      flag=1;   
    }
  }
  else
  {
    i--;
    for(num=0;num<10;num++);
    P1OUT=table[ i ];
    if(i==0)
    {
      flag=0;
    }
  }
}

回复

使用道具 举报

发表于 2012-7-11 13:49:16 | 显示全部楼层
这写的不是挺好的么
回复 支持 反对

使用道具 举报

发表于 2012-7-11 13:50:20 | 显示全部楼层
其实flag 声明成uchar 就可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-11 14:29:52 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-11 14:31:23 | 显示全部楼层
物物相联 发表于 2012-7-11 13:49
这写的不是挺好的么

谢谢支持。
回复 支持 反对

使用道具 举报

发表于 2012-7-11 14:38:08 | 显示全部楼层
人气较低
你在标题上要加注【大赛原创经验贴】才会吸引眼球呀
回复 支持 反对

使用道具 举报

发表于 2012-7-11 14:58:01 | 显示全部楼层
怎么不是流水灯效果呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-11 17:07:22 | 显示全部楼层

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

xiangxinli 发表于 2012-7-11 14:38
人气较低
你在标题上要加注【大赛原创经验贴】才会吸引眼球呀

哦,我不晓得添加。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-11 17:09:21 | 显示全部楼层
枫桥叶博 发表于 2012-7-11 14:58
怎么不是流水灯效果呢

后面那个程序可以实现的,来回闪烁,流水灯效果。
回复 支持 反对

使用道具 举报

发表于 2012-7-11 17:12:03 | 显示全部楼层
我仿真了一下,非常好。语句少,功能强大
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-11 17:15:54 | 显示全部楼层
xinzhengcheng53 发表于 2012-7-11 17:07
哦,我不晓得添加。

斑竹能够帮我顶下不,我花了一个上午,编写,仿真改进好的。
回复 支持 反对

使用道具 举报

发表于 2012-7-11 17:19:20 | 显示全部楼层
xinzhengcheng53 发表于 2012-7-11 17:15
斑竹能够帮我顶下不,我花了一个上午,编写,仿真改进好的。

已置顶
回复 支持 反对

使用道具 举报

发表于 2012-7-11 17:22:19 | 显示全部楼层
嘿嘿  不错哦
回复 支持 反对

使用道具 举报

发表于 2012-7-11 17:22:59 | 显示全部楼层
向你多学习学习
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-11 17:25:44 | 显示全部楼层
阿毛2012 发表于 2012-7-11 17:22
嘿嘿  不错哦

谢谢支持。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-11 17:26:07 | 显示全部楼层
阿毛2012 发表于 2012-7-11 17:22
向你多学习学习

互相学习,共同进步。
回复 支持 反对

使用道具 举报

发表于 2012-7-11 17:28:04 | 显示全部楼层
水贴狗
回复 支持 反对

使用道具 举报

发表于 2012-7-11 17:31:59 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2012-7-11 17:32:54 | 显示全部楼层
和楼主交个朋友
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-11 18:11:05 | 显示全部楼层

不懂就别乱说,有种自己发个难一点的程序的帖子,让大家见识见识。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册吧!

本版积分规则

单片机开发者1群:235808606;会员QQ 6群:254085994; 1群:12835691(满); 2群:121061287(满); 3群:237320668(满);4群:249652919(满);5群:253578883(满);大赛1群:187926790(满),2群:231577758(满),3群:249652919(满)。 TI杯4群:58129202(满)。
载入中

QQ|手机版|小黑屋|Archiver|大连创客空间 ( 辽ICP备15004617号-2  

GMT+8, 2017-3-1 00:51 , Processed in 0.244865 second(s), 29 queries .

地址:辽宁省大连市高新园区火炬路7号17层 QQ:2401085253

Copyright © 2010-2015 创客空间(大连)科技有限公司 All Rights Reserved.

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