MSP430的外中断和定时中断问题

楼主
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分频
1楼
只要屏蔽上定时器A设置中那三句的任何一句都可以正常使用。是不是定时器A对外中断有影响

电脑版 Page created in 0.1562 seconds width 3 queries.