切换 TI MSP430 的 LED
Toggle LEDs of a TI MSP430
我正在 TI MSP430 微控制器上执行以下代码。基本上我希望它做的是定期切换两个 LED(引脚 1.0 和引脚 4.7)。不幸的是只有 Pin 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;}
因为你的 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)之间没有延迟。所以led熄灭的时间可以忽略不计。
我正在 TI MSP430 微控制器上执行以下代码。基本上我希望它做的是定期切换两个 LED(引脚 1.0 和引脚 4.7)。不幸的是只有 Pin 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;}
因为你的 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)之间没有延迟。所以led熄灭的时间可以忽略不计。