BUENAS TARDES GENTE! NECESITO AYUDAAAAAAAAA!
TENGO UN PROGRAMA CONTADOR DE 0 A 99 CON PULSADOR EN PIC16F84A, Y NECESITO HACER QUE LA MEMORIA EEPROM ME CUENTE LA CANTIDAD DE VECES QUE FUE ACCIONADO EL PULSADOR Y LA VERDAD QUE NO TENGO IDEA DE COMO HACERLO, SI ME PUEDEN AYUDAR SE LOS AGRADESCO, LES PASO MI PROGRAMA!
LIST P=16F84A
#INCLUDE P16F84A.INC
#DEFINE BANCO_0 BCF STATUS,5
#DEFINE BANCO_1 BSF STATUS,5
CONT EQU 0XC
CONT2 EQU 0XD
ORG 0H
GOTO INICIO
INICIO BANCO_1
CLRF PORTB ; ESTAS LÍNEAS CONFIGURADAS COMO SALIDAS.
BSF PORTA,4 ; LÍNEA DEL PULSADOR CONFIGURADA COMO ENTRADA.
BCF PORTA,0
BCF PORTA,1
BANCO_0 ; ACCESO AL BANCO 0.
clrf CONT2
clrf CONT
CALL VISUALIZA
ARRIBA BTFSC PORTA,4 ; ¿PULSADOR PRESIONADO?, ¿(PULSADOR)=0?
GOTO PULSO ; NO. VUELVE A LEERLO.
BTFSC PORTA,4 ; COMPRUEBA SI ES UN REBOTE.
GOTO PULSO ; ERA UN REBOTE Y SALE FUERA.
CALL INCREMENTO ; INCREMENTA EL CONTADOR Y LO VISUALIZA.
NO_PULSO CALL VISUALIZA
BTFSS PORTA,4 ; ¿DEJÓ DE PULSAR?. ¿(PULSADOR)=1?
GOTO NO_PULSO ; NO. ESPERA QUE DEJE DE PULSAR.
PULSO CALL VISUALIZA
GOTO ARRIBA
INCREMENTO INCF CONT,F ; INCREMENTA EL CONTADOR Y COMPRUEBA SI HA
MOVLW .15 ; LLEGADO A SU VALOR MÁXIMO MEDIANTE UNA
SUBWF CONT,W ; RESTA. (W)=(CONTADOR)-10.
BTFSC STATUS,C ; ¿C=0?, ¿(W) NEGATIVO?, ¿(CONTADOR)<10?
CLRF CONT ; NO, ERA IGUAL O MAYOR. POR TANTO, RESETEA.
VISUALIZA MOVF CONT,W
CALL DISPLAY ; LO PASA A SIETE SEGMENTO PARA PODER SER
MOVWF PORTB ; VISUALIZADO EN EL DISPLAY.
BCF PORTA,0
BSf PORTA,0
movf CONT2,W
CAll DISPLAY
MOVWF PORTB
BCF PORTA,1
BSF PORTA,1
RETURN
DISPLAY ADDWF PCL,F ;HACE SALTAR EL PROG. AL LUGAR PERTINENTE DE LA TABLA
RETLW 0X3F ;TOMA EL CARACTER "0" EN W Y RETORNA
RETLW 0X06 ;TOMA EL CARACTER "1" EN W Y RETORNA
RETLW 0X5B ;TOMA EL CARACTER "2" EN W Y RETORNA
RETLW 0X4F ;TOMA EL CARACTER "3" EN W Y RETORNA
RETLW 0X66 ;TOMA EL CARACTER "4" EN W Y RETORNA
RETLW 0X6D ;TOMA EL CARACTER "5" EN W Y RETORNA
RETLW 0X7D ;TOMA EL CARACTER "6" EN W Y RETORNA
RETLW 0X07 ;TOMA EL CARACTER "7" EN W Y RETORNA
RETLW 0X7F ;TOMA EL CARACTER "8" EN W Y RETORNA
RETLW 0X67
CLRF CONT
incf CONT2
RETLW 0X3F ;TOMA EL CARACTER "9" EN W Y RETORNA
RETURN
END ; FIN DEL PROGRAMA.