MSP430单片机无法进入外部中断!紧急求助!

#include"MSP430x14x.h"
void delay(void);
void main(){
P1DIR &=~BIT0;
P1IE |= BIT0;
P1IES &=~ BIT0; //将中断设置为上升中断
P2DIR = 0xff; //P2端口设置为输出
P2OUT = 0xff; //初始状态,全灭
P3DIR = 0xff;
P3OUT = 0Xff;
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
_EINT(); //中断使能
while(1){

P2OUT&=~BIT6;
unsigned int i;
i=4000;
do{
i--;
delay();
}
while(i!=0);
}

}
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR(void)
{
P2OUT|=BIT6; //LED灯进行指示
if(P1IFG&BIT0){

P1IFG&=~0XFF;
unsigned int i;
i=4000; // 延时8s
do{
i--;
delay();
}
while(i!=0);
}
}
//延时程序,延时十毫秒
void delay(){
unsigned int a ;
a= 4000;
do(a--);
while(a!=0);
}

用P1.0作为中断输入源,P2.6作为LED指示,如果进入中断,P2.6应该灭掉。。
但是在实验过程中,P1.0无论怎么变,P2.6的LED灯始终亮着。。
已经换过多个板子都是一样的结果。。应该是代码问题!!!
求助

不知道你能不能仿真,要是能仿真其实很简单就解决了啊。(我用的不是149,不是很确定是不是一样的)
放个断点在进中断第一句话,如果能进,说明初始化没问题,如果不能进,说明初始化有问题(大概看了下你程序,初始化加一句P1IFG &= ~BIT0;吧,也不一定是这个问题)。
上一步没问题了,再放个断点在标志位判断那个括弧里,就是if(P1IFG & BIT0)这句后边。如果进不了,那就是这里的问题,我一般是这样写的(芯片不一样哦):
//*****************************************************************************
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_RST(void)
{
__delay_cycles(2000);
switch(__even_in_range(P1IV, 16))
{
case 0: break;
case 2:// P1.0 IFG
{
…………刚删除掉的
}
break;
…………刚删除掉的
case 12: break; // P1.5 IFG
case 14: break; // P1.6 IFG
case 16: break; // P1.7 IFG
default: break;
}
P1IFG = 0x00;
}

另外while(1)里边那个延时还是去掉吧,你这样问题很大,按键按快了的话一直都执行不到P2OUT&=~BIT6;吧,执行到的话灯也亮了8至16秒的任一时间了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-01
在线仿真看一下吧。
中断里设断点,看看有没有进中断。
同时,看反汇编,看看delay函数有没有给优化掉。
IAR优化级别设成high,你这样的delay函数常会给优化掉,便会出现看不到灯灭的现象。本回答被网友采纳

MSP430单片机无法进入外部中断!紧急求助!
放个断点在进中断第一句话,如果能进,说明初始化没问题,如果不能进,说明初始化有问题(大概看了下你程序,初始化加一句P1IFG &= ~BIT0;吧,也不一定是这个问题)。上一步没问题了,再放个断点在标志位判断那个括弧里,就是if(P1IFG & BIT0)这句后边。如果进不了,那就是这里的问题,我一...

用IAR 编译msp430 单片机,中断一直无法通过怎么回事
并且对于芯片msp430g2553来说,io430.h中包含io430g2553.h文件

MSP430单片机中断嵌套,如何跳出中断?
MSP430单片机中断嵌套跳出中断的方法:如果是要求中断A->中断B这样的序列才会从中断B直接返回主程序的话,那必须要在中断A那里做个标志位表明发生了中断A,由中断B判断。中断B执行完,修改堆栈指针,指向中断A的堆栈地址(压栈后的),直接指令退出中断即可。但要注意,若在中断A中开了总中断,则可以响...

关于msp430中断的基础问题
1)随时:即中断发生的时刻。这个是主函数无法预料到的。2)别的函数:即中断处理函数。这个函数也是用户写的,但是不会被用户直接调用,而是由CPU自动跳转。这就是中断和子函数调用的区别。3)中断处理函数执行完成之后,接着原来被打断的那个地方继续执行。有点像“从哪里跌倒就从哪里爬起来”。上面的...

单片机是MSP430,用低频的外部信号触发TA捕获中断,读取捕获寄存器CCR1...
去官网找找例程,地址是 http:\/\/focus.ti.com\/mcu\/docs\/mcuprodcodeexamples.tsp?sectionId=96&tabId=1468 要是你用的是msp430f149\/169的话在http:\/\/www.ti.com\/lit\/zip\/slac015下的fet140_ta_22.c就是一个捕获的例程,参考一下就行。希望我的回答有帮助 参考资料:http:\/\/www.ti.com\/lit...

msp430有点困惑啊,跪求高手指导,,,求救求救
MSP430单片机最大的特点就是低功耗,所以可以应用到一些消费电子上面,应用电池解决方案的场合。我个人认为,430单片机相比51单片机,内部的资源比较强大,不管是时钟系统、中断资源、IO口资源、定时器、AD、UART还有其他的等,都集成到单片机内部了,这样使用起来就不需要外接硬件电路。用户使用方便了,随之...

关于msp430单片机中断向量问题 (下面是msp430x14x.h头文件中的内容...
在头文件注释 里面有写 Interrupt Vectors (offset from 0xFFE0) 中断向量偏移量(基地址为0xFFE0)定义 #define PORT2_VECTOR (1*2u)的意思就是 PORT2的中断向量地址为 基地址0xFFE0 偏移(offset) 1*2u 0xFFE0 + 1*2u 就是 0xFFE2 ...

单片机或msp430没有清除中断标志会咋样 看到很多程序里都是要清除中断...
中断的优先级比较高,系统或者硬件都是优先响应处理中断的;而中断标志则是是否有中断产生的标识,所以没有清除中断标志,系统或者硬件会认为有中断产生,而去响应,这样就可能导致出错了。中断标识有些是会自动清除的,比如MSP430中的通信时发送,接收中断标志,而有些是必须手动清除的。

急!急!急!MSP430单片机缺点有哪些??
2. 熔丝位烧录只有1次,就是加密以后只能靠BSL对FlashMemory进行刷新,当然设计了BootLoad除外,这个缺陷却又是430的独特魅力(加密性超强)。3. I\/O无保护,过压过流会立即击穿,但是I\/O的阻抗和灵敏度很高。4. 片内无EEPROM,对于一些特殊用途,Info区的操作比EEPROM麻烦。

怎么检测MSP430单片机的好坏
检测方法:1、视觉判断机械损坏;2、外用表测量电源及各个端口的对地电阻,具体阻值与好的芯片对比;3、烧录一个使用相关IO口的程序,在线测试,最好是做一块每个IO口都连接LED指示灯,且带有锁紧插座的检测板,程序轮回点亮LED,检查是否能运行,是否所有IO口都正常。

相似回答