Hola, gracias por tus sugerencias, he cambiado a escribir los 2 parametros en la memo Flash, me va mejor ya que hasta con un PIC de 6 u 8 patas me puede valer.
He echo un programita, para ver las distintas partes controladas que todo va bien, y lo último ha sido incorporar las rutinas partes de escritura y lectura de datos, igual que con la EEPROM, la lectura perfecta, escritura ni caso.
Y escribo exactamente lo mismo que me indica el datasheet del PIC16F886:
w EQU 0h
f EQU 1h
LIST P=16F886
INCLUDE <P16F886.INC>
RET1 EQU 20H
RET2 EQU 21H
RET3 EQU 22H
VAR1 EQU 110H
VAR2 EQU 112H
VAR3 EQU 114H
VAR4 EQU 116H
ORG 00H
GOTO INI
ORG 05H
DEMORA1S NOP
BANKSEL PIR1
MOVLW 00h ; CARGA VARIABLES DEMORA
MOVWF RET1
MOVLW 00h
MOVWF RET2
MOVLW 05h
MOVWF RET3
DEC2 DECFSZ RET2 ; RETARDO DE 1SEG.
GOTO DEC2
DECFSZ RET1
GOTO DEC2
DECFSZ RET3 ; 3 BUCLES
GOTO DEC2
BANKSEL EEDAT
RETURN
INI NOP
BANKSEL PIR1
CLRF PORTB
BANKSEL ANSELH
CLRF ANSELH
BANKSEL TRISB
MOVLW 0XF0
MOVWF TRISB
BANKSEL EEDAT
MOVLW 01H
MOVWF VAR1
MOVLW 09H
MOVWF VAR2
MOVLW 06H
MOVWF VAR3
MOVLW 0FH
MOVWF VAR4
WRFLASH NOP
BANKSEL EEADRH ;;;; PAG. 121 DATASHEET
MOVLW 08h
MOVWF EEADRH
MOVLW 00h
MOVWF EEADR
MOVLW 110H
MOVWF FSR
LOOP MOVF INDF,0
MOVWF EEDATA ;
INCF FSR,1 ; Next byte
MOVF INDF,0 ; Load second data byte into upper
MOVWF EEDATH
INCF FSR,1
BANKSEL EECON1
BSF EECON1,7 ; Point to program memory
BSF EECON1,2
BCF INTCON,7 ; Disable interrupts (if using)
BTFSC INTCON,7
GOTO $-2
MOVLW 55H
MOVWF EECON2
MOVLW 0AAH
MOVWF EECON2
BSF EECON1,1
NOP
NOP
ESP BTFSC EECON1,1
GOTO ESP
BCF EECON1,2
BSF INTCON,7
BANKSEL EEADR
MOVF EEADR, W
INCF EEADR,F ; Increment address
ANDLW 0FH ; Indicates when sixteen words have been programmed
SUBLW 0FH ; 0x0F = 16 words 07H SON 8 WORDS
BTFSS STATUS,2 ; Exit on a match,
GOTO LOOP
A0_VAR1_2 NOP
MOVLW 08H
MOVWF VAR1
MOVLW 08H
MOVWF VAR2
RDFLASH NOP
BANKSEL EEADR ;;;; PAG. 116 DATASHEET
MOVLW 08h
MOVWF EEADRH
MOVLW 00h
MOVWF EEADR
BANKSEL EECON1
BSF EECON1,7
BSF EECON1,0 ;;; LEE DE LA EEPROM MAX.
NOP
NOP
BANKSEL EEDAT
MOVF EEDAT,0
MOVWF VAR1
BANKSEL EEADR ;;;; PAG. 116 DATASHEET
MOVLW 08h
MOVWF EEADRH
MOVLW 01h
MOVWF EEADR
BANKSEL EECON1
BSF EECON1,7
BSF EECON1,0 ;;; LEE DE LA EEPROM MAX.
NOP
NOP
BANKSEL EEDAT
MOVF EEDAT,0
MOVWF VAR2
LUZMAS NOP
CALL DEMORA1S
MOVF VAR1,0
MOVWF PORTB
CALL DEMORA1S
CLRF PORTB
CALL DEMORA1S
MOVF VAR2,0
MOVWF PORTB
CALL DEMORA1S
CLRF PORTB
CALL DEMORA1S
MOVF VAR3,0
MOVWF PORTB
CALL DEMORA1S
CLRF PORTB
CALL DEMORA1S
MOVF VAR4,0
MOVWF PORTB
CALL DEMORA1S
CLRF PORTB
GOTO LUZMAS
FIN NOP
END
*******************************************************************
Con el rutinita de etiqueta A0_VAR1_2 , es como compruebo que no se escribe nada , porqweu al leer la flash lee 0h, y escribe en var1 y var 2 un 0, VAR1=VAR2=0. Sino encendería el led3. En el puerto B, los bits 3:0 programados como salida , hay leds . Y iluminan bien siempre, pero sin hacer caso a la escritura de la Flash. 1 vez parpadean los 4 a la vez (portb=F ), y otra los 2 centrales (portb = 6) , los otros 2 tramos de 1 seg que tenía que iluminar leds, nada.
El registro de conf. esta bien, permitiendo escribir a partir de 0800h.
No se que pasa, a ver si alguien me puede dar algo de luz.
Gracias de antemano
un saludo