msp430单片机c语言编程中断函数问题

模块化编程,多个c文件,其中一个c文件只写了一个外部中断函数,主函数只调用了这个中断函数的初始化函数,在执行主函数时,给一个外部中断标志,主函数会不会自动跳到中断函数里面

当你的中断标志位触发,主函数调用中断函数的条件是:
1.该中断标志位对应的中断使能位必须为使能状态,即开启该外部中断功能。
2..全局中断必须要打开,即_EINT();
3.外部中断的中断入口要写对。
以上条件满足后,不管你有多少个c文件,只要外部中断标志置位,主函数都会自动跳到中断函数里面。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-11-02
你把程序发给我看看吧
或者运行一下不就行啦

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

关于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的单片机中断分为可屏蔽中断与不可屏蔽中断这两类,而有的中断则会有几个不同的中断源,所以在编写中断函数的时候也要视具体情况而定,一般的写法首先在主函数中进行初始化之后打开总中断也就是这个函数_EINT();当然也可以这样_BIS_SR(LPM1_bits+GIE)这是低功耗模式下的写法,在主函数的...

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

如何在进行中断后仍保留中断函数里的值 msp430
一般是通过在MAIN函数外设置全局变量的方法 因为全局变量的作用域为整个程序进程,当然就包括中断函数 所以中断函数中对全局变量的操作会保留下来,即改变了变量值

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

msp430编程定时器B的中断
答案是没有方法,至少我没见过有什么方法,也没见过周边的人有什么方法。若有人知道方法谢谢分享。4.经常有人会问这个语句的MOV.B #LPM0,0(SP)的作用。假如你在进入中断函数之前,430是在LPM0下待机,若要求执行完中断函数之后进入LPM3待机,在中断函数里写MOV.B #LPM3,SR是无效的。因为在进入...

求一个用MSP430单片机编程的到10秒单片机进入休眠状态,到了20秒后...
CCTL0 |= CCIE; \/\/使能CCR0比较中断 uchar miao=20;while(1){ if(miao==10) LPM1;} } \/ 函数名称:TimerA_ISR 功 能:定时器A的中断服务函数 参 数:无 返回值 :无 \/ pragma vector=TIMERA0_VECTOR __interrupt void TimerA_ISR(void){ if(miao==0) LPM1_EXIT; ...

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

简单的msp430编程问题C语言
还有你这种编程时不可靠的,在IAR中无使用变量编译器会自动跳过,结尾也应该加while(1)正确如下 include<msp430x16x.h> unsigned long a;void main(void){ WDTCTL=WDTPW+WDTHOLD;a=200u*200u;a= a;while(1);} 还有问题到我空间留言吧 http:\/\/hi.baidu.com\/irobot2010\/ ...

相似回答