ホームに戻る
 PIC16F84A でEEPROMを読む

0、はじめに

EEPROMはPICの内部の記憶領域です。
PICの種類によってEEPROMのサイズは異なります。
実行中に書き込み、読み込みの両方が可能です。
ライターでPCからも読み書きができます。

個人的に書き込みの需要が無いので、読み込みのみやります。

1、読み込みの方法

やり方は以下の手順です。

EEADR にアドレスをセットします
バンク1に切り替えます
EECON1 の RD のビットをたてます
バンク0に切り替えます
EEDATA にデータが入っています

2、サンプルコード

;  PIC16F84A でEEPROMを読み込むサンプル
;  アドレスの 0x00 と 0x01 を読み込みます
;  次に読み込んだ値をポートBに反映させます
;  0x00 と 0x01 には適当な数値を入れておいてください

 LIST P=PIC16F84A
 INCLUDE P16F84A.INC

 __CONFIG _HS_OSC & _PWRTE_ON & _WDT_OFF & _CP_OFF

T1    EQU 0CH 
T2    EQU 0DH
T3    EQU 0EH
E_ADR EQU 0FH
E_DAT EQU 10H

 ORG  0

 BSF  STATUS,RP0
 CLRF TRISA
 CLRF TRISB
 BCF  STATUS,RP0
 CLRF PORTA
 CLRF PORTB

LOOP
 MOVLW 0x00
 MOVWF E_ADR
 CALL  EEPROM_READ
 MOVF  E_DAT, W
 MOVWF PORTB

 CALL TIME1000

 MOVLW 0x01
 MOVWF E_ADR
 CALL  EEPROM_READ
 MOVF  E_DAT, W
 MOVWF PORTB

 CALL TIME1000

 GOTO LOOP

EEPROM_READ
 MOVF  E_ADR,W
 BCF   STATUS, RP0
 MOVWF EEADR
 BSF   STATUS, RP0
 BSF   EECON1, RD
 BCF   STATUS, RP0
 MOVF  EEDATA, W
 MOVWF E_DAT
 RETURN

; 0.4ms (10MHzで)
TIME04
 MOVLW D'250'
 MOVWF T1
TIMELOOP
 NOP
 DECFSZ T1, F
 GOTO  TIMELOOP
 RETURN

; 20ms
TIME20
 MOVLW D'50'
 MOVWF T2
TIMELOOP2
 CALL TIME04
 DECFSZ T2, F
 GOTO  TIMELOOP2
 RETURN

; 1m
TIME1000
 MOVLW D'50'
 MOVWF T3
TIMELOOP3
 CALL TIME20
 DECFSZ T3, F
 GOTO  TIMELOOP3
 RETURN

 END

inserted by FC2 system