参考プログラム② 『LED全点滅』
#include <3694.h> /* ウェイト関数 */ void wait(long loop){ while(loop--); //loopの数だけループの処理を繰り返す. } int main(void){ IO.PCR5 = 0xff; //Port5をすべて出力に設定. while(1){ IO.PDR5.BYTE = 0x00; //Port5すべての端子状態を【Low】に設定. wait(20000); IO.PDR5.BYTE = 0xff; //Port5すべての端子状態を【High】に設定. wait(20000); } return 0; }
・プログラムの解説
このプログラムでは、時間を潰すために、無駄に処理を繰り返す簡易のウェイト関数を使っています.
void wait(long loop){ while(loop--); }
この関数では、loopの値だけループ処理を繰り返すことによって時間を稼いでいます.
この関数で待つ時間はマイコンの処理速度にも依存し、正確に一定の時間を待つのには向いておらず、
ちょっと間をあけるときなどに使われます.
メイン関数のほうではまず参考プログラム①と同様に、Port8の端子をすべて出力に設定し、
端子状態を【Low】に設定してLEDをすべて点灯させたあと、先ほどのウェイト関数を使って
wait(20000);
とおくことによって、2万回のループ処理の間待ちます.
次に、端子状態を【High】に設定してLEDを消灯させたあと、またウェイト関数で少し時間をおきます.
この処理をループでさせると、loopに指定した値に対応した間隔でLEDが点滅します.
課題プログラム②『LEDを右から順に一個ずつ間隔をおいて点滅させよ』