Revisado el comienzo. De momento todo OK.
Aunque..................................

Un par de consejillos:
1º Despues de definir los puertos has colocado un "NOP" me imagino que sera un pequeño retraso para que se estabilicen las señales. Perfecto, aunque mejor seri añadir un bloque de retardo como los que tienes puestos de 6msg. De esa forma si con un "NOP" no es suficiene podrias poner un tiempo mas a medido.
2º Deberias de darle nombre a cada uno de los pines de los puertosy tabajar con ellos, de esa forma cuando estas realizando/revisando el programa lo tienes mas legible y sabes que es lo que hace en cada momento. Por ejemplo:
Para ala entrada de RB5 llamarle subir_Volumen( o lo que quieras) y asis a todos los pines.
¿Sabes hacerlo?
Se realiza con "control+B" buscas el registro, deseado, en este caso el port_B, seleccionas con"enter" el bit quieras cambiar el nombre y seguir los mensajes que te salen hasta el final.
Esto lo puedes realizaren cuarquier momento del desarrollo del programa, ya que cuando cambias un nombre de bit, Niple te lo actualiza en todo el programa.
Voy a cambiar lo que has posteado a ver si te paree mas claro...........................
F.