目次>5章 第2ステップ(色々な実験)>(15)EEPROMを使う
更新日2007.11.4
PICに標準で内蔵されているEEPROM(電源を切っても情報が消えないメモリ)を使って見ます。
(1)回路図
|
・ |
回路図は以下の通りです。
6章の、「PICテストボード(スイッチ,LED)」と全く同じです。
クロックは20MHzです。
-
|
(2)EEPROMの使い方
|
|
- <EEPROMからデータ取り出し>
- EEPROMからのデータ取り出しは以下の手続きで行います。
EEPROMのアドレスは、PIC16F84Aの場合、00h〜3Fhの64バイトです。
MOVLW | 00h | ;EEPROMのアドレス指定
| MOVWF | EEADR | ;アドレスをEEADRへセット
| BSF | STATUS,RP0 | ;■バンク1に切替え
| BSF | EECON1,RD | ;読み出し開始
| BCF | STATUS,RP0 | ;■バンク0に切替え
| MOVF | EEDATA,W | ;Wレジスタにデータ取り出し
|
- <EEPROMへのデータ書き込み>
- EEPROMへのデータ書き込みは以下の手続きで行います。
取り出しに比べて、やや長い処理が必要です。
| MOVLW | 00h | ;EEPROMのアドレス指定
| | MOVWF | EEADR | ;アドレスをEEADRへセット
| | MOVF | PORTB,W | ;PORTBの内容を
| | MOVWF | EEDATA | ; EEDATAにセット
| | BSF | STATUS,RP0 | ;■ページ1に切替え
| | BSF | EECON1,WREN | ;EEPROM書き込み許可
| | MOVLW | 55H | ;
| | MOVWF | EECON2 | ;
| | MOVLW | 0AAH |
| | MOVWF | EECON2 |
| | BSF | EECON1,WR | ;EEPROM書き込み開始
| EE_wait | | |
| | BTFSC | EECON1,WR | ;EEPROM書き込み完了?
| | GOTO | EE_wait |
| | BCF | STATUS,RP0 | ;■ページ0に切替え
|
- 書き込みに対する注意事項
- EEPROMの書き込み可能回数は、1千万回までです。(PIC16F84Aの場合)
非常に大きな値のように見えますが、カウンタなどで使用するとすぐに上限に達します。
スイッチを押した時にその状態を保持するような、人間系の動作をトリガに書き込む使い方にして下さい。
|
(3)プログラム
|
|
3つのスイッチを使い、PORTBの内容をEEPROMに書き込み,EEPROMから読み込んだ内容をPORTBに出力するプログラムを作成します。
- 機能概要は以下の通りです。
-
RA2のスイッチON | 押す毎にPORTBを+1
| RA3のスイッチON | EEPROMの0番地の内容を読み込みPORTBに出力
| RA4のスイッチON | PORTBの内容をEEPROMの0番地に書き込む
|
プログラムはこちらです。
|