const int Numeros[10]={0b00000000, 0b00000001, 0b00000010, 0b00000011, 0b00000100, 0b00000101, 0b00000110, 0b00000111, 0b00001000, 0b00001001};
Eso que hiciste ahi no tiene sentido ( al menos como tenes el circuito!!! OJO ), por que si lo pasas a decimal es 0,1,2,3,4,5,6,7,8,9 , tendria sentido si es cada bit maneja un segmento o en que tengas bits separados, pero como tenes un conversor binario-7segmento y comenzas desde el bit0 no hace falta, simplemente usas el numero.
output_b( 9 );
output_b( 7 );
output_b( 8 );
output_b( 2 );
O lo dejas como lo tenes en el caso que necesites cambiar los pines.
Procura poner el set_timer en la interrupcion al comienzo, asi de esa forma apenas entra ya le asigna un valor y el tiempo es mas constante y no depende de lo que tengas de codigo en la interrupcion.
-------------------------------------------------------------------
Ahora si con la resolucion de problemas....
Las salidas del puerto B esta bien, ya que muestra correctamente los demas.
Las salidas del puerto A parecen correcta, o por lo que parece el unico que no cambia es el pin RA3, todos los demas lo hacen y por eso estan mostrando valor.
El programa esta correcto, es el mismo metodo que usas con las otras salidas y funciona.
¿Por que la ultima no funciona?
Mirando el datasheet me encuentro que RA3 tiene una funcion del modulo de comparador analogico ¿puede ser esta la causa?
proba poner un:
setup_comparator (NC_NC_NC_NC);
en tu setup() y ver si funciona. Otra cosa no parece ser. Ya que todo lo demas parece correcto.