btfss Porta, 0x3
goto Meli
clrf PortB
bsf Status, Rp0
clrf EEAdr ;Dirección = 0
movlw 0x1
movwf EEData ;Dato a escribir = 1
bsf EECon1, WrEn ;Habilita Escritura de la EEprom
bcf IntCon, GIE ;-
movlw 0x55 ; |
movwf EECon2 ; | Código mágico
movlw 0xAA ; |
bsf EECon1, Wr ;-
btfsc EECon1, Wr ;Espera a que termine el proceso
goto $-1 ;de escritura de la memoria.
incf EEData ;Dirección = 1
incf EEAdr ;Dato a escribir = 2
bcf IntCon, GIE ;-
movlw 0x55 ; |
movwf EECon2 ; | Código mágico
movlw 0xAA ; |
bsf EECon1, Wr ;-
btfsc EECon1, Wr ;Espera a que termine el proceso
goto $-1 ;de escritura de la memoria.
incf EEData
incf EEAdr
bcf IntCon, GIE ;-
movlw 0x55 ; |
movwf EECon2 ; | Código mágico
movlw 0xAA ; |
bsf EECon1, Wr ;-
btfsc EECon1, Wr ;Espera a que termine el proceso
goto $-1 ;de escritura de la memoria.
incf EEData
incf EEAdr
bcf IntCon, GIE ;-
movlw 0x55 ; |
movwf EECon2 ; | Código mágico
movlw 0xAA ; |
bsf EECon1, Wr ;-
btfsc EECon1, Wr ;Espera a que termine el proceso
goto $-1 ;de escritura de la memoria.
bcf EECon1, WrEn ;Deshabilita escritura de la EEprom
bcf Status, Rp0 ;Vuelve al banco 0
bsf IntCon, GIE ;Habilita interrupciones generales.
Meli
(resto del código..)
programa
call RETARDO4MS
call RETARDO4MS
call RETARDO4MS
escribir
bsf STATUS, RP0 ;Bank 1
movlw 00H
movwf EEADR;cargo direccion a escribir
movlw 48h
movwf EEDATA; cargo dato a escribir
bcf STATUS, RP0 ; Bank 0
call WhiteEEPROM
return
fin
end
Donde WhiteEEPROM es la rutina de escritura del datasheet