Hola compañeros, agradesco se tomen la molestia de leer mi post, les cuento, hice un programa para mover una prensa y cuente el tiempo de prensado en base a dos digitos que son capturados y guardados en la eeprom, se usa un lcd 20x4 y al correr el software en proteus todo perfecto, pero en la pcb se bloquea al ingresar los digitos, si no ingreso esos digitos nunca se traba ni hace cosas extrañas, eso me hace descartar la fuente y cosas como rizado, agregue tiempo para evitar el rebote y ademas agrege software para esperar a que se suelte el boton, nunca habia usado incrementar o decrementar, el mismo sistema de captura de la señal de los botones para subir y bajar (una divisora con resistencias, y un capacitor, despues lo paso por un ic inversor dos veces) es el mismo que se usa para los sensores por ejemplo y en esos no tengo problema, ademas ese sistema ya lo he usado en otras tarjetas y nunca he tenido problema, creo que es algo referente a la captura y almacenamiento de los datos en el software, no soy bueno programando y he aprendido viendo videos y copiando como otros hacen sus programas, disculpen si hay maneras mas simples y yo no las uso, péro seguramente es porque las desconozco, si me pudieran orientar les agradeceria, adjuntare parte de programa en cuestion, gracias!!!
SUBIR1 BTFSS PORTE,0 ;CHECA SI SE PRESIONA EL BOTON DE AUMENTAR
GOTO FIJAR1 ;BRINCA A MONITOREAR EL SIGIENTE BOTON
CALL MEDIOSEG
BTFSC PORTE,0 ;CHECA SI YA SE SOLTO EL BOTON
GOTO $-1 ;GENERA BUCLE PAA ESPERAR A QUE SE SUELTE EL BOTON
;COMIENZA IDENTIFICACION DE CARACTER A MODIFICAR
BTFSC UBICACION,0 ;SI ES 0 BRINCA A SEGUNDO, SI ES 1 BRINCA A PRIMERO
GOTO SUBIENDO_DECENA ;
GOTO SUBIENDO_UNIDAD ;
FIJAR1 BTFSS PORTE,1 ;CHECA SI SE PRESIONA EL BOTON DE FIJAR
GOTO CONTANDO1 ;BRINCA A MONITOREAR EL SIGIENTE BOTON
CALL MEDIOSEG
BTFSC PORTE,1 ;CHECA SI YA SE SOLTO EL BOTON
GOTO $-1 ;GENERA BUCLE PAA ESPERAR A QUE SE SUELTE EL BOTON
GOTO FIJANDO1 ;SALTA A LA RUTINA PARA FIJAR NUMERO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CONTANDO1 DECFSZ D1,F ;LE RESTA 1 A D1 Y GUARDA EL RESULTADO EN D1, BRINCA SI LLEGA A CERO
GOTO $+2 ;BRINCA DOS LUGARES HACIA ADELANTE
DECFSZ D2, F ;LE RESTA 1 A D2 BRINCA SI LLEGA ACERO
GOTO $+2 ;BRINCA DOS LUGARES
DECFSZ D3, F ;LE RESTA 1 A D3 BRINCA SI LLEGA A CERO
GOTO DELAY_CONTEO1 ;REGRESA A CHECAR BOTONES Y CONTAR
GOTO DESPLEGAR ;BRINCA A DESPLEGAR Y TERMINO TIEMPO DE ESPERA
RETURN
;;;;;;;;;;;SUBRUTINAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BAJANDO_UNIDAD ;
DECF UNIDAD,F ;LE RESTA UNO AL VALOR ALMACENADO EN PORTADOR, QUE CORRESPONDE AL NUMERO QUE SE MUESTRA EN EL LCD
GOTO VISUALIZAR1 ;
RETURN ;
SUBIENDO_UNIDAD ;
INCF UNIDAD,F ;
GOTO VISUALIZAR1 ;
RETURN ;
BAJANDO_DECENA ;
DECF DECENA,F ;
GOTO VISUALIZAR1 ;
RETURN ;
SUBIENDO_DECENA ;
INCF DECENA,F ;
GOTO VISUALIZAR1 ;
FIJANDO1 ;
DECFSZ UBICACION,F ;
GOTO VISUALIZAR1 ;
CALL ESCRIBIRU ;GUARDA EL NUMERO EN EEDATA
CALL ESCRIBIRD ;GUARDA EL NUMERO EN EEDATA
GOTO DESPLEGAR ;
RETURN ;