各位帮忙看看为什么进不去中断,谢谢

2019-03-24 15:46发布

P1.3一直在输入2.8V的脉冲,周期10MS   #include <msp430x14x.h> #define uint unsigned int
#define uchar unsigned char uchar BACKFLAG=0;
uint i,n,n1,n2=0; void Delay_ms(unsigned long nValue)
{
  unsigned long nCount;
  int i;
  unsigned long j;
  nCount=2667;
  for(i=nValue;i>0;i--)
  {
    for(j=nCount;j>0;j--);
  }
  return;
}
//***************************************
void Init_TimerA(void)
{  
  TACCTL2 = CM_1 + SCS + CCIS_0 + CAP + CCIE; // Rising edge + CCI0A (P1.3) + Capture Mode + Interrupt
  TACTL = TASSEL_2+ID_3+MC_2+TACLR;  // SMCLK + Continuous Mode+8分频 +清除TAR+允许定时器溢出中断
}
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A()//以下为参考处理程序,不使用的中断源应当删除
{
 switch (TAIV)//P1.3--DJ12,P1.2--DJ34,
 {
   case 2:
            { //捕获/比较1中断
                    n1++;
                    P3OUT=~BIT3;                               
                    break;
            }
 case 4:
            { //捕获/比较2中断
                    n2++;
                    P3OUT=~BIT3;
              break;
            }                  
       default:break;
 }      
} //**********************************************
main()

  unsigned int i;
  WDTCTL = WDTPW + WDTHOLD ;
  BCSCTL1 &= ~XT2OFF;         //打开XT2振荡器
  do
  {
     IFG1&=~OFIFG;         //清除振荡错误标志
     for(i=0xFF;i>0;i--);
  }
  while((IFG1&OFIFG)!=0); //如果标志为1,则继续循环等待
  BCSCTL2 |= SELM1+SELS;     //MCLK为8MHz,SMCLK为8MHz,    SELM1=SELM_2       
  P1DIR=0X03;
  P1SEL|=(BIT3+BIT2);    // 选择P1^3和P1^2作为外部计数脉冲的输入端 
  P2DIR=0XFF;
  P2OUT=0X80;
  P3DIR|=(BIT0+BIT1+BIT2+BIT3+BIT4);
  P3OUT=~BIT0;
  P4DIR=0X1F;//P4^1、P4^2、P4^3、P4^4作为PWM的输出端
  P4OUT=0X00;
  P5DIR=0X00;
  P6DIR=0X00;
  P6SEL=0XF0;
  Init_TimerA();
  _EINT();
  while(1)
  {
    P2OUT=0XE0;
    Delay_ms(5);
    P4OUT=0X08;
  }
}
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
chunyang
2019-03-24 22:36
< 注意中断使能位是否已经打开,包括要使用的中断和总中断使能。

一周热门 更多>

相关问题

    相关文章