7270|6

30

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

定时器,让流水灯以1S时间闪烁 [复制链接]


void main(void)
{
    WDTCTL = WDTPW + WDTHOLD;           //关闭看门狗

    P2DIR |= 0xFF;
     P2OUT=0x00;
    //P2配置为输出
   
     TA0CCR0 = 50000;                   //初值设置     
     TA0CTL =TASSEL_2 +MC_1;
     TA0CTL =TAIE;//TAIE:中断使能  
      _EINT();                            //打开全局中断
      LPM3;                               //进入低功耗模式                  
}为什么不行呢?

最新回复

本帖最后由 fqh5455588 于 2014-11-24 17:19 编辑 #include"in430.h" #include "msp430g2553.h" static unsigned char temp = 0xaa; unsigned int n=0; void main( void ) {   WDTCTL = WDTPW + WDTHOLD;    // 关闭看门狗   BCSCTL1=CALBC1_1MHZ;    DCOCTL=CALDCO_1MHZ;   P1DIR = 0xff;             //设定P1口为输出方式   P1OUT = 0xff;           //给P1口赋初始值    TA0CCTL0 = CCIE;     //打开中断 (Timer0_A3 Capture/Compare Control 0 )   CCR0 = 50000;      //设定计数变量    TA0CTL = TASSEL_2 + MC_1; //定时器选择时钟SMCLK,使用模式二连续计数方式      _EINT();       //开总中断   while(1)   {     LPM0;      }    //开启低功耗模式0,进入低功耗模式,等待中断唤醒     } #pragma vector = TIMER0_A0_VECTOR __interrupt void time1(void) {   P1OUT=temp;   n++;    if(n==20)   {     temp = ~temp;         //取反      P1OUT = temp;       //P1口赋值      n=n%20;   } }   详情 回复 发表于 2014-11-24 17:16
 
点赞 关注(1)
个人签名正在学习MSP430的5系列,希望大家多多指导

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
#include  
   int time=0;
void init_clk( )
{
    unsigned char i;
    WDTCTL = WDTPW + WDTHOLD;       //关闭看门狗
    BCSCTL1&=~XT2OFF;//打开XT振荡器
    BCSCTL2|=SELM_2+SELS;//MCLK 8M and SMCLK 8M  
    do
    {
      IFG1 &= ~OFIFG;//清除振荡错误标志
      for(i = 0; i < 0xff; i++)  _NOP();//延时等待
    }
    while ((IFG1 & OFIFG) != 0);//如果标志为1继续循环等待
    IFG1&=~OFIFG;
}

void main()
{   
        init_clk();//初始化系统时钟
        TACTL=TASSEL1+ID0+ID1+TACLR+TAIE;//计数时钟源为系统时钟,8分频,允许定时器溢出        中        断,清除计数器。
        P5DIR|=0x02;
        P5DIR|=0x04;
        P5DIR|=0x08;
        P4DIR|=0x04;
        P3DIR|=0x40;
        P3DIR|=0x80;
        TACTL|=MC0;//增计数模式
        TACCR0=700;//计数周期为1000
        _EINT();//开启总中断
        while(1)
        {
                if(time==100)
                {
                        P5OUT^=0x02;
                        time++;
                }
                if(time==200)
                {
                        P5OUT^=0x02;
                        P5OUT^=0x04;
                        time++;
                }
                if(time==300)
                {
                        P5OUT^=0x04;
                        P5OUT^=0x08;
                          time++;
                }
                if(time==400)
                {
                        P5OUT^=0x08;
                        P4OUT^=0x04;
                        time++;
                }
                if(time==500)
                {
                        P4OUT^=0x04;
                        P3OUT^=0x40;
                        time++;
                }
                if(time==600)
                {
                        P3OUT^=0x40;
                        P3OUT^=0x80;
                        time++;
                }
                if(time==700)
                {
                        P3OUT^=0x80;
                        time=0;
                }
   }

}
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
        switch(TAIV)
        {
                case 2:break;
                case 4:break;
                case 10:time++;break;
        }
}
这是我暑假学430用的程序,你看一下吧
 
 

回复

396

帖子

5

TA的资源

纯净的硅(中级)

板凳
 
什么为什么不行?灯没闪?,你用LPM3的话,DCOCLK是不运行的。

点评

不用LPM3的话[/backcolor]根本不行的  详情 回复 发表于 2015-1-28 15:06
 
个人签名一别四五年,变化万千。https://home.eeworld.com.cn/static/image/smiley/comcom/5.gif[/img]
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

4
 
你这是用哪个型号的啊。会不会是你的时钟源选择有问题

点评

是5438A,谢谢,现在解决了,是中断用错了, TA0CCTL0 = CCIE,这个才对的  详情 回复 发表于 2015-1-28 15:05
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

5
 
本帖最后由 fqh5455588 于 2014-11-24 17:19 编辑

#include"in430.h" #include "msp430g2553.h"
static unsigned char temp = 0xaa;
unsigned int n=0;
void main( void )
{   WDTCTL = WDTPW + WDTHOLD;    // 关闭看门狗  
BCSCTL1=CALBC1_1MHZ;   
DCOCTL=CALDCO_1MHZ;
  P1DIR = 0xff;             //设定P1口为输出方式  
P1OUT = 0xff;           //给P1口赋初始值   
TA0CCTL0 = CCIE;     //打开中断 (Timer0_A3 Capture/Compare Control 0 )  
CCR0 = 50000;      //设定计数变量   
TA0CTL = TASSEL_2 + MC_1; //定时器选择时钟SMCLK,使用模式二连续计数方式   
  _EINT();       //开总中断  
while(1)  
{     LPM0;      }    //开启低功耗模式0,进入低功耗模式,等待中断唤醒  
  }
#pragma vector = TIMER0_A0_VECTOR
__interrupt void time1(void)
{   P1OUT=temp;
  n++;   
if(n==20)  
{     temp = ~temp;         //取反   
  P1OUT = temp;       //P1口赋值     
n=n%20;  
}
}
 
 
 

回复

30

帖子

0

TA的资源

一粒金砂(中级)

6
 
fqh5455588 发表于 2014-11-24 17:16
你这是用哪个型号的啊。会不会是你的时钟源选择有问题



是5438A,谢谢,现在解决了,是中断用错了, TA0CCTL0 = CCIE,这个才对的
 
个人签名正在学习MSP430的5系列,希望大家多多指导
 
 

回复

30

帖子

0

TA的资源

一粒金砂(中级)

7
 
jqh_111 发表于 2014-11-8 16:14
什么为什么不行?灯没闪?,你用,DCOCLK是不运行的。


不用LPM3的话根本不行的
 
个人签名正在学习MSP430的5系列,希望大家多多指导
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表