目次>5章 第2ステップ(色々な実験)>(15)EEPROMを使う

EEPROMを使う
簡易版
更新日2007.11.4

PICに標準で内蔵されているEEPROM(電源を切っても情報が消えないメモリ)を使って見ます。

(1)回路図
回路図は以下の通りです。
6章の、「PICテストボード(スイッチ,LED)」と全く同じです。
クロックは20MHzです。

(2)EEPROMの使い方
<EEPROMからデータ取り出し>

EEPROMからのデータ取り出しは以下の手続きで行います。
EEPROMのアドレスは、PIC16F84Aの場合、00h〜3Fhの64バイトです。

MOVLW00h;EEPROMのアドレス指定
MOVWFEEADR;アドレスをEEADRへセット
BSFSTATUS,RP0;■バンク1に切替え
BSFEECON1,RD;読み出し開始
BCFSTATUS,RP0;■バンク0に切替え
MOVFEEDATA,W;Wレジスタにデータ取り出し
<EEPROMへのデータ書き込み>

EEPROMへのデータ書き込みは以下の手続きで行います。
取り出しに比べて、やや長い処理が必要です。

MOVLW00h;EEPROMのアドレス指定
MOVWFEEADR;アドレスをEEADRへセット
MOVFPORTB,W;PORTBの内容を
MOVWFEEDATA; EEDATAにセット
BSFSTATUS,RP0;■ページ1に切替え
BSFEECON1,WREN;EEPROM書き込み許可
MOVLW55H;
MOVWFEECON2;
MOVLW0AAH
MOVWFEECON2
BSFEECON1,WR;EEPROM書き込み開始
EE_wait
BTFSCEECON1,WR;EEPROM書き込み完了?
GOTOEE_wait
BCFSTATUS,RP0;■ページ0に切替え

書き込みに対する注意事項
EEPROMの書き込み可能回数は、1千万回までです。(PIC16F84Aの場合)
非常に大きな値のように見えますが、カウンタなどで使用するとすぐに上限に達します。
スイッチを押した時にその状態を保持するような、人間系の動作をトリガに書き込む使い方にして下さい。

(3)プログラム
3つのスイッチを使い、PORTBの内容をEEPROMに書き込み,EEPROMから読み込んだ内容をPORTBに出力するプログラムを作成します。
機能概要は以下の通りです。
RA2のスイッチON押す毎にPORTBを+1
RA3のスイッチONEEPROMの0番地の内容を読み込みPORTBに出力
RA4のスイッチONPORTBの内容をEEPROMの0番地に書き込む

プログラムはこちらです。