Hola, respecto del codigo.
En ese código que has subido, elimina los
set_tris_b(0x00);
set_tris_a(0x02);
porque el compilador solo se ocupa de configurar esas cuestiones según se requiera.
Respecto del código. Es cierto lo que dice AleSergi, si no se usa la directiva #use fast_io no es necesario usar las instrucciones set_tris_x(); ya que el compilador internamente se ocupa de efectuar las convertir los puertos de entrada a salida o viceversa según la necesidad.
Aquí
temp=valor*0.488;
mezclas zanahorias con papas, Todos los valores deben ser int, tenes uno decimal.
temp=valor*0.488, donde:
temp es tipo entero
valor es tipo entero. Tenemos que: valor*0.488 da como resultado un tipo flotante (la conversión es implícita)
al asignar ese resultado (flotante) a una variable tipo entro solo trasfiere la parte entera del valor y la parte decimal es desechada y también es una conversión implícita. También podría haberse escrito como:
temp=(int)(valor/0.488); o también como: temp=(int)((float)(valor)/0.488); pero el resultado sería el mismo.
digito1=temp/10;
digito2=temp-10*digito1;
existe el operador % que facilita las cosas.
Es cierto sería más fácil hacer: digito2=temp%10; ya que con esta operación se obtiene el residuo de la división.
output_b(0b00010000|digito1);
output_b(0b00100000|digito2);
aqui no entiendo que pretendes hacer...
basta con sumarlos.
0b00010000|digito1 tiene por objeto enviar digito1 en el nible inferior y a su vez "encender" el display correspondiente a digito1, para digito2 es el mismo caso.
Para este caso da lo mismo hacer 0b00010000|digito1 (suma lógica) que 0b00010000+digito1(suma aritmética), el resultado es el mismo.
Respecto del esquema.
Veo que el pin MCLR del pic está al aire y como en los #fuses no está especificado si se puede usar como pin de entrada o salida entonces tienes que conectar ese pin a +5v.
Es obvio y en proteus no muestra los pìnes de alimentación de los circuitos digitales (porque se supone que están alimentados) pero te convienen revisar que existan los +5v en el pin de +vdd y los 0v en el pin de vss del pic "uno nunca sabe pero ese detalle suele causar problemas".
Un error que veo en el esquema es los resistores, estos están mal, los resistores deben ir en serie a la base del transistor, el modo en que tienes conectados los resistores podría causar que se dañen los pines de salida del pic.