ソース・コードの解説
今回は、前回公開したソース・コードのうち、 新たに変更があった部分に解説を加えていきます。
各フェーズでの処理の解説
各フェーズとも、大変似た内容になっていますので、 ここでは、phase_2について解説します。
//==============================================================
// PHASE-2 : LED2を増光、LED1を減光する
// LED1点灯からLED2を増光、LED1を減光していく
//==============================================================
void phase_2(void) {
byte i; // 局所ループ・カウンタ
duty_1 = 100; // LED1を点灯
duty_2 = 0; // LED2を消灯
duty_3 = 0; // LED3を消灯
duty_4 = 0; // LED4を消灯
// LED2増光、LED1減光ループ
for (i = 0; i < 100; i++) {
pwm_cycle(); // PWM出力処理
duty_2++; // LED2を1レベル増光
duty_1--; // LED1を1レベル減光
}
}
このフェーズでは、 LED1を100%から0%まで、LED2を0%から100%まで変化させています。 初期設定が終わったら、 PWM出力処理を行いながら、デューティー比を変化させます。
その他のフェーズでも対象のLEDは異なりますが、 同様の処理を行っていますので、確認してみてください。
メイン関数の解説//==============================================================
// メイン関数
//==============================================================
void main(void) {
EnableInterrupts; /* enable interrupts */
/* include your code here */
initialize(); // 初期設定
phase_1(); // LED1を増光する
for(;;) {
phase_2(); // LED2を増光、LED1を減光する
phase_3(); // LED3を増光、LED2を減光する
phase_4(); // LED4を増光、LED3を減光する
phase_5(); // LED1を増光、LED4を減光する
} /* loop forever */
/* please make sure that you never leave main */
}
メイン関数は、フローチャートのとおりに 各フェーズを順番に呼び出す無限ループで構成されています。
今回は、ソース・コードの変更個所の解説を行いました。 次回は、プログラムをマイコンに書き込み実行します。
田中範明
