;******************************************************************************** ;* * ;* ************************************* * ;* * OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO * * ;* * OOOOOOOOOOOOO___OOOOOOO___OOOOOOO * * ;* * OOOOOOOOOOO<| U |>OOO<| U |>OOOOO * * ;* * OOOOOOOOOOO<| |>OOO<|___|>OOOOO * * ;* * OOOOOOOOOOO<| |>OOOOOOOOOOOOOOO * * ;* * OOOOOOOOOOO<|___|>OOOOOOOOOOOOOOO * * ;* * OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO * * ;* ************************************* * ;* * ;* V I R T U A L * ;* * ;* B R E A D B O A R D * ;* * ;* * ;* JAMES CASKA * ;* * ;* (c) 1999 * ;* * ;******************************************************************************** ;* ;* KEYPAD.16C5X ;* ;* KEYPAD is a series of decoding routines for various keyboard pads ;* for the 16c5X series of micrconcontrollers. ;* ;******************************************************************************** KEYPAD_ROW_1 EQU B'00001110' KEYPAD_ROW_2 EQU B'00001101' KEYPAD_ROW_3 EQU B'00001011' KEYPAD_ROW_4 EQU B'00000111' KEYPAD_COL_1 EQU 7 KEYPAD_COL_2 EQU 6 KEYPAD_COL_3 EQU 5 KEYPAD_COL_4 EQU 4 ;******************************************************************************** ;* KEYPAD.SCAN ;******************************************************************************** ;* ;* KEYPAD is an array of switches. To find the switch position that is ;* presently connected the array is swept to find the col, Row position ;* this is then converted to the keypad position and then to an ascii ;* number ;******************************************************************************** KEYPAD.SCAN.4x4.ASCII MOVLW KEYPAD_ROW_1 MOVWF PORTB BTFSS PORTB,KEYPAD_COL_1 RETLW '1' BTFSS PORTB,KEYPAD_COL_2 RETLW '2' BTFSS PORTB,KEYPAD_COL_3 RETLW '3' BTFSS PORTB,KEYPAD_COL_4 RETLW 'F' MOVLW KEYPAD_ROW_2 MOVWF PORTB BTFSS PORTB,KEYPAD_COL_1 RETLW '4' BTFSS PORTB,KEYPAD_COL_2 RETLW '5' BTFSS PORTB,KEYPAD_COL_3 RETLW '6' BTFSS PORTB,KEYPAD_COL_4 RETLW 'E' MOVLW KEYPAD_ROW_3 MOVWF PORTB BTFSS PORTB,KEYPAD_COL_1 RETLW '7' BTFSS PORTB,KEYPAD_COL_2 RETLW '8' BTFSS PORTB,KEYPAD_COL_3 RETLW '9' BTFSS PORTB,KEYPAD_COL_4 RETLW 'D' MOVLW KEYPAD_ROW_4 MOVWF PORTB BTFSS PORTB,KEYPAD_COL_1 RETLW 'A' BTFSS PORTB,KEYPAD_COL_2 RETLW '0' BTFSS PORTB,KEYPAD_COL_3 RETLW 'B' BTFSS PORTB,KEYPAD_COL_4 RETLW 'C' RETLW .0 KEYPAD.SCAN.4x4.DECIMAL MOVLW KEYPAD_ROW_1 MOVWF PORTB BTFSS PORTB,KEYPAD_COL_1 RETLW .1 BTFSS PORTB,KEYPAD_COL_2 RETLW .2 BTFSS PORTB,KEYPAD_COL_3 RETLW .3 BTFSS PORTB,KEYPAD_COL_4 RETLW .15 MOVLW KEYPAD_ROW_2 MOVWF PORTB BTFSS PORTB,KEYPAD_COL_1 RETLW .4 BTFSS PORTB,KEYPAD_COL_2 RETLW .5 BTFSS PORTB,KEYPAD_COL_3 RETLW .6 BTFSS PORTB,KEYPAD_COL_4 RETLW .14 MOVLW KEYPAD_ROW_3 MOVWF PORTB BTFSS PORTB,KEYPAD_COL_1 RETLW .7 BTFSS PORTB,KEYPAD_COL_2 RETLW .8 BTFSS PORTB,KEYPAD_COL_3 RETLW .9 BTFSS PORTB,KEYPAD_COL_4 RETLW .13 MOVLW KEYPAD_ROW_4 MOVWF PORTB BTFSS PORTB,KEYPAD_COL_1 RETLW .10 BTFSS PORTB,KEYPAD_COL_2 RETLW .16 BTFSS PORTB,KEYPAD_COL_3 RETLW .11 BTFSS PORTB,KEYPAD_COL_4 RETLW .12 RETLW .0