Buenas gente, tengo un programita que, en una de sus opciones graba un dato en la eeprom, desde la posición 00 a la 04.
Uso el código de la hoja de datos, y cuando lo simulo en el pic simulator, va perfecto.
En la realidad no.
Pregunto:
¿hay algún error común para que pase esto? algún bit de configuración, algún registro que se me pase. insisto, en el simulador va de 10.
Tengo otra rutina que lee esas posiciones, las muestra y funciona bien, de hecho si grabo valores en la memoria usando el winpic, cuando grabo, después en la realidad los lee perfecto.
Les pego la data de la rutina que escribe, lo mas pequeño que pude. Por si alguno tiene tiempo y ganas
Hay registros llamado unidad, decena, centena, vuelta1, vuelta2 que es el valor a grabar
MOVF UNIDAD,0 ;MUEVE UNIDAD A ACUMULADOR
BSF STATUS,RP1 ;
BCF STATUS,RP0 ; Bank 2
MOVWF EEDATA ; PONE EL DATO A GRABAR
MOVLW 0X00
MOVWF EEADR ;SELECCIONA LA POSICIÓN A GRABAR.
CALL ESCRIBE ;GRABO UNIDAD
MOVF DECENA,0 ;MUEVE UNIDAD A ACUMULADOR
BSF STATUS,RP1 ;
BCF STATUS,RP0 ; Bank 2
MOVWF EEDATA ; PONE EL DATO A GRABAR
MOVLW 0X01
MOVWF EEADR ;SELECCIONA LA POSICIÓN A GRABAR.
CALL ESCRIBE ;GRABO UNIDAD
MOVF CENTENA,0 ;MUEVE UNIDAD A ACUMULADOR
BSF STATUS,RP1 ;
BCF STATUS,RP0 ; Bank 2
MOVWF EEDATA ; PONE EL DATO A GRABAR
MOVLW 0X02
MOVWF EEADR ;SELECCIONA LA POSICIÓN A GRABAR.
CALL ESCRIBE ;GRABO UNIDAD
MOVF VUELTA1,0 ;MUEVE UNIDAD A ACUMULADOR
BSF STATUS,RP1 ;
BCF STATUS,RP0 ; Bank 2
MOVWF EEDATA ; PONE EL DATO A GRABAR
MOVLW 0X03
MOVWF EEADR ;SELECCIONA LA POSICIÓN A GRABAR.
CALL ESCRIBE ;GRABO UNIDAD
MOVF VUELTA2,0 ;MUEVE UNIDAD A ACUMULADOR
BSF STATUS,RP1 ;
BCF STATUS,RP0 ; Bank 2
MOVWF EEDATA ; PONE EL DATO A GRABAR
MOVLW 0X04
MOVWF EEADR ;SELECCIONA LA POSICIÓN A GRABAR.
CALL ESCRIBE ;GRABO UNIDAD
RETURN
;RUTINA ESCRIBE EEPROM
ESCRIBE
BSF STATUS,6 ;
BSF STATUS,5
BTFSC EECON1,1 ;Wait for write
GOTO $-1 ;to complete
BCF EECON1,7 ;Point to DATA ;memory
BSF EECON1,2 ;Enable writes
BCF INTCON,GIE ;Disable INTs.
MOVLW 0X55 ;
MOVWF EECON2 ;Write 55h
MOVLW 0XAA ;
MOVWF EECON2 ;Write AAh
BSF EECON1,1 ;Set WR bit to ;begin write
BSF INTCON,GIE ;Enable INTs.
BCF EECON1,2 ;Disable writes
BCF STATUS,5
BCF STATUS,6 ;BANCO 0
RETURN
Desde ya muchas gracias por su tiempo.