Software社がフリーソフトとして提供しているCコンパイラPICC-Liteでのプログラミング例を示します。PICC-Liteに関する簡単な説明はこちらに示します。コンパイラでは、PIC16F627Aを選択してプログラムの作成とコンパイルをします。PIC16F628Aは、PICC-LiteでサポートされているPIC16F627Aと基本構造は同じで、フラッシュの容量が異なるチップです。PICC-Liteでは、PIC16F628Aに搭載されている2KWのフラッシュメモリ全てを利用することは出来ません。1KWまでに制限されています。動作周波数は、内蔵発信器を利用した4MHzです。IOポート初期化手順IOの初期化は、基本的にピンの割付表にしたがって行うだけなので、簡単に行えます。アナログコンパレータの無効化は、曲者ですね。PICCはなかなか面白いコンパイラ(と統合環境)で、変数にバンクの属性を持たせることによって、明示的にバンクを切り替えなくても、コンパイラが自動的にバンク切り替えのコードを生成してくれます。コンパイルは、ソースファイルを保存すると、依存関係の処理も含めて自動的に実行され、なかなか便利です。音の出力コードのエッセンスですのでいろいろと制約はありますが、内蔵のタイマを効果的に利用すると、こんな簡単なコードで、音を出すことが出来ます。TIMER2のPWM機能を利用して、音を出しています。クロックが4MHzの場合には、分周比の関係で250Hz程度が下限の周波数になります。タクトスイッチの入力タクトスイッチで音を変えたり消したりするコードです。このような処理では、チャタリングに配慮する必要がないので、簡単な処理を示します。7セグメントLEDへの出力7セグメントLEDに数値のパターンを与える処理と、それをダイナミック点灯させる処理です。全部まとめてPIC-PICO-3Sの入出力機能は、これで全てつかえるようになりました。これらをまとめて、7セグメントLED上で、簡単な0.1秒カウンタ(すみませんがこの例では、時間は全く正しくありません)を走らせてみましょう。コンパイラの最適化機能との関係であまりよい方法ではないのですが、空のループを使ってディレイ関数を作ってみました。このプログラムは、mainのforループで、_delay(1)を利用して、かなりの時間を無駄に捨てては、本命の処理をささっとして。いう処理を繰り返して、プロセッサのほとんどの時間を捨てているのでちょっともったいないですが。全ての性能を使い切るとどれほどの処理が出来るのかどきどきしますね。これだけの処理で、まだ500ワードのフラッシュと、35バイトのSRAMしか使っていません。PICC-Liteでは、利用できるフラッシュは1KWに制限されていますので少し苦しそうですが、アイディアしだいで、ゲームでも何でも書けそうですね。制約のない製品版のCコンパイラを入手するか、MPLABなどで、アセンブラでガンガン書いていけば、2KWのフラッシュをフルに利用することも出来ます。これだけのコードがあれば、PICチップのことをあまり知らなくても、C言語でいろいろなことを試すことが出来ます。PICチップの勉強をすれば、生のハードウェアをどんどんたたいて、さらにいろいろな可能性を試すことが出来ますね。この赤く小さな基板の上に、皆さんのアイディアを形にしていってください。タイマ割り込みを利用したモニター機能などは、また別の機会に。