El tema de zerar la cuenta, lo hice en la primera instrucción dentro del while, colocando un breakpoint y cerando cada vez que se detiene. Haciendo la medición desde el Set_Timer0, la diferencia es pequeña (adjunto imagen)
Para recibir el valor de tiempo de ciclo en la PC, agregue un printf despues del bucle for:
while (1)
{
CycleTime = 0;
ContadorGlobal = 0;
set_timer0(0);
//delay_ms(30);
printf(" %f ", cycleTime);
for (cuenta=400000; cuenta != 0; cuenta--);
CycleTime=(float)(0.0000512*get_timer0()+0.0131072*contadorglobal);
printf(" %f ", cycleTime); //Valor de tiempo de ciclo enviado a la PC
}
Cuando mido en el simulador, dejo el ultimo printf como comentario.
La configuración de del puerto que uso, para el PIC16F876A, es la siguiente:
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) //establezco el protocolo de comunicación RS232 a través del MAX232, usando el PIN_A1 para transmitir al PC y el PIN_A2 para recibir desde el pc
Como te comente anteriormente, las mediciones son las mismas, hasta el momento en el que agrego el printf para comunicación.