Pues unas patillas del pic las conectarias a las columnas que serian las entradas y las demás a las filas mediante una resistencia de unos 2k2 q serían las salidas.
Las resistencias es para poder compartir el puerto del pic independientemente del teclado y de paso puedes meterle un lcd si quieres.
el codigo mas o menos sería así: este es para un teclado de 4x4
|---|---|---|---|
; RB4 <-- | 1 | 2 | 3 | F|
; |---|---|---|---|
; RB5 <-- | 4 | 5 | 6 | E|
; |---|---|---|---|
; RB6 <-- | 7 | 8 | 9 | D|
; |---|---|---|---|
; RB7 <-- | A | 0 | B | C|
; |---|---|---|---|
;
; ^ ^ ^ ^
; | | | |
; RB0 RB1 RB2 RB3
Key_Scan: bsf STATUS,RP0
movf TRISB,W
bcf STATUS,RP0
movwf TRISB_Temp
bsf STATUS,RP0
movlw b"11110000"
movwf TRISB
bcf STATUS,RP0
movlw 4
movwf Key_1
movlw b"11110111"
movwf Tecla
Key_Scan_1: movf Tecla,W
movwf PORTB
nop
movf PORTB,W
movwf Key_2
subwf Tecla,W
btfss STATUS,Z
goto Key_Scan_2
bsf STATUS,C
rrf Tecla,F
decfsz Key_1,F
goto Key_Scan_1
movlw 0x80
movwf Tecla
Key_Scan_5: movf TRISB_Temp,W
bsf STATUS,RP0
movwf TRISB
bcf STATUS,RP0
return
Key_Scan_2: movlw .20
movwf Key_Delay_1
Key_Scan_3: clrf Key_Delay_2
Key_Scan_4: clrwdt
decfsz Key_Delay_2,F
goto Key_Scan_4
decfsz Key_Delay_1,F
goto Key_Scan_3
movf Key_2,W
movwf Tecla
call Key_BCD
goto Key_Scan_5