Hola:
Quiero grabar un estado de un pulsador en su EEPROM interna.
Si es posible, de una forma más elegante, jajja. Este pulsador tiene antirrebote, por si alguien le pica la curiosidad. Cada pulsación se queda grabado en su EEPROM interna, concretamente en el PIC16F88. Se que en la página 29 te lo indica muy general. El PIC tiene que ser capaz de leer los datos almacenados cuando se reinicia o lo vuelves a encender.
El código del pulsador es este:
Saludo.
Quiero grabar un estado de un pulsador en su EEPROM interna.

Si es posible, de una forma más elegante, jajja. Este pulsador tiene antirrebote, por si alguien le pica la curiosidad. Cada pulsación se queda grabado en su EEPROM interna, concretamente en el PIC16F88. Se que en la página 29 te lo indica muy general. El PIC tiene que ser capaz de leer los datos almacenados cuando se reinicia o lo vuelves a encender.
El código del pulsador es este:
Código:
; Cada vez que presiona el pulsador conectado a la línea RA0 conmutará el estado de
; un LED conectado a la línea RB0.
;
; ZONA DE DATOS **********************************************************************
LIST P=16F88
INCLUDE <P16F88.INC>
__CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _FOSC_EC
__CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF
CBLOCK 0x20
ENDC
#DEFINE Pulsador1 PORTA,0 ; Pulsador conectado a RA0.
#DEFINE Led1 PORTB,0 ; Línea donde se conecta el diodo LED.
; ZONA DE CÓDIGOS ********************************************************************
ORG 0
Inicio
clrf PORTB ; Borra los latch de salida.
BANKSEL ANSEL
clrf ANSEL ; Puerto A digital.
BANKSEL TRISB
bsf Pulsador1 ; Pulsador activado como entrada.
BANKSEL TRISA
bcf Led1 ; Activar como salida Led1.
BANKSEL PORTA ; Vuelve al banco 0.
Principal
btfsc Pulsador1 ; ¿Pulsador presionado?, ¿(Pulsador)=0?
goto Fin ; No. Vuelve a leerlo.
call Retardo_20ms ; Espera que se estabilicen los niveles de tensión.
btfsc Pulsador1 ; Comprueba si es un rebote.
goto Fin ; Era un rebote y sale fuera.
btfsc Led1 ; Testea el último estado del LED.
goto EstabaEncendido
EstabaApagado
bsf Led1 ; Estaba apagado y lo enciende.
goto EsperaDejePulsar
EstabaEncendido
bcf Led1 ; Estaba encendido y lo apaga.
EsperaDejePulsar
btfss Pulsador1 ; ¿Dejó de pulsar?. ¿(Pulsador)=1?
goto EsperaDejePulsar ; No. Espera que deje de pulsar.
Fin
goto Principal
INCLUDE <RETARDOS.INC>
END
Saludo.