前辈 前辈们 快来救救我吧 都一周多了

2019-03-24 14:45发布

小弟 我卡住了
好几天了 
希望前辈们指教啊
我这个程序是产生相位互差90度 
出来的波形是 一样的 怎么回事啊
#include <msp430x14x.h>
unsigned int flag1=0,flag2=0,num=0; 全局变量
void Init_Clock(void)      
{
   int i=0;
   BCSCTL1 &= ~XT2OFF;                       // XT2on
  do
  {
  IFG1 &= ~OFIFG;                           // Clear OSCFault flag
  for (i = 0xFF; i > 0; i--);               // Time for flag to set
  }
  while ((IFG1 & OFIFG));                   // OSCFault flag still set?
  BCSCTL2 |= SELM_2 + SELS;                 // MCLK = SMCLK = XT2 (safe)
  // _EINT(); //打开全局中断控制,若不需要打开,可以屏蔽本句
}
void main(void)
{
   WDTCTL = WDTPW + WDTHOLD;
   Init_Clock();
   //定时器B的初始化
   P4DIR |= BIT1+BIT2; // P4.1 - P4.2output
   P4SEL |= BIT1+BIT2; // P4.1 - P4.2 TBx options
   P2DIR |= BIT6+BIT7; //
   TBCTL =TBSSEL_2+TBCLR;   //SMCLK
   TBCCR0 = 19999-1;  20ms
   TBCTL |=MC_1+ID_3; 增加模式 1/8分频
   //定时器A初始化
   TACTL=TASSEL_2+TACLR;//SMCLK
   TACCTL0=CCIE;//CCR0中断允许
   TACCR0=5000-1; 5ms
   TACTL |= MC_1+ID_3+TAIE; 增加模式 1/8分频 开中断
   _EINT();    开中断
   while(1)
  {
   if(flag1==1)
    {
     TBCCR0 = 19999-1;
     TBCCTL1 = OUTMOD_7; // CCR1 reset/set  
     TBCCR1 = 9999; // CCR1 PWM duty cycle 占空比为50%
    // TBCCTL1 = CCIE; 
     flag1=0;
    }
   if(flag2==1)
    {
     TBCCR0 = 19999-1;
     TBCCTL2 = OUTMOD_7;
     TBCCR2 = 9999;    占空比为50%
     //TBCCTL2 = CCIE; 
     flag2=0;
    }
  }
} #pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A(void)         定时器A 中断
   {  
   
     num++;
 switch(TAIV)
 {
   case 2:break;
   case 4:break;
   case 10:
      switch(num)
      {      case 0:break;
             case 1:flag1=1;   num=1,置位flag1
                    P2OUT&=~BIT6;      p2.6灯亮
                    break;
             case 2:flag2=1;               置位flag2
                    P2OUT&=~BIT7;     p2.7灯亮
                    TACTL&=~TAIE;     关定时器A中断
                    TACTL=MC_0;       定时器A 停止模式                      num=0;                     break;
            } 
  }}   [ 本帖最后由 t_shaojun126 于 2012-3-21 10:20 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
问路者
2019-03-26 04:27
晕,CCR1,CCR2是触发比较中断的比较值,你设置一个大点一个小点不就形成相位差了吗,这样做都不用中断,很简单的几条配置指令就完成任务了!再看看资料吧,其实很简单的!

一周热门 更多>

相关问题

    相关文章