課題1は完成しましたか? プログラミングは作成し、実際に動かすことで理解が深まります。
これ以降は、前回までに説明した部分は省略し、新たに出現した部分のみ、説明します。
■ 第7章 課題1のCソースファイル、HEXファイルはこちらです【LZH】
■ 課題2
四つのLEDを250ms間隔で順番に点灯するプログラムを作成しましょう。
○○○○ ○○○● ・・・DOWN_LED
○○○○ ○○●○ ・・・RIGHT_LED
○○○○ ○●○○ ・・・UP_LED
○○○○ ●○○○ ・・・LEFT_LED
ルーレットのように、250ms間隔でPIC赤外線受信ボードのRB0LED(下)から左回りで一つずつ順番に点灯・消灯します
// ex7-2.c // PIC16F84A用#include<16f84a.h> #fuses HS,NOWDT,NOPROTECT #use delay(clock=20000000) #define ON #define OFF 0
#byte RA=5 #byte RB=6
#bit IRSIG=RA.2 #bit TACTSW=RA.3 #bit DOWN_LED=RB.0 #bit UP_LED=RB.2 #bit RIGHT_LED=RB.1
#bit LEFT_LED=RB.3void main() { RB=0; set_tris_a(0x0c); set_tris_b(0x00); while(1){ DOWN_LED=ON; delay_ms(250); DOWN_LED=OFF; delay_ms(250); RIGHT_LED=ON; delay_ms(250); RIGHT_LED=OFF delay_ms(250);
//これ以後を考えてください。
}
}
■ ヒント
#byte RA=5 #byte RB=6 #bit IRSIG=RA.2 #bit TACTSW=RA.3 #bit DOWN_LED=RB.0 #bit UP_LED=RB.2 #bit RIGHT_LED=RB.1 #bit LEFT_LED=RB.3
RB0のビット0から3までを、DOWN_LED~LEFT_LEDという名前で使えるように定義します。これでRB.0をDOWN_LEDという名前で使えるようになります。
LED1を点灯するには次のようにします。
DOWN_LED=ON;
消灯するには、
DOWN_LED=OFF;
とします。UP_LEDとLEFT_LEDの処理を追加すればぐるぐると回るようになります。
ぐるぐると回るLEDを眺めているのも楽しいですね。

PICマイコンでつくるインドア・プレーン
みんなで作ろうインドア・プレーン