You are here

PIC-GAME-2SXのプログラミング

ハードウェアの具体的な利用法として、HI-TECH Software社がフリーソフトとして提供しているCコンパイラPICC-Liteでのプログラミング例を示します。PICC-Liteに関する簡単な説明はこちらに示します。

  • コンパイラでは、PIC16F877Aを選択してプログラムの作成とコンパイルをします。PIC16F876Aは、PICC-LiteでサポートされているPIC16F877Aと基本構造は同じで、ピン数が異なるチップです。
  • PICC-Liteでは、PIC16F876Aに搭載されている8KWのフラッシュメモリ全てを利用することは出来ません。2KWまでに制限されています。
  • 動作周波数は、レゾネータを利用した8MHzです。

IOポート初期化手順

IOの初期化は、基本的にピンの割付表にしたがって行うだけなので、簡単に行えます。

PICCはなかなか面白いコンパイラ(と統合環境)で、変数にバンクの属性を持たせることによって、明示的にバンクを切り替えなくても、コンパイラが自動的にバンク切り替えのコードを生成してくれます。また、コンパイルは、ソースファイルを保存すると、依存関係の処理も含めて自動的に実行され、なかなか便利です。

専用のIDE(HI-TIDE)は、ECLIPSEがベースになっています。JAVAでサーバーサイドの大規模システムを開発するのに疲れたら、HI-TIDE上で、自分だけのPICの小さなプログラムを作って気分を切り替えるというのはどうでしょう。。。

音の出力

コードのエッセンスですのでいろいろと制約はありますが、内蔵のタイマを効果的に利用すると、こんな簡単なコードで、音を出すことが出来ます。TIMER2のPWM機能を利用して、音を出しています。クロックが8MHzの場合には、分周比の関係で500Hz程度が下限の周波数になります。

LEDの点灯

これは簡単ですね。出力のオン・オフを切り替えるだけです。

タクトスイッチの入力

タクトスイッチで音を変えたり消したり、LEDを点けたり消したりするコードです。このような処理では、チャタリングに配慮する必要がないので、簡単な処理を示します。

ドットマトリックスLEDへの描画

ドットマトリックスLEDをクリアしたり点を出力する処理です。

dml_plotの第一引数Xは横軸、第二引数Yは縦軸の座標値です。座標の原点は、ドットマトリックスLEDの左下で、(0, 0)となります。第三引数は、色を指定します。

PICCの特徴というよりは、PICの特徴なのでしょうが、バイトやビットの処理はかなり効率のよいコードが出ているようですが、intなどのPICにとって複数ワードにわたる演算が出てくると、急にコード効率が下がるような印象です。変数は、出来るだけバイト単位(char や unsigned char)に切り詰めて処理を記述したほうがよいようですね。

ドットマトリックスLEDのダイナミック点灯

ドットマトリックスLEDをダイナミック点灯させる処理です。

ドットマトリックスLEDのデータを、シフトレジスタに出力していきます。

全部まとめて

PIC-GAME-2Sの基本的な入出力機能は、これで全てつかえるようになりました。

これらをまとめて、ドットマトリックスLED上で、点を走らせて見ましょう。

コンパイラの最適化機能との関係であまりよい方法ではないのですが、空のループを使ってディレイ関数を作ってみました。

このプログラムは、mainのforループで、_delay(1)を利用して、かなりの時間を無駄に捨てては、本命の処理をささっとして。。。という処理を繰り返して、プロセッサのほとんどの時間を捨てているのでちょっともったいないですが。。。全ての性能を使い切るとどれほどの処理が出来るのかどきどきしますね。

これだけの処理で、まだ580ワードのフラッシュと、40バイトのSRAMしか使っていません。PICC-Liteでは、利用できるフラッシュは2KWに制限されていますが、まだメモリはかなり使えますので、ゲームでも何でも書けそうですね。制約のない製品版のCコンパイラを入手するか、MPLABなどで、アセンブラでガンガン書いていけば、8KWのフラッシュをフルに利用することも出来ます。

まずは、これだけのコードがあれば、PICチップのことをあまり知らなくても、C言語でいろいろなことを試すことが出来ます。また、PICチップの勉強をすれば、生のハードウェアをどんどんたたいて、さらにいろいろな可能性を試すことが出来ますね。

この赤く小さな基板の上に、皆さんのアイディアを形にしていってください。

タイマ割り込みを利用したモニター機能などは、また別の機会に。。。。

PIC-GAME-2Sのご購入はこちら

開発ソフト: 
チップファミリー: 
MCUチップ: