捕获外部中断 后怎么一直在中断函数中循环?

2019-07-14 17:05发布

捕获外部中断 后怎么一直在中断函数中循环?
  1. #include <msp430x14x.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uint temp,temp1;
  5. long start, end, time ;

  6. void delay(void)
  7.    {
  8.      uint f=500;
  9.      while(f--);
  10.    }


  11. void delayms(int ms)
  12. {
  13.    while(ms--)
  14.    {
  15.      int i=0;
  16.      for(i=0;i<=1600;i++);
  17.    }
  18. }


  19. void init(void)
  20.    { uint i;
  21.     // P1DIR =0XFF;P1OUT =0XFF;
  22.      P2DIR =0XFF;P2OUT =0XF0;
  23.      P3DIR =0XFF;P3OUT =0XFF;
  24.      P4DIR =0XFF;P4OUT =0XFF;
  25.      P5DIR =0XFF;P5OUT =0XFF;
  26.      P6DIR =0XFF;P6OUT =0XFF;
  27.    
  28.    
  29.      
  30.      P1DIR &=~BIT5;//P1IE = BIT5;
  31.     // P1IES=BIT5; P1IFG =0X00;
  32.      P1DIR &=~BIT2 ;P1SEL =BIT2;
  33.      _EINT();
  34.      BCSCTL1 &=~XT2OFF;
  35.      BCSCTL2 |= SELM1+DIVM_3;               
  36.      TACTL=TASSEL_2+TACLR+MC_1 ; //timera_clk=Mclk=1MHz、连续计数模式、1分频
  37.     CCTL1=CM_3+SCS+CCIS_0+CAP+CCIE;      
  38.    
  39.      
  40.      
  41.     do
  42.      {
  43.        IFG1 &=~OFIFG;
  44.         for(i=0xFF;i>0;i--);
  45.      }
  46.     while ((IFG1 & OFIFG)!=0);

  47.      temp = temp1 = 0 ;
  48.      start = end = time =0 ;
  49.    }

  50. void main(void)
  51.    {
  52.      WDTCTL =WDTPW+WDTHOLD ;
  53.     init();
  54.      uint i=0,j=0;
  55.      
  56.      while(1)
  57.      {
  58.       delayms(5);
  59.          
  60.       CCTL1 |=CCIE;
  61.    
  62.    
  63.      }
  64.    }

  65. /********************Timer_A中断服务程序*************************/
  66. #pragma vector = TIMERA1_VECTOR
  67. __interrupt void Timer_A (void)
  68.    {
  69.     CCTL1 &=~CCIE;// TACTL |= MC_0;
  70.    
  71.      
  72.      P2OUT ^=0xff;
  73.      
  74.      
  75.    }
复制代码

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。