ホームに戻る
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