;-------------------------------------------------------------------------------------
; Rutinas para cambiar de bancos
;-------------------------------------------------------------------------------------
BANCO0 bcf STATUS,RP0 ;
bcf STATUS,RP1 ;
return ;
BANCO1 bsf STATUS,RP0 ;
bcf STATUS,RP1 ;
return ;
BANCO2 bcf STATUS,RP0 ;
bsf STATUS,RP1 ;
return ;
BANCO3 bsf STATUS,RP0 ;
bsf STATUS,RP1 ;
return ;
;-------------------------------------------------------------------------------------
; Rutinas para grabar en EEPROM
;------------------------------------------------------------------------------------
GRABAR call BANCO0 ;
movlw .94 ;
movwf CONTA_EE ;Cargo el contador para grabar
clrf DIR_EE ;
call BANCO2 ;
movlw 0x10 Copio la direccion del registro a W
movwf FSR ;
REPETIR bsf STATUS, IRP ;
bcf FSR,7
call BANCO3 ;
ESPERAR btfsc EECON1, WR ;Verifico si termino de grabar
goto ESPERAR ;Espero a que termine de grabar
call BANCO0 ;
movf DIR_EE,w ;Copio la direccion de la EEPROM en donde voy a
call BANCO2 ;grabar el dato.
movwf EEADR ;Cargo la direccion al registro
movf INDF,w ;Muevo el
movwf EEDATA ;
call BANCO3 ;
bcf EECON1, EEPGD ;Indico que voy a grabar en EEPROM
bsf EECON1, WREN ;Habilito la escritura
bcf INTCON, GIE ;Deshabilito las interrupciones
movlw 0x55 ;Ingreso la clave para grabar
movwf EECON2 ;
movlw 0xAA ;Ingreso la clave para grabar
movwf EECON2 ;
bsf EECON1, WR ;Comenzo la grabacion
bsf INTCON, GIE ;Habilito las interrupciones
decfsz CONTA_EE,1 ;
goto FALTA ;Sigo con el banco 2
goto GRABARB0 ;Terminne con los registros del banco 2
FALTA call BANCO0 ;
incf DIR_EE,1 ;Incremento la direccion de la EEPROM
;call BANCO2 ;
incf FSR,1 ;Incremento la direccion
goto REPETIR ;
GRABARB0 call BANCO0 ;
movlw .32 ;
movwf CONTA_EE ;Cargo el contador para grabar
movlw .94 ;
movwf DIR_EE ;
bcf STATUS, IRP
;call BANCO0 ;
movlw MOLDE48_A ;Copio la direccion del registro a W
movwf FSR ;
REPETIRB0 bcf FSR,7
bcf STATUS, IRP
call BANCO3 ;
ESPERARB0 btfsc EECON1, WR ;Verifico si termino de grabar
goto ESPERARB0 ;Espero a que termine de grabar
call BANCO0 ;
movf DIR_EE,w ;Copio la direccion de la EEPROM en donde voy a
call BANCO2 ;grabar el dato.
movwf EEADR ;Cargo la direccion al registro
movf INDF,w ;Muevo el
movwf EEDATA ;
call BANCO3 ;
bcf EECON1, EEPGD ;Indico que voy a grabar en EEPROM
bsf EECON1, WREN ;Habilito la escritura
bcf INTCON, GIE ;Deshabilito las interrupciones
movlw 0x55 ;Ingreso la clave para grabar
movwf EECON2 ;
movlw 0xAA ;Ingreso la clave para grabar
movwf EECON2 ;
bsf EECON1, WR ;Comenzo la grabacion
bsf INTCON, GIE ;Habilito las interrupciones
decfsz CONTA_EE,1 ;
goto FALTAB0 ;Sigo con el banco 2
call BANCO0 ;
return ;
FALTAB0 incf FSR,1 ;Incremento la direccion
call BANCO0 ;
incf DIR_EE,1 ;Incremento la direccion de la EEPROM goto REPETIRB0 ;