第12章 赤外線2ch送信機のプログラミングを楽しみましょう
赤外線2ch送信機TX2-006Pは無事完成しましたか?。
TX2-006Pにはジョイスティック・PIC12F683のA-Dコンバータなどのプログラミングを楽しめる機能が満載です。12F683は今回初めて使うPICとなります。インドアプレーンを操縦する前にプログラミングに挑戦しましょう
準備運動として、LEDを3回点滅させるプログラムを作成しましょう。今まで使っていたPIC16F84AとPIC12F683は同じ"PIC"の仲間ですが、12F683は後発のために小型ながら最新機能を搭載しています。
TX-006Pでは外部発振子であるセラロックを省略し、PICの内部クロックを使い、回路を簡略化しています。
これらの切り替えを含めたプログラミングにする必要があります。
それでは、TX2-006Pにひとつだけ装備しているLEDを使ってPIC12F683をプログラミングしてみましょう。
■課題12-1
LEDを250msの間隔で3回点滅させるプログラムを作りましょう。
// 赤外線2ch送信機TX2-006P用 課題1 // LEDを3回点滅させる(12F683プログラミング入門) // ex1_006p.c PIC12F683用
■イニシャライズ
#include<12f683.h> #fuses INTRC_IO,NOWDT,PUT,NOPROTECT,NOMCLR //INTRC_IO・・・内部クロック使用宣言 //ウオッチドック・タイマなし、パワーアップ・タイマ使用 //プロテクトなし、MCLRなし
外付けセラロックを省略する場合、内部クロックの使用宣言をここで行います。
#use delay(CLOCK=8000000) //内部クロック8MHz駆動
内部クロックは8MHzです。
#byte GP=5 //GPは0~5の6ポート #bit IROUT=GP.5 //赤外線LED #bit LED=GP.4 //LED接続 #bit SW=GP.3 //ジョイスティック付属スイッチ
12F683は、GP0~GP5までの六つのポートを使用することができます。
#define ON 1 #define OFF 0 #define HI 1 #define LOW 0
■メイン・ルーチン
//メイン・ルーチン
void main()
{
int i;
set_tris_a(0x0f); //GP0~GP4入力、GP5出力
setup_oscillator(OSC_8MHz); //内部クロック8MHz使用
内部クロックの動作周波数はここで宣言します。#use delayとセットで使用します。
LED=OFF;
IROUT=OFF;
while(1){
for(i=0;i<3;i++){ //LED3回点滅
LED=ON;
(その1);
(その2);
delay_ms(250);
}
}
}
16F88/16F84Aのプログラミングと基本は同じです。違いを見比べてください。
■正解
(その1) delay_ms(250) (その2) LED=OFF
課題1のC言語ソース・ファイルとHEXファイルは、こちらからダウンロードできます。【ex1_006p.lzh】

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