■ 課題4ののCソース・ファイルとHEXファイルはこちらです【LZH】
課題4のタクト・スイッチでLEDが点灯しましたか? もう少し、スイッチを楽しみましょう。
■ 課題5
タクト・スイッチを使った課題をもう一問考えましょう。
タクト・スイッチを押している間は100ms間隔で四つのLEDを全部点滅、離すと500msで四つのLEDを点滅するという課題です。
TACTSW:ON→ ○○○○ ○○○●・○○○○ ○○○○:100ms間隔
TACTSW:OFF→○○○○ ○○○●・○○○○ ○○○○:500ms間隔
// ex7-5.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.3
void main() { int brink_time; set_tris_a(0x0c); set_tris_b(0x00) RB=0; while(1){ if(TACTSW==0){ ★★★★; } else{ ★★★★; } RB=0x0f; delay_ms(★★); RB=0x00; delay_ms(★★); }
}
■ ヒント1
int brink_time;//点灯間隔を保存する変数
整数型変数birnk_timeに点灯間隔をセットします。
■ ヒント2
if(TACTSW==0){//スイッチが押されていたら100ms間隔
★★★★;
}
else{
★★★★;//押されていなければ500ms間隔
}
RB=0x0f;
delay_ms(★★);
RB=0x00;
delay_ms(★★);
}
}
だんだんと星の数が増えてきました。brink_timeの使い方が鍵を握っています。パズルだと思って、楽しみながら考えてください。

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