Guardar Datos 16F84

Hola a todos,

se que lo que les voy a pedir es un poco antiguo pero bueno,

es que necesito grabar dos datos en la memoria eeprom del 16f84 utilizando el lenguaje assembler.

es que estoy ahciendo un contador de turnos para el colegio en el que estudio, y el problema es que queiro guardar el ultimo numero visualizado para que cuando se apague y se vuelva a prender, se pueda visualizar.

ya tengo el programa del conteo montado, es más lo adjunto para que lo miren y me ayuden a corregirlo.

toca tener en cuenta lo siguiente:
- uni y dec son las variables de als unidades y las decenas, puesto que los numeros se van a visualizar en displays de 7 segmentos.
- hay muchas variables de retardo y varios llamdos de mostrar, puesto que para cuando se cambie de numero, este destelle tres veces, y ientras lo hace suene un timbre.

espero su colaboracion con esto,

gracias a todos


aqui la programación
HTML:
LIST P=16F84
        ORG 0
        INCLUDE "P16F84.INC"

        UNI EQU 0C
        DEC EQU 0D
        TIME EQU 0E
        VAR EQU 0F
        VAR2 EQU 10
        VAR3 EQU 11
        TIME2 EQU 12

        BANKSEL TRISA
        CLRF TRISA
        BSF TRISA,2
        BSF TRISA,3
        CLRF TRISB
        BANKSEL PORTA
        CLRF VAR2
        CLRF EEADR
        BANKSEL EECON1
        BSF EECON1,0
        BANKSEL PORTA
        MOVFW EEDATA
        MOVWF UNI

        INCF EEADR
        BANKSEL EECON1
        BSF EECON1,0
        BANKSEL PORTA
        MOVFW EEDATA
        MOVWF DEC

    
        
MOSTRAR CALL MUESTRO
    
        BTFSS PORTA,3
        CALL COPIAR
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        CALL MUESTRO
        MOVLW 03
        SUBWF VAR3,W
        BTFSC STATUS,Z
        GOTO SALTO
        BSF PORTA,4
        CALL RETARDO2
        CALL RETARDO2
        CALL RETARDO2
        CALL RETARDO2
        BSF PORTA,4
        INCF VAR3
SALTO    BTFSC PORTA,2
        GOTO  MOSTRAR
PRE        BTFSS PORTA,2
        GOTO  PRE
        INCF UNI
        CLRF VAR3
        
    
        MOVLW 0A
        SUBWF UNI,W
        BTFSS STATUS,Z
        GOTO MOSTRAR
        CLRF UNI
        INCF DEC
        MOVLW 0A
        SUBWF DEC,W
        BTFSS STATUS,Z
        GOTO MOSTRAR
        CLRF DEC
        GOTO MOSTRAR
        
        
RETARDO MOVLW 0FF
        MOVWF TIME
DECRE    DECFSZ TIME
        GOTO DECRE
        RETURN
RETARDO2 MOVLW 0FF
        MOVWF TIME
DECREX    DECFSZ TIME
        GOTO DECRE2
        RETURN
DECRE2  MOVLW 0FF
        MOVWF TIME2
DECRE3    DECFSZ TIME2
        GOTO DECRE3
        GOTO DECREX
MUESTRO MOVFW UNI
        CALL DECO
        MOVWF PORTB
        BSF PORTA,0
        CALL RETARDO
        BCF PORTA,0
        MOVFW DEC
        CALL DECO
        MOVWF PORTB
        BSF PORTA,1
        CALL RETARDO
        BCF PORTA,1
        RETURN

DECO    MOVWF VAR 
        MOVLW 0A 
        SUBWF VAR,W
        BTFSC STATUS,C
        RETLW 0XFF
        MOVFW VAR
        ADDWF PCL
        RETLW 0XC0
        RETLW 0XF9
        RETLW 0XA4
        RETLW 0XB0
        RETLW 0X99
        RETLW 0X92
        RETLW 0X82
        RETLW 08
        RETLW 0X80
        RETLW 0X90


COPIAR    MOVLW 00
        SUBWF VAR2,W
        BTFSS STATUS,Z
        RETURN
        INCF VAR2
         MOVLW 0A
        
        SUBWF UNI,W
        BTFSC STATUS,C
        GOTO SALTO
        CLRF EEADR
        MOVFW UNI
        MOVWF EEDATA
        BANKSEL EECON1
        BSF EECON1,2
        MOVLW 0X55
        MOVWF EECON2
        MOVLW 0XAA
        MOVWF EECON2
        BSF EECON1,1
ESPERE    BTFSS EECON1,4
        GOTO ESPERE
        BCF EECON1,2
        BCF EECON1,4
        BANKSEL PORTA

        MOVLW 0A
        SUBWF DEC,W
        BTFSC STATUS,C
        GOTO SALTO
        INCF EEADR
        MOVFW DEC
        MOVWF EEDATA
        BANKSEL EECON1
        BSF EECON1,2
        MOVLW 0X55
        MOVWF EECON2
        MOVLW 0XAA
        MOVWF EECON2
        BSF EECON1,1
ESPERE2    BTFSS EECON1,4
        GOTO ESPERE2
        BCF EECON1,2
        BCF EECON1,4
        BANKSEL PORTA
        RETURN

        
END
 
¿y cual es la duda?

verifica la hoja de datos del PIC16F84 (o del 16F84A) el que uses, ahí esta la explicación de la grabación en la EEPROM de datos del PIC...

Saludos.
 
Atrás
Arriba