Prueba el programa con las siguientes modificaciones (las que están comentadas en negrita).
Si agregas " enable=PIN_B5 " a la definición del " #use rs232 " el C se encarga de agregar código que maneje el PIN B5 para enviar y recibir datos, aunque por el momento solo envías conviene preveer una ampliación del programa
Al HardWare no le encuentro ningún problema, pero en el programa que posteaste antes, estaba el pin B5 siempre a 0, por lo que nunca se transmitiría ningún dato, como te sugirió Maunix.
Si modificas el programa como te indiqué, puedes olvidarte de la habilitación del driver 485.
Cualquier duda pregunta y vemos que podemos hacer
Saludos y espero haberte ayudado.
Sergio
#include <16F877.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz)
#FUSES NOPUT //No Power Up Timer
#FUSES PROTECT //Code protected from reads
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,bits=8,stop=1,xmit=PIN_C6,rcv=PIN_C7,enable=PIN_B5,errors)
//enable=PIN_B5 hace que el C maneje el pin de habilitaciónstatic int y=5;
void main (void)
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
//set_tris_c(0b000000);
// output_LOW(PIN_C5); //esta línea no es necesaria dado que el C maneja el pin de habilitaciónwhile(TRUE)
{
printf("temperatura=%u ", y);
delay_ms(500); // espera por ejemplo 0,5 seg para enviar nuevamente el dato,
// sino puedes generar un overflow en el buffer de recepción de la PC}
}