我正在TI MSP430微控制器上执行以下代码。基本上我期望它做的是定期切换两个LED(引脚1.0和引脚4.7)。不幸的是,只有引脚1.0上的LED被切换,另一个一直处于打开状态。有人能告诉我为什么会这样吗?
int main(void) {
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
// Set P1.0 and P4.7 as output pins
P1DIR |= BIT0;
P4DIR |= BIT7;
for(;;)
{
P4OUT |= BIT7;
__delay_cycles(2500000); // 1sec at 25MHz
P1OUT ^= BIT0;
P4OUT &= 0x0;
}
return 0;}
答案 0 :(得分:3)
因为Pin 4.7的序列基本上是这样说的:
1) Turn the led on
2) Wait
3) Turn the led off
由于它是在循环中完成的,我们可以重新排列它:
3) Turn the led off
1) Turn the led on
2) Wait
因此(3)和(1)之间没有延迟。所以领导关闭的时间可以忽略不计。