您好!
我选择 MSP430G2553 LaunchPad 来开发我的项目。
P2.3被分配为输出。 通过编程、我分配的 P2.3始终为高电平(3.3V)。
但 P2.3在中断时被下拉。 我找不到 有关代码的任何错误。
如下所 示的编程代码(使用 IAR 嵌入式工作平台):
定义周期200
#define NaturalF 118800
int flag_IE=1;
int 计数=2;
空 delayus (int us)
{
int i;
for (i=0;<us;i++))
{
_DELAY_CYCLES (1);
}
}
void main (void)
{
WDTCTL = WDTPW+WDTHOLD;
DCOCTL|=DCO1+DCO0;
BCSCTL1|=RSEL3;
CACTL1 =CAON+ CAREF_0+CAIE + CAIES;
CACTL2 = P2CA1 + P2CA0 + CAF;
P1DIR |= BIT0+BIT1+BIT4+BIT5+BIT6+BIT7;
P1SEL2=0;
P1SEL = 0;
P1REN=0;
P2DIR |= BIT5+BIT1 + BIT2 + BIT3 + BIT4 + BIC7;
P2SEL = 0;
P2SEL2=0;
P2REN=0;
P1OUT&=~BIT4+BIT5+BIT6+BIT7;
P2OUT&=~BIT2+BIT4;
P2OUT|=BIT5+BIT1 + BIT3;
_enable_interrupt ();
}
#pragma vector=COMPARATORA_vector
_interrupt void comp (void)
{
//P1IE=0;
CACTL1 &=~ CAIE;
P2OUT|=BIT5+BIT3;
if (flag_IE=1)
{
P1OUT&=~BIT5+BIT6;
P2OUT&=~BIT1 + BIT2;
P1OUT|=BIT4+BIT7;
P2OUT|=BIT5+BIT4+BIT3;
delayus (26);//9.947us
//P2OUT|=BIT3+BIT7;
P2OUT&=~BIT1;
P2OUT|=BIT5+BIT2+BIT3;
P1OUT&=~BIT3+BIT4+BIT5+BIT6+BIT7;
delayus (22);
// P2OUT|=BIT3+BIT7;
P1OUT&=~BIT4+BIT7;
P1OUT|=BIT5+BIT6;
P2OUT&=~BIT1 + BIT2;
P2OUT|=BIT5+BIT3;
delayus (26岁);
//P2OUT|=BIT3+BIT7;
P1OUT&=~BIT3+BIT4+BIT5+BIT6+BIT7;
P2OUT|=BIT5+BIT1 + BIT3;
P2OUT&=~BIT2+BIT4;
FLAG_IE=0;
CACTL1 &=~ CAIES;
}
其他
{
P1OUT&=~BIT4+BIT7;
P1OUT|=BIT5+BIT6;
P2OUT&=~BIT1 + BIT2;
P2OUT|=BIT5+BIT3+BIT4;
delayus (26岁);
P2OUT&=~BIT1;
P2OUT|=BIT5+BIT2+BIT3+BIT4;
P1OUT&=~BIT3+BIT4+BIT5+BIT6+BIT7;
delayus (22);
P1OUT&=~BIT5+BIT6;
P2OUT&=~BIT1 + BIT2;
P1OUT|=BIT4+BIT7;
P2OUT|=BIT5+BIT3+BIT4;
delayus (26岁);
P1OUT&=~BIT3+BIT4+BIT5+BIT6+BIT7;
P2OUT|=BIT5+BIT3+BIT1 +BIT4;
P2OUT&=~BIT2+BIT4;
FLAG_IE=1;
CACTL1 |= CAIES;
// P1IES|=BIT0;
}
CACTL1|= CAIE;
CACTL1 &=~ CAIFG;
}
P1.0和 P1.1之间的输入信号显示为黄色线。
P2.3的输出信号 显示为蓝色线
您还可以发现、P2.3的信号在中断时被下拉了两次。 
如果可以让我对代码有一些了解吗?

