Reset:
;Aca todo la configuracion de los puertos
MOVLW 0x80
MOVWF PORTA ;Cargo con el valor 1000 0000
MainLoop:
CALL DELAY_PRE
CALL BOTON
CALL ROTACION
GOTO MainLoop
BOTON
BTFSS AUX,0 ;Indicador del estado del boton
GOTO BOTON_1
BTFSC PULSADOR ;Prueba si soltado presionado
RETURN
BCF AUX,0
INCF CONTADOR, F ; Lo presiono y solto, entonces incremento la demora
BTFSC CONTADOR,3
CLRF CONTADOR
RETURN
BOTON_1:
BTFSC PULSADOR ;Prueba si fue presionado
BSF AUX,0
RETURN
ROTACION:
RRNCF PORTA, F
RETURN
DELAY_PRE:
MOVF CONTADOR, W
CALL TABLA
MOVWF AUX2
DELAY_PRE1:
DECFSNZ AUX2, F
RETURN
CALL DELAY
GOTO DELAY_PRE1
TABLA:
RETLW b'0010' ;Contador = 0, DECF... descuenta primero, por lo tanto necesito que tenga un valor de 2, primer decfs queda en 1 y ejecuta delay, segundo decfs es 0 y no salta, ejecutandose 1 sola ves
RETLW b'0011' ; 3 decfs = 2 delays
RETLW b'0100' ; 4 decfs = 3 delays
RETLW b'0101' ; 5 decfs = 4 delays
RETLW b'0110' ; 6 decfs = 5 delays
RETLW b'0101' ; 5 decfs = 4 delays
RETLW b'0111' ; 4 decfs = 3 delays
RETLW b'1000' ; 3 decfs = 2 delays