======Lesson4====== **//注意//** タイマー割り込みを実行するためにはintprg.cの64行目あたりを以下のように書き換えてください __interrupt(vect=24) void INT_IMIA0(void) {/* sleep(); */int_imia0();} **タイマー割り込みとは何でしょう。** 今まで書いてきたプログラムは、上から下まで順に実行する(サブルーチンはその通り飛ぶとして)ものです。\\ これが出来ればライントレースも**大分**近くなります。\\ **頑張りましょう!** 例えれば、 **-Aさんと話す→(話し終わる)→Bさんと話す**\\ というようなものです。とりあえずひとつづつ消化しなくてはいけません。\\ これが割り込みというシステムを使うと、\\ **-Aさんと話す→Bさんが話しかけてくる→Aさんに待ってもらう→Bさんと話す→(話し終わる)→Aさんとの話の続きをする**\\ と言う感じになります。\\ プログラム的には、main文で「Aさんと会話」、割り込み文で「Bさんと会話」と言う感じです。\\ つまり、__同時に色々なことをしたいときに__良く使うものです。\\ 例のように「Bさんが話しかけてくる」というような\\ 何かのアプローチがあって割り込みが入る場合もありますが\\ 今回は、時間で割り込みをかけてみたいと思います。\\ 1sごとに指定された割り込み文を実行する、などと言うことです。\\ **実際にやってみる** まず、時間を使って割り込む事を**タイマー割り込み**といいます。\\ タイマー割り込みをつかうには、「ITU0~4」の設定が必要です。\\ 例えば、ITU0をつかうには ITU0.TCR.BYTE=0x23; ITU0.TSR.BYTE=0x00; ITU0.TIER.BYTE=0x01; ITU0.GRA=390; のような初期化(設定)が必要です。\\ それぞれの意味は赤い本のITU(タイマー割り込み)の所を見て理解してください。 とりあえず、初期化すると\\ GRAで指定したクロック(時間)ごとに void int_imia0 (void) { ITU0.TSR.BIT.IMFA = 0;    //割り込みで実行したい内容 } が自動で実行されるようになっています。\\ 最初の一行はそういうものだと思ってください。\\ タイマー割り込みはコレだけです。 ココまでわかれば課題です。\\ __1秒おきにLEDを点滅させるプログラム__を作ってください。\\ これは、例もありますし余裕かと思います。 それができたら\\ __0.5秒おきにLEDを点滅させるプログラム__を作ってみましょう。 余裕があれば、右から順番に0.5秒おきについていく、なんてプログラムも面白いと思います。 ** 追記 設定すべきGRAの簡単な決め方 ** GRA = (計りたいミリ秒)*(cpu周波数KHz)/(分周比)\\ 分周比は1,2,4,8等の整数とします\\ 分周比はITU0.TCR.BIT.TPSCで設定してください\\ 詳しくは赤い本を見てください