「練習プログラム6」の編集履歴(バックアップ)一覧はこちら
練習プログラム6 - (2008/04/07 (月) 15:34:58) の最新版との変更点
追加された行は緑色になります。
削除された行は赤色になります。
#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);
}
}
/*--------------------------------------------------*/
/* メイン関数 */
/*--------------------------------------------------*/
int main(void){ //メイン関数(名前の通り、ココの中身通りにプログラムが動く。)
IO.PCR8 = 0xff; //ポート8を全て出力に設定(IOの設定 0なら入力 1なら出力)
while(1){ //無限ループ
LED_slow();
wait(20000);
}
return 0; //おまじない
}
今回は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<1400;i++){
IO.PDR5.BYTE=0x00;
wait(100+i);
IO.PDR5.BYTE=0xff;
wait(1500-i);
}
}
/*===================================================*/
/* メイン関数 */
/*===================================================*/
int main(void){ //メイン関数(名前の通り、ココの中身通りにプログラムが動く。)
IO.PCR5 = 0xff; //ポート5を全て出力に設定(IOの設定 0なら入力 1なら出力)
while(1){ //無限ループ.
LED_slow();
wait(20000);
}
return 0;
}
***余談
この課題のみそは「LEDが徐々に点灯する関数」
におけるwaitだと思われます。
LEDはIO.PDR5.BYTE=~~~によって点灯しますが、
waitを入れるとその間は、LEDは点滅しません。
でもwaitをいれている時間というのは、
人間にとってはとてもとても短いものなので、
LEDが「消えている」とはっきり認識することはできません。
そして、人間は「すこし暗く点灯している」と感じます。
課題プログラム⑥『LEDを徐々に明→暗→明→暗を繰り返して点滅させよ』