No es necesario que lo desmontes, con un polímetro o multímetro con la opción "LOGIC" podrías comprobar los niveles lógicos y ahorrarías tiempo.
Palitroquez ya te dejo un código, pero en fin te dejo otro que cumple con las normas actuales de programación para un lenguaje de alto nivel como este:
No puede haber subrutinas dentro de otra subrutina.
No puede haber más de un goto en el programa, se pone uno solo por tradición para generar el bucle de la subrutina principal, en este caso inicio.
No se emplean las pausas en programación, como esto es más difícil de implementar solo las elimino en la validación de las teclas como ejemplo.
Define CLOCK_FREQUENCY = 4 'Definimos la frecuencia
'Define SIMULATION_WAITMS_VALUE = 1
Include "_FuncionesGeneralLibrary.bas"
AllDigital
TRISA.0 = 1
TRISA.1 = 1
TRISA.2 = 1
TRISA.3 = 1
TRISA.4 = 1
TRISB.0 = 0
TRISB.1 = 0
TRISB.2 = 0
TRISB.3 = 0
PORTB.4 = 0
PORTB.5 = 0
Dim w1 As Word
Dim w2 As Word
Dim w3 As Word
'Contadores validación teclas
Dim dl_ra3 As Word
Dim dl_ra2 As Word
Dim dl_ra4 As Word
dl_ra3 = 0
dl_ra2 = 0
dl_ra4 = 0
Dim wait As Word
wait = 10 'Tiempo para validar tecla
inicio:
If PORTA.3 = 0 Then ';suma
dl_ra3 = dl_ra3 + 1 'Contador tiempo tecla pulsada
If dl_ra3 > wait Then 'Valida la tecla
w1 = w1 + 1
dl_ra3 = 0 'Reset contador tecla
Endif
Endif
If PORTA.2 = 0 Then ';resta
dl_ra2 = dl_ra2 + 1
If dl_ra2 > wait Then
dl_ra2 = 0
If w1 > 0 Then
w1 = w1 - 1
Endif
Endif
Endif
If PORTA.4 = 0 Then ';reset
dl_ra4 = dl_ra4 + 1
If dl_ra4 > wait Then
w1 = 0
w2 = 0
w3 = 0
dl_ra4 = 0
Endif
Endif
Gosub mostrar
'Reset contador teclas
If PORTA.3 = 1 Then dl_ra3 = 0
If PORTA.2 = 1 Then dl_ra2 = 0
If PORTA.4 = 1 Then dl_ra4 = 0
Goto inicio
End
'Subrutinas ***************************
mostrar:
If w1 = 100 Then w1 = 0
w2 = _getdig32(w1, 0)
w3 = _getdig32(w1, 1)
PORTB = 240 Or w2
Low PORTB.5
High PORTB.4
WaitMs 10 'pause 10
PORTB = 240 Or w3
Low PORTB.4
High PORTB.5
WaitMs 10 'pause 10
Return
Recuerda que la variable Wait es la que aumenta el tiempo que se necesita para que la tecla pueda ser validada.
Solo lo he probado en simulación, pero parece que funciona, es cuestión de que lo pruebes y lo ajustes a tus necesidades.