Gracias, a todos
Lo que pasaba es que habia puesto mal las Resistencias de Vcc, las habia conectado a los 4 pines no eran pq estaba entendiendolo al reves. Ahora ya va
He partido de la libreria de VsZeNeR, la "KBD4x4ABCD_PROTEUS.C" para teclados 4x4. Que se usa en portb con pullups.
Lo que he he hecho ha sido cambiar la direccion de memoria de la variable en la libreria para que valla en puerto C
#byte kbd_port_b = 0xF82 Dir de memoria en 18F248 para el puerto C
Comentar las lineas que activaban y desactivaban las pullups y ponerlas externas en el portC. El programa en Picc parte de uno de los hilos de ejemplos de VsZeNeR, sin los cuales esto seria mucho mas complicado.
Voy a subir los archivos proteus y la libreria modificada, por si algun otro novato le psaba algo parecido y le pueda servir de ayuda, gracias.
La duda me viene ahora de cómo conectar el LCD, acepto sugerencias. Tengo el teclado en el puerto C. En el puerto B ocupo B.2 y B.3 para el CAN bus, en el puerto A de momento libres RA0 a RA5.
Mi idea era poner D0 a D7 del LCD compartidas con teclado en puerto C (ahun no tengo claro como) . Y las de control en Puerto B mismo, junto con algunos leds de estado.