Ese es el problema, que gets finaliza cuando le llega el salto de carro, pero como puts también envía el LF(10), cuando vuelves a hacer gets en tu bucle, lo primero que recibe ese LF(10) que antes no recibistes. Por eso no se te enciende el pin B0 hasta la segunda vez que pasa el bucle.
Y sí, supongo que es cosa del compilador CCS.
Saludos!!