Gracias a los dos por las respuestas.
El programa lo he hecho en C (bueno casi todo), y se supone que el movimiento y direccionamiento de los registros los tiene que hacer correctamente. La parte que he escrito en assembler es tan simple que no tiene nada que ver, ya que solo se trata de rutinas de retardo y cuatro movimientos de registro. Lo que no se es si el compilador optimiza las posiciones de memoria para no tener que ir cambiando de banco, ya que si no es así, es posible que cada vez que lee o escribe en una variable esté cambiando de banco.
Lo del oscilador uso uno XT de 4Mhz(ya que mi PIC no da pa mas).
Estoy haciendo pruebas para ver por donde puede ir el problema. Pero lo veo bastante mal, ya que con cosas sencillas parece funcionar correctamente, mientras que si le hago hacer más complejas no tira.
Estoy pensando en pasar el código en asm, pero la verdad es que me da mucha pereza, ya que es bastante complejo y por esto lo hice en C por ser más cómodo.
Thanks !!!