セーブ/ロードの機能(のようなもの)を実現するために、
自動的にキーを押したり7セグを読み取ったりしています。
つまり、手動でINCRを押しながらメモリの内容を紙にメモしたり、
メモを見て手動で打ち込んだりするのと同じようなことを、
PICにやらせているわけです。
PICが行うセーブの動作:
- RESETを押す
- 7セグの表示を読み取ってPICのメモリに保存
- INCRを押して100mS待つ
- 以下2-3を繰り返し
したがって0x00~0x5Fの96ニブルを保存するのに約10秒ほどかかります。
PICが行うロードの動作:
- RESETを押す
- PICのメモリからデータを読み出す
- 7セグの表示と一致しない場合はデータの値に対応するキーを押して100mS待つ
- INCRを押して100mS待つ
- 以下2-4を繰り返し
データを書き換える必要がない所はINCRを押すだけで良いので、
結局ロードにかかる時間は10秒~20秒程度です。
今回使ったPIC16F690の場合、セーブデータの保存に使えるのは、
チップ内にある256バイトのSRAMと256バイトのEEPROMです。
(I/Oの空きがないので外部にEEPROMを付ける余裕もないし、
フラッシュメモリへの書き込みもできないので。)
セーブデータは2ニブルずつまとめて1件あたり48バイトなので、
ぎりぎりまで使っても合計10件が限界です。
しかもSRAMの分は電源を切ったら消えてしまうので、
本体がオフの間もPICだけスリープしてメモリを保持しています。
0 件のコメント:
コメントを投稿