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
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