todo lo que nesecitas esta en este link
http://miarroba.com/foros/ver.php?foroid=8826&temaid=4180638&pag=5cualquier cosa me avisas, me envias un privado
pero sin embargo aqui te dejo la rutina del teclado
"************************************************************************
" RUTINA PARA LEER EL TECLADO: devuelve el valor de la tecla pulsada
"en el teclado en valor ASCCII.
"************ PUEDE SER USADA EN CUALQUIER PROGRMA PBP **************
" PARA LEER UN TECLADO MATRICIAL 4 X 4
" .....................by Batman123
"************************************************************************
teclado:
OPTION_REG=0
TRISB = %11111110 " Defino el puerto B como salida
low portb.0 " Defino el pin B0 en baja señal 0
if portb = $EE then uno " Escaneo si se pulso la tecla 1
if portb = $DE then cuatro " Escaneo si se pulso la tecla 4
if portb = $BE then ciete " Escaneo si se pulso la tecla 7
if portb = $7E then asterisco " Escaneo si se pulso la tecla *
TRISB = %11111101 " Defino el puerto B como salida
low portb.1 " Defino el pin B1 en baja señal 0
if portb = $ED then dos " Escaneo si se pulso la tecla 2
if portb = $DD then cinco " Escaneo si se pulso la tecla 5
if portb = $BD then ocho " Escaneo si se pulso la tecla 8
if portb = $7D then cero " Escaneo si se pulso la tecla 0
TRISB = %11111011 " Defino el puerto B como salida
low portb.2 " Defino el pin B2 en baja señal 0
if portb = $EB then tres " Escaneo si se pulso la tecla 3
if portb = $DB then seis " Escaneo si se pulso la tecla 6
if portb = $BB then nueve " Escaneo si se pulso la tecla 9
if portb = $7B then numeral " Escaneo si se pulso la tecla #
TRISB = %11110111 " Defino el puerto B como salida
low portb.3 " Defino el pin B3 en baja señal 0
if portb = $E7 then aa " Escaneo si se pulso la tecla A
if portb = $D7 then bb " Escaneo si se pulso la tecla B
if portb = $B7 then cc " Escaneo si se pulso la tecla C
if portb = $77 then dd " Escaneo si se pulso la tecla D
goto teclado " Si no nay tecla pulsada regresa a
" escanear nuevamente el puerto.
asterisco " Rutina para asignar el valor
tecla="*" " en ASNII a la variable tecla
return " comando para regresar al llamado
ciete:
tecla="7"
return
cuatro:
tecla="4"
return
uno:
tecla="1"
return
dos:
tecla="2"
return
cinco:
tecla="5"
return
ocho:
tecla="8"
return
cero:
tecla="0"
return
tres:
tecla="3"
return
seis:
tecla="6"
return
nueve:
tecla="9"
return
numeral:
tecla="#"
return
aa:
tecla="A"
return
bb:
tecla="B"
return
cc:
tecla="C"
return
dd: " Aca termina la asignacion de los
tecla="D" " valores a la variable tecla
return
suerte