Bruno, van posibles causas que se me ocurren para que funcione con el botón pero no con el teclado:
- que esté mal seleccionada la entrada del multiplexor con SW[8]. Seguirían mirando BUTTON[2] y SW[0] en lugar de los pines del conector PS2.
- que estén ignorando la nota "Los puertos PSDAT_O y PSCLK_O deben inicializarse a nivel alto" que está en el recuadro en la parte (a). Si uno de estos puertos de salida queda en cero, en el puerto de entrada correspondiente van a leer siempre 0 aunque el teclado ponga esa señal a 1.
- que estén intentando ejecutar el programa paso a paso, o con algún breakpoint que detenga la ejecución antes que se complete la recepción. El teclado manda sus datos serie a su propia velocidad, no espera si el programa se detiene en un breakpoint.
- que cuando probaron con el pulsador no hayan emulado correctamente el formato de la palabra. Revisen. Cuando prueben con el teclado, si la subrutina no retorna puede ser que estén esperando un bit de más. Interrumpan con SW[9] y vean qué recibieron hasta ese momento. Si retorna, vean que recibieron. A partir de eso traten de deducir qué está pasando.
julio