PIC16F1827は16MHz以下のクロックの場合、1.8Vから5.5Vの幅広い電圧で稼働し、またPIC内蔵のクロックを利用すると外部発振子や発信器は不要となるので大変便利です。 PIC16F1827用の簡単なサンプルが1827_wait.X.zipです。RB3ピンにつないだLEDが周期1秒で点滅します。以下に回路図を示します。VDDが3.3Vあるいは5Vでファームウェアを書き込めることは確認しています。
MPLAB Code Configurator(Classic)をインストールしていない場合はMPLAB Code Configurator(Classic)の導入を参照ください。
PIC16F1827の利点を生かして、ここで赤外線リモコンを作ります。赤外線リモコンに関しては、tomcatなるサイトが有名です(アセンブリ言語です)。ここでは、赤外線を変調する部分はそのまま(アセンブリ言語のまま)用いることとし、その他の部分はC言語(XC8)を用いることにします。赤外線変調はC言語で行うことが難しいのです(きちんとした時間幅を持つパルス列を作ることが難しい)。アセンブリ言語とC言語の混合ファームウェアを作るための参考になればと思います。また、SLEEP関数とInterrupt-on-Change割り込みの使用法も参考になると思います。 回路図は
で、ファームウェアは1827_Toshiba_IR.X.zipです。このファームウェアではキー配列が5行7列(行:JP3と列:JP2)のうち1列と2列目だけをコーディングしています。また、扱った赤外線フォーマットは東芝(Onkyo)だけです。他社のフォーマット(PIC16F84マルチメーカー赤外線リモコン送信器)や赤外線送信データを解読する回路(PICマルチメーカー対応赤外線リモコンコード解析器)については、上記のtomcatサイトをご覧ください。
注意:アセンブラファイルに対してコンパイル最適化を行わないようにします。最適化を行うと、タイミングが狂い、ファームウェアが正常に作動しません。具体的には、以下の図のように、Project Propertiesウィンドウにて、CategoriesでX8 compilerを選択し、Option CategoriesでOptimizationsを選択します。そして、アセンブラファイルに対してコンパイル最適化を適用しないようチェックボックス(図の矢印の所)のチェックを解除します。