練習プログラム6

「練習プログラム6」の編集履歴(バックアップ)一覧に戻る

練習プログラム6 - (2008/04/07 (月) 19:51:39) のソース

今回はLEDが徐々に点灯する関数です。

これは人間と機械のギャップが少しわかるプログラムだと、
個人的には思ったりします。

***参考プログラム⑥LEDが徐々に点灯する関数

 #include <3694.h>           // H8 Tinyの内部I/O定義をする(ヘッダーファイルの取り込み)

/*===================================================*/
/*               サブ関数                       */
/*===================================================*/

/*------ ウェイト関数(無駄ループバージョン)---- */
 void wait(long loop){       //無駄ループさせて時間をかせぐ関数
      while(loop--);
                     }
 
/*---------LEDが徐々に点灯する関数--------------*/
 void LED_slow(){
    int i;
    for(i=1;i<700;i++){
        IO.PDR8.BYTE=0x00;
        wait(100+i);
        IO.PDR7.BYTE=0xff;
        wait(800-i);
             }
             }

/*===================================================*/
/*               メイン関数                     */
/*===================================================*/
 main(void){             //メイン関数(名前の通り、ココの中身通りにプログラムが動く。)
 IO.PCR8 = 0xff;           //ポート8を全て出力に設定(IOの設定 0なら入力 1なら出力) 
  while(1){                     //無限ループ
   LED_slow();
   wait(20000);
    }
  return 0;                 
   }

***余談

この課題のみそは「LEDが徐々に点灯する関数」
におけるwaitだと思われます。

LEDはIO.PDR8.BYTE=~~~によって点灯しますが、
waitを入れるとその間は、LEDは点滅しません。

でもwaitをいれている時間というのは、
人間にとってはとてもとても短いものなので、
LEDが「消えている」とはっきり認識することはできません。
そして、人間は「すこし暗く点灯している」と感じます。
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。