[求助] 请教有关P1.0中断的问题

baikaishui_1920   2013-11-22 16:55 楼主
请教!!为啥进不了中断啊??我用的P1.0作为外部中断
#include  
main()
{
  WDTCTL=WDTPW+WDTHOLD;
  
  P1IES= 0x01;
  P1IFG=0x00;
  P1IE = 0x01;
  
  _EINT();
  LPM1;
  //while(1);  
}

#pragma vector=PORT1_VECTOR
__interrupt void P1_ISR(void)
{
    P2DIR=0x01;
    P2OUT=0Xfe;  
    P1IFG=0x00;
}

回复评论 (4)

#include
main()
{
WDTCTL=WDTPW+WDTHOLD;
P1OUT =  0x01;          // P1.0加上拉电阻
P1REN |= 0x01;
P1IES |= 0x01;          //下降沿触发
P1IFG &= 0x01;      //清标志
P1IE |= 0x01;       //使能中断

_EINT();              //开全局中断
LPM1;                 //进入低功耗模式0
//while(1);
}

#pragma vector=PORT1_VECTOR
__interrupt void P1_ISR(void)
{
P2DIR=0x01;
P2OUT=0Xfe;
P1IFG &= 0x01;      //清标志
}
点赞  2013-11-22 17:50
推荐使用 |=、&=、^= 这样的复合运算符,像你这样直接赋值,会发生意想不到的问题。
还有推荐使用头文件的中#define BIT0 (0x0001)中的BIT0 ,如P1IE |= BIT0 ;//使能p1.0中断,很直观的看出结果
点赞  2013-11-22 17:55
还有写程序要养成良好的习惯,对于初学者,没写一句程序,顺便注释下很有必要。等过段时间再看的时候,很清楚自己写了什么, 为什么这样写。。。。
点赞  2013-11-22 18:00

回复 4楼qinkaiabc 的帖子

受教了!!谢谢版主~~
点赞  2013-11-25 21:57
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复