国内でPIC16F18xxが発売されてから半年以上が経ち、個人ホームページやブログでは、その製作記事などがちらほら見られるようになった。
私の方でも、ホームページで人気のある
を移植している。
所で、この16F18XX系PICは、PIC16F88などの従来PICよりも更に使いやすくなった部分として、割り込み時にレジスタ退避を自動で行ってくれるので、ユーザーが意識して操作を行わなくてもよくなった。尤もHitech PICCを使う場合は意識することなく自動的にコンパイル時に退避コード生成されるが、それが無くなるわけなので、プログラム容量を減らす貢献となる。
自動退避するレジスター
• W レジスタ
• ステータス レジスタ (TO および PD を除く )
• BSR レジスタ
• FSR レジスタ
• PCLATH レジス
そして、もっと便利な機能として、メモリーを一つの連続したアドレスとして使用できる点である。
上記はPIC16F193xのメモリーマップであるが、相変わらずのバンク分けされたものである。
FSRメモリーが0x020~0x06F、0x0A0~0x0E0、0x120~0x16Fの各80バイトの領域が各バンクに分かれているが、それをなんと0x2000~0x20EFと、一つのメモリーアドレスとして扱うことができるのである。
上記の様に各バンクに散らばった80バイトをリニアデーターメモリーとして取り扱えるので、例えば通信バッファとして大量にメモリーを確保したい場合にバンクを跨ぐ様なメモリー空間は単純には扱えなかったのが、0x2000以降を指定することで簡単にアクセスが可能となった。
Hitech PICCでなら
unsigned char Buffer_FIFO[MAX_BUFF] @0x2000;
の様にするだけでOKだ。
これで80バイトを超える連続したメモリーを簡単に確保できる様になった。
この新しいPIC16F18xx系PICは、日本語で書かれている
PIC16F193X/LF193Xのデータシートを読むことで、容量や機能の多少の違いはあるものの、12F1822,16F1823,16F1827,16F1939等のデバイスを簡単に扱えるようになるであろう。是非このドキュメントを参考にして、PIC16F18xx系を自分の物にして頂けたら幸いである。
最近のコメント