User manual
00066_MCP402XEV.ASM Source Code
© 2005 Microchip Technology Inc. DS51546B-page 36
;***********************************************************************************************
; State Machine Subroutines
;***********************************************************************************************
DetermineState
swapf State,f
rrf State,f
rrf State,w
andlw b’00111111’ ; mask invalid states
addwf PCL,f
S0_00 retlw .0 ; both buttons pressed at same time, shouldn’t be here
S0_01 retlw .1 ; UP button pressed, change state
S0_10 retlw .2 ; DOWN button pressed, change state
S0_11 retlw .0 ; no change
S1_00 retlw .5 ; both buttons pressed, change state
S1_01 retlw .1 ; no change
S1_10 retlw .0 ; shouldn’t be here, reset state
S1_11 retlw .3 ; UP button released, change state
S2_00 retlw .6 ; both buttons pressed, change state
S2_01 retlw .0 ; shouldn’t be here, reset state
S2_10 retlw .2 ; no change
S2_11 retlw .4 ; DOWN button released, change state
S3_00 retlw .0 ; shouldn’t be here, reset state
S3_01 retlw .0 ; shouldn’t be here, reset state
S3_10 retlw .0 ; shouldn’t be here, reset state
S3_11 retlw .0 ; shouldn’t be here, reset state
S4_00 retlw .0 ; shouldn’t be here, reset state
S4_01 retlw .0 ; shouldn’t be here, reset state
S4_10 retlw .0 ; shouldn’t be here, reset state
S4_11 retlw .0 ; shouldn’t be here, reset state
S5_00 retlw .5 ; no change
S5_01 retlw .7 ; DOWN button released, change state
S5_10 retlw .9 ; UP button released, change state
S5_11 retlw .0 ; shouldn’t be here, reset state
S6_00 retlw .6 ; no change
S6_01 retlw .10 ; DOWN button released
S6_10 retlw .8 ; UP button released
S6_11 retlw .0 ; shouldn’t be here, reset state
S7_00 retlw .5 ; both buttons pressed again, change state
S7_01 retlw .7 ; no change
S7_10 retlw .0 ; shouldn’t be here, reset state
S7_11 retlw .13 ; UP button released, change state
S8_00 retlw .6 ; both buttons pressed again, change state
S8_01 retlw .0 ; shouldn’t be here, reset state
S8_10 retlw .8 ; no change
S8_11 retlw .14 ; DOWN button released, change state
S9_00 retlw .5 ; both buttons pressed again, change state
S9_01 retlw .0 ; shouldn’t be here, reset state
S9_10 retlw .9 ; no change
S9_11 retlw .11 ; DOWN button released, change state
S10_00 retlw .6 ; both buttons pressed again, change state
S10_01 retlw .10 ; no change
S10_10 retlw .0 ; shouldn’t be here, reset state
S10_11 retlw .12 ; DOWN button released, change state
S11_00 retlw .0 ; shouldn’t be here, reset state
S11_01 retlw .0 ; shouldn’t be here, reset state
S11_10 retlw .0 ; shouldn’t be here, reset state
S11_11 retlw .0 ; shouldn’t be here, reset state
S12_00 retlw .0 ; shouldn’t be here, reset state
S12_01 retlw .0 ; shouldn’t be here, reset state
S12_10 retlw .0 ; shouldn’t be here, reset state
S12_11 retlw .0 ; shouldn’t be here, reset state
S13_00 retlw .0 ; shouldn’t be here, reset state
S13_01 retlw .0 ; shouldn’t be here, reset state
TABLE E-1: 00066_MCP402XEV.ASM SOURCE CODE (CONTINUED)