« 超Low-EndマイコンRS08を使おう - MC9RS08KA2で4個のLEDを駆動する (18) | メイン | 超Low-EndマイコンRS08を使おう - MC9RS08KA2で4個のLEDを駆動する (20) »

超Low-EndマイコンRS08を使おう - MC9RS08KA2で4個のLEDを駆動する (19)

ソース・コードの解説

 今回は、前回公開したソース・コードのうち、 新たに変更があった部分に解説を加えていきます。

各フェーズでの処理の解説

 各フェーズとも、大変似た内容になっていますので、 ここでは、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 */
}

 メイン関数は、フローチャートのとおりに 各フェーズを順番に呼び出す無限ループで構成されています。


 今回は、ソース・コードの変更個所の解説を行いました。 次回は、プログラムをマイコンに書き込み実行します。

田中範明

トラックバック

このエントリーのトラックバックURL:
http://www.eleki-jack.com/mt/mt-tb.cgi/1324

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

会社案内
情報セキュリティおよび個人情報の取り扱いについて

コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。
コメントはそれぞれ投稿した人のものです。

Powered by
Movable Type 4.1