目次>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番地に書き込む | 
 
	プログラムはこちらです。 
 
 | 
