在线情况
楼主
  • 头像
  • 级别
    • 积分10
    • 经验108
    • 文章9
    • 注册2012-10-28
    MSP430的外中断和定时中断问题
    #include  <msp430F2001.h>
    typedef unsigned char uchar;
    typedef unsigned int  uint;
    uchar second,minute,hour,day,flagtime,flag,flag1; //秒、分、时变量
    void Clock(uchar aa,uchar bb,uchar cc,uchar dd); //设置定时时间(天,时,分,秒)
    /****************主函数****************/
    void main(void)
    {  
       
        WDTCTL = WDTPW + WDTHOLD;           //关闭看门狗
        P1DIR |= BIT5;
        P1OUT&= ~BIT5;
        P1IE|=BIT6;
        P1IFG=0x00;
       
        CCTL0 = CCIE;                      // CCR0 interrupt enabled
        CCR0 = 4095;                       //定时1S
        TACTL = TASSEL_1 + MC_1+ID_3;      // ACLK, upmode,8分频

        _EINT();
       
       while(1)
        {       
            _BIS_SR(LPM3_bits);
            if(flag==1)
              {
                P1OUT|= BIT5;
                P1IE&= ~BIT6;
                flag=0;
              }
            
        }
    }
    #pragma vector=PORT1_VECTOR    //采用IO口中断
    __interrupt void P1_ISR(void)
    {
        uint i;
        if(P1IFG&BIT6)
          {
            for(i=0;i<1000;i++){};
            flag=1;
          }
         P1IFG=0x00;
         LPM3_EXIT;
         return;
    }

    硬件:我现在做MSP430的外部震动。一振动开关一边接3.3V电源,一边接一个电阻到P1.6。P1.5外围控制一个一个LED,当作中断信号灯。

    软件:如果P1.6检测到上升沿脉冲后进入外部中断服务程序。在外部中断程序里给P1.5一个高电平,然后P1.5的灯会亮。但是我在住程序里面自从加了下面三句,发现能检测到触发,灯也是能亮,但是停止震动后他就灭了。
    我原本的意思是想检测到一次震动后,关闭外中断使能,然后定时器A开始计时,到一定时间再再次开启外中断。求解!!!!
    CCTL0 = CCIE;                      // CCR0 interrupt enabled
    CCR0 = 4095;                       //定时1S
    TACTL = TASSEL_1 + MC_1+ID_3;      // ACLK, upmode,8分频
    我需要力量
    在线情况
    2
    • 头像
    • 级别
      • 积分10
      • 经验108
      • 文章9
      • 注册2012-10-28
      只要屏蔽上定时器A设置中那三句的任何一句都可以正常使用。是不是定时器A对外中断有影响
      我需要力量
      Powered by LeadBBS 9.2 .
      Page created in 0.1875 seconds with 10 queries.