打印

呼吸灯的程序基于PWM的,为什么有错啊。。。。

[复制链接]
1576|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lyf19950402|  楼主 | 2015-6-17 15:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大神求教啊。。。
#include <msp430x14x.h>

// *************************************************************
// 延时函数,延时1us
// *************************************************************
void delay_1us(void)
  {
    unsigned int i;
    for(i=0;i<100;i++);
  }

// *************************************************************
// 延时函数,延时N*1us
// *************************************************************
void delay_nus(unsigned int n)
  {
    unsigned int i;
    for(i=0;i<n;i++)
    {
      delay_1us();
    }
  }

// *************************************************************
// 延时函数,延时1ms
// *************************************************************
void delay_1ms(void)
  {
    unsigned int i;
    for (i=0;i<1140;i++);
  }

// *************************************************************
// 延时函数,延时N*ms
// *************************************************************
void delay_nms(unsigned int n)
  {
    unsigned int i;
    for (i=0;i<n;i++)
    {
      delay_1ms();
    }
  }

// *************************************************************
// 主程序
// *************************************************************
void main(void)
{
  unsigned const PWMPeriod = 200;
  unsigned const PWMPeriod1= 300;
  unsigned int i;
  unsigned int j;
  WDTCTL = WDTPW + WDTHOLD;   // 关闭看门狗
  P1DIR |= 0x0C;              // 设置P1.2为输出
  P1SEL |= 0x0C; // 设置P1.2为TA0.1输出
  CCR0=500-1;
  CCTL1 = OUTMOD_7;           // 设置PWM 输出模式为:7 - PWM复位/置位模式,              
  CCR1 =PWMPeriod;           // 设置PWM 周期
  CCTL2 = OUTMOD_7;
  CCR2 = PWMPeriod1;// 即输出电平在TAR的值等于CCRx时复位,当TAR的值等于CCR0时置位。
  TACTL = TASSEL_2 + MC_1;    // 设置TIMERA的时钟源为SMCLK, 计数模式为up
// _BIS_SR(LPM0_bits + GIE);

  
  while(1)
  {
    //渐亮过程:不断设置CCR1的值,使翻转的时间变长,改变PWM的占空比
   
   for(i=0;i<PWMPeriod;i+=1)
    {
      CCR1=i;
      delay_nus(600);           //占空比变化的延时,调整延迟时间可改变呼吸灯变亮的速度
    }
    //渐暗过程:不断设置CCR1的值,使翻转的时间变短,改变PWM的占空比
   
   for(i=PWMPeriod;i>0;i-=1)
    {
      CCR1=i;
      delay_nus(50);           //占空比变化的延时,调整延迟时间可改变呼吸灯变暗的速度
    }
    delay_nms(70);
   
  
  for(j=0;j<PWMPeriod1;j+=1)
    {
      CCR2=j;
      delay_nus(600);           //占空比变化的延时,调整延迟时间可改变呼吸灯变亮的速度
    }
    //渐暗过程:不断设置CCR1的值,使翻转的时间变短,改变PWM的占空比
   
  for(j=PWMPeriod1;j>0;j-=1)
    {
      CCR2=j;
      delay_nus(50);           //占空比变化的延时,调整延迟时间可改变呼吸灯变暗的速度
    }
    delay_nms(70);
  }
  
}


  

相关帖子

沙发
dirtwillfly| | 2015-6-17 16:47 | 只看该作者
有啥错误提示或者现象吗?

使用特权

评论回复
板凳
lyf19950402|  楼主 | 2015-6-17 18:34 | 只看该作者
没有啊。。。。

使用特权

评论回复
地板
baimiaocun2015| | 2015-6-17 20:53 | 只看该作者
这个调节PWM的占空比的就可实现的。

使用特权

评论回复
5
lyf19950402|  楼主 | 2015-6-17 22:06 | 只看该作者
我这个调节的就是占空比啊,但是为毛一点反应都没有。。。。。

使用特权

评论回复
6
FireRiver9| | 2015-6-19 15:30 | 只看该作者
显示的什么错误呢

使用特权

评论回复
7
lyf19950402|  楼主 | 2015-6-19 18:38 | 只看该作者
灯只能停留在最初的占空比上

使用特权

评论回复
8
tongbu2015| | 2015-6-20 13:55 | 只看该作者
这个采用PWM脉冲控制,改变占空比就可以实现的。

使用特权

评论回复
9
lyf19950402|  楼主 | 2015-6-21 19:23 | 只看该作者
解决了,程序是对的

使用特权

评论回复
10
dirtwillfly| | 2015-6-21 20:17 | 只看该作者
lyf19950402 发表于 2015-6-21 19:23
解决了,程序是对的

解决了就好。是什么问题?

使用特权

评论回复
11
lyf19950402|  楼主 | 2015-6-22 10:39 | 只看该作者
IAR里芯片选错了。。。。。。:lol

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

9

帖子

0

粉丝