我在問這是因爲下面的代碼是我用來使2個兩個LED完全交替閃爍。但它爲什麼這個工作並沒有意義。這個帶有2個xor的環路有2個狀態,一個是pin1(紅色點亮),另一個是引腳6和pin1都處於活動狀態(紅色和綠色點亮)。但是燈光閃爍,就像它們在彼此之間完美地交替開關一樣。從for循環結束回到msp430的開始需要多少時間?
#include <msp430g2553.h>
// counter as a global variable
unsigned int i = 0;
void main(void)
{
// stop the watchdog timer
WDTCTL = WDTPW + WDTHOLD;
// set the direction register for LED1 and LED2
P1DIR |= 0x41;
// initialize LED1 and LED2 to off
P1OUT &= 0xBE;
//empty for loop is an infinite loop
for (;;)
{
P1OUT ^= 0x01;
// create a delay between toggles
for(i=0; i< 20000; i++)
{
// empty statement, do nothing
}
P1OUT ^= 0x40;
}
}
主循環的延遲是否有可能導致這種錯覺?
不能從您提供什麼來決定。 –
爲了更好地理解發生了什麼,在無限循環結束之前添加延遲循環的副本。 –
如果您希望他人閱讀您的代碼,如果格式化爲可讀性,則可能更有禮貌,更吸引觀衆。空格和縮進也有助於你理解。爲您重新格式化。 – Clifford