1
私は現在、私は基本的For
とWhile
ループをコーディングでひどいように見えるいくつかの理由C.
でコード化されMSP430G2553、で働いている、と私はWhile
ループに時間がかかるようにする方法を見つけ出すことはできませんすべての反復後に完了します。Cコード:遅くなる各繰り返しの後にループしますか?
基本的に、起動時に100msでLEDが点滅しています。
私はボタンを押したまま、私はLEDを点滅させたいと思っています。
私が去るとき、LEDは遅く点滅する速度を保つべきです。
次に、2番目のボタンはLEDの点滅速度を100msに戻します。
今は、ボタンを押したときにLEDが点滅するのを遅くすることができますが、遅くなることはありません。正直なところ、私はこれを行う方法についてはわからないので、私はここにアカウントを作成して投稿した。
for(;;) //loop forever
{
if((P1IN & BIT3)==BIT3) //if button is not pressed
{
i = 0;
a = 4000; //At 10000, 4 cycles per second, or 250ms delay. 4000 cycles = 100ms or 10Hz delay.
P1OUT ^= BIT0 + BIT6; //two LEDs
while(i < a) //delays LED blinking until while-loop is complete.
{
i = i + 1;
}
}
else if((P1IN & BIT3)!=BIT3) //if button is pressed
{
i = 0;
a = 10000;
P1OUT ^= BIT0 + BIT6;
while(i < a) //delays LED blinking until while-loop is complete.
{
a = a + 2;
i = i + 1;
}
}
}
を遅らせる(
for
範囲外)「グローバル」を維持する必要があるだろう醜いfor-loopsのためにCPUの負荷が100%になりますが、今のところ私はこれらのfor-loopsを割り込みブロックに転送するのは明らかにひどいです。また、MSP430のクロックが長時間にわたって変化してしまったとしても、何か問題がありました。だから、私は適切なCPUコーディングに移る前に、これを実現するために必要なロジックをハッシュアウトしようとしています。 – Martian