打印

MSP430F2001外部中断和定时中断的冲突

[复制链接]
1803|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
a273076066|  楼主 | 2013-4-2 15:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

#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分频

相关帖子

沙发
a273076066|  楼主 | 2013-4-2 15:10 | 只看该作者
只要屏蔽到其中一句程序就能正常运行,但是我还想用定时器A平常时间做为计数器用
CCTL0 = CCIE;                      // CCR0 interrupt enabled
CCR0 = 4095;                       //定时1S
TACTL = TASSEL_1 + MC_1+ID_3;      // ACLK, upmode,8分频

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:i  love modian

9

主题

93

帖子

2

粉丝