Hola Marta.
La tabla 2 está demás, porque es idéntica a la tabla 1, o la has copiado mal y tendría que estar opuesta a la tabla 1, o sea, que empiece desde el nueve al cero.
Hay otro error que se repite en la segunda parte del programa. Es la parte que analiza si pasaron los números del 1 al 9. Por la forma en que está diseñado el software, nunca saldrá de la primera parte. Además no incrementas el contenido de W por lo que cada vez que pulse el pulsador, siempre mostrará el cero.
Otro concejo, es que utilices una demora de 5 milisegundos después de detectar la pulsación, para evitar detectar un rebote del pulsador. Como la rutina es corta y de seguro trabajará a 4Mhz, la rutina tardará muy, muy poco y de seguro detectará un rebote.
Una consulta, el display de 7 segmentos, ¿va conectado directamente a la salida del pic o va con un decodificador?