Hola todopic, gracias por responder, todo lo que me has indicado me ha funcionado, pero antes te cuento, esta es la segunda vez que escribo este mensaje, ya que en el anterior adjunté el archivo de proteus pero el sistema no lo permitio y parece que perdí lo escrito, no supe como volver, así que todo de nuevo. Bueno, trataré de explicar de nuevo, con el botón de incrementar el sistema cuenta graba y recupera el valor sin problemas, al agregar el segundo botón para decrementar, el sistema definitivamente se pega, si hago un bypass al boton de incrementar y dejo sólo al decrementar ( como está comentado en el código), el sistema decrementa la cuenta, graba en eeprom y muestra el valor guardado. He pasado muchas horas tratando de entender y revisar el código, pero no funciona con los dos botones, me imagino que no doy con la lógica para que funcione. Quisiera abusar de tu buena voluntad y si me pudieras indicar alguna posible solución al tema, te quedaría muy agradecido.
Saludos cordiales.
código:
list p=16f84a
#include <P16F84A.INC>
;----------------------------------------
reg1 equ 0x0c
reg2 equ 0x0d
cont1 equ 0x0e
cont2 equ 0x0f
org 0x00
goto inicio
inicio bsf STATUS,5
clrf TRISB
movlw b'11111100'
movwf TRISA
bcf STATUS,RP0
clrf PORTA
clrf PORTB
clrf cont1
clrf cont2
;-----------------Lee en la EEprom 1er dato----------------
movlw 0x01
movwf EEADR
bsf STATUS,5
bsf EECON1,RD
nuevo
btfsc EECON1,0
goto nuevo
bcf STATUS,5
movf EEDATA,W
movwf cont1
;-----------------------------------------------------
movf cont1,W
movwf PORTB
;----------------------------------------------------
;-----------------Lee en la EEprom 2o dato----------------
movlw 0x02
movwf EEADR
bsf STATUS,5
bsf EECON1,RD
nuevo1
btfsc EECON1,0
goto nuevo1
bcf STATUS,5
movf EEDATA,W
movwf cont2
;-----------------------------------------------------
movf cont2,W
movwf PORTA
goto otra2 ; aquí bypass el código para bajar cuenta
;----------------------------------------------------tecla para subir cuenta----------------------
otra1
btfss PORTA,3 ;pregunto si tecla es oprimida
goto otra1 ;nop, entonces sigo esperando tecla oprimida
clrf reg1 ;si, hay tecla oprimida y limpio reg1
clrf reg2 ;y reg2 para iniciar un delay
bucle1
; decfsz reg1,F ;comienza delay bypass el delay para efecto de simul en proteus
; goto bucle ;y sigue
; decfsz reg2,F ;.........
; goto bucle ;..........
incfsz PORTB,F
goto label1
INCF PORTA,F ; SI supero la cuenta del porb, incremento la salida del porta...
movf PORTA,W
label1
movf PORTB,W
movwf cont1
movf PORTA,W
movwf cont2
;----------------------------------------------------------------------------------------------------------------------------
;--------------------------------------------------------tecla para bajar cuenta----------------------------------------------
otra2
btfsc PORTA,2 ;pregunto si tecla es oprimida
goto otra2 ;nop, entonces sigo esperando tecla oprimida
clrf reg1 ;si, hay tecla oprimida y limpio reg1
clrf reg2 ;y reg2 para iniciar un delay
bucle2
; decfsz reg1,F ;comienza delay bypass el delay para efecto de simul en proteus
; goto bucle ;y sigue
; decfsz reg2,F ;.........
; goto bucle ;..........
decfsz PORTB,F ;disminuyo portB
goto label2 ;si no es cero, voy al label2
DECF PORTA,F ; SI la cuenta del porb llega a cero , decremento la salida del porta...
movf PORTA,W ;y lo saco por portA
label2
movf PORTB,W ;recupero el valor4 en portB
movwf cont1 ;y lo guardo en cont1
movf PORTA,W ;recupero valor en portA
movwf cont2 ;y lo guardo en cont2
;--------------------------Escribe en la EEprom 1er dato---------------------------------------
bcf STATUS,5
movlw 0x01
movwf EEADR
movf cont1,W
movwf EEDATA
bsf STATUS,5
bsf EECON1,2
movlw 0x55
movwf EECON2
movlw 0xaa
movwf EECON2
bsf EECON1,1
nuevo3
btfsc EECON1,1
goto nuevo3
bcf STATUS,5
;--------------------------Escribe en la EEprom 2 dato---------------------------------------
bcf STATUS,5
movlw 0x02
movwf EEADR
movf cont2,W
movwf EEDATA
bsf STATUS,5
bsf EECON1,2
movlw 0x55
movwf EECON2
movlw 0xaa
movwf EECON2
bsf EECON1,1
nuevo4
btfsc EECON1,1
goto nuevo4
bcf STATUS,5
;--------------------------------------------------------------
label goto otra2
;--------------------------------------------------------------
end