请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430F2011 我有以下ISR用于端口1 .....我遇到了交换机问题。 如果我进入ISR,但仅设置了BI既 可以使用交换机,也可以使用BIT4或BIT5,但如果我进入ISR,BIT4和BIT5都设置了,则交换机跳转到默认位置,而不会执行。 这让我想知道ISR中怎么可能有一个交换机,因为您必须有128个单独的案例语句,一个用于位0到7的每一迭代以及所有组合。 例如,在 以下情况下,P1矢量如何处理(PI1FG = 11万)?
#pragma vector=PORT1_VECTOR
__interrupt void inputs(void)
{
switch( P1IFG )
{
case 4:
//trigger 1
P1IE &= ~BIT2;
P1IFG &= ~BIT2;
ISR.trig1 = true;
break;
case 16:
//trigger 2
P1IE &= ~BIT4;
P1IFG &= ~BIT4;
ISR.trig2 = true;
break;
case 32:
//debug mode enable debounce
P1IE &= ~BIT5;
P1IES ^= BIT5;
P1IFG &= ~BIT5;
CCR0 = (TAR + DEBOUNCE); //~~50ms
CCTL0 &= ~CCIFG;
CCTL0 |= CCIE;
break;
default:
break;
}
LPM3_EXIT;
}