コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark

今時のマイコンは数百円から数千円で買えて、単体でもそれなりに動作するくらいの周辺デバイスがくっついている。動作周波数も 20MHz とかで、Z80 全盛期のパソコンに比べて早かったりもする。まあ、マイクロコントローラはアーキテクチャがシンプルなのでパソコンと比べられないけれども。
これをコンピューターとしてなんか遊んでみたくなる。
でも、そういった用途で遊ぼうとすると RAM が少なくて難しいんだよな。
しかしま、ファミリーベーシックは RAM 2KB だったし、シンクレア ZX81 は 1KB だし、MAXマシーンの Level1 BASIC は 512Byte だったから実用性を忘れれば何かができそうな気はする。実用性なんか最初から考えていないけれども。
そいや CASIO 最初のポケコン PB-100 は 544step だったし、SHARP の PC-1210 に至っては 400 step で遊んでいたんだよなあ。
む、ポケコン?そうだポケコンのようなものを自分で作れはしまいか?
どうせ実用性が無いんなら徹底的に無くしてしまえ。言語は、そうだ、Brainfuck なんかが良いのではないだろうか。色々な意味で実にプリミティブなプログラミングができるアイテムになるに違いあるまいて。

てなわけで設計開始。
・使用マイコンは PIC16F877A
RAM が 368Byte しかないのが辛いけど人気マイコンなので入手しやすく安い。(秋月で400円)
・Brainfuck インタプリタ内蔵(w
・プログラムエリアは 512Step
256Byte を 4bit ずつ使用、Brainfuck は 8命令しかないのでこれでも 1bit 余るくらい。
・ワークエリアは 32Byte
Brainfuck のポインタが示す範囲
・ワーク 00h はポート出力で LED 駆動
アドレス 00h を特別 I/O として LED を繋いでおく、通常の Hello,world だと動作しながら LED がちかちかするに違いない。
・ワーク 01h はカウントダウンレジスタ
ワーク 01h はタイマーで値が減っていき 0 で停止する特殊レジスタ。Brainfuck では難しいタイムウェイトを実現するための仕組み。
・16文字×2行の LCD 表示ユニット
こいつのおかげで動作電圧が 5V になってしまうがいたしがたあるまい。
・キーは16個
ロウ 4本、カラム 4本のキーマトリクスでタイムスライス読み取り。
・ストレージとして I2C EEPROM を用意
これは予定事項として、後々実装。

取り敢えずこんなところかな。
こういった用途には H8 あたりを使うのが本筋なんだけれども、あえて PIC でこじんまりと作ってみるのが今回の楽しみということで。
—–

Leave a Reply