ReadRotaryEncoder
MOVLW b'00000011'
ANDWF ROTARY_TEMP, w
MOVWF TEMP2
MOVLW b'00000011'
ANDWF BUTTONS2, w
SUBWF TEMP2
BTFSS STATUS, Z
GoTo $+2
RETURN
; Stores the current setting every time it's called
RLF ROTARY_TEMP
RLF ROTARY_TEMP ;rotates left to accept the next 2 bits
MOVLW b'11111100'
ANDWF ROTARY_TEMP, f ; strips any unwanted bits from the start
MOVLW b'00000011'
ANDWF BUTTONS2, w
ADDWF ROTARY_TEMP, f
;************
;Compares ROTARY_TEMP with known sequences
MOVLW b'00011110'
SUBWF ROTARY_TEMP, w
BTFSC STATUS, Z
GoTo FlagAnticlockwise
MOVLW b'01111000'
SUBWF ROTARY_TEMP, w
BTFSC STATUS, Z
GoTo FlagAnticlockwise
MOVLW b'11100001'
SUBWF ROTARY_TEMP, w
BTFSC STATUS, Z
GoTo FlagAnticlockwise
MOVLW b'10000111'
SUBWF ROTARY_TEMP, w
BTFSC STATUS, Z
GoTo FlagAnticlockwise
MOVLW b'00101101'
SUBWF ROTARY_TEMP, w
BTFSC STATUS, Z
GoTo FlagClockwise
MOVLW b'10110100'
SUBWF ROTARY_TEMP, w
BTFSC STATUS, Z
GoTo FlagClockwise
MOVLW b'11010010'
SUBWF ROTARY_TEMP, w
BTFSC STATUS, Z
GoTo FlagClockwise
MOVLW b'01001011'
SUBWF ROTARY_TEMP, w
BTFSC STATUS, Z
GoTo FlagClockwise
RETURN
FlagClockwise
BSF TMR0_TEMP, CLOCKWISE
BCF TMR0_TEMP, ANTICLOCKWISE
RETURN
FlagAnticlockwise
BCF TMR0_TEMP, CLOCKWISE
BSF TMR0_TEMP, ANTICLOCKWISE
RETURN