DISPLAY:
incf PORTA,RA0 ;Incremento ra0
movf ContUnidad,1 ;Mueve lo que hay en contador de unidades a W
call TABLA_VALORES ;Llamo la tabla de valores.
movwf PORTB ;Muestro lo que esta en w, en el display.
call RETARDO_20ms
decf PORTA,RA0 ;Decremento ra0
movf ContDecena,1 ;Mueve lo que hay en contador de centenas a W
call TABLA_VALORES ;Llamo la tabla de valores.
movwf PORTB ;Muestro lo que esta en w, en el display.
call RETARDO_20ms
btfss PORTB,RB0 ; Testeamos si esta a 1 logico.-
goto DISPLAY ; No, seguimos testeando.-
call RETARDO_20ms ; Eliminamos Efecto rebote
btfss PORTB,RB0 ; Testeamos nuevamente.-
goto DISPLAY ; Falsa Alarma, seguimos testeando.-
CONTAR:
incf ContUnidad ;Incremento el contador
movlw d'10' ;Le asigno 10 a w
subwf ContUnidad,1 ;Hago una resta entre el contador y lo que hay en W.
btfss STATUS,Z ; z=1 salta
goto DISPLAY
clrf ContUnidad ;Limpia el contador de unidad.
incf ContDecena ;Incremento el contador de decena.
movlw d'10' ;Le asigno 10 a w
subwf ContDecena,1
btfsc STATUS,Z ; z=0 salta, z=1 limpia el contador.
clrf ContDecena ;Limpia contador decena.
goto DISPLAY