Si desea configurar LATB6 y luego esperar hasta que RB14 esté alto antes de continuar, entonces no desea un bucle de "do-while". Te gustaría algo como esto:
LATBbits.LATB6 = 1; //set LATB6
while(PORTBbits.RB14 == 0); //wait until RB14 is HIGH
LATBbits.LATB6 = 0; //execute other code
No entiendo bien por qué tienes LATBbits.LATB6 = 1
dentro de un bucle do-while. Mientras que en teoría hace lo mismo, solo desperdicia tiempo y recursos. Mantiene la configuración de LATB6 una y otra vez hasta que RB14 está en ALTO, pero no es necesario mantener la configuración de LATB6 en el mismo valor: mantiene su estado anterior.
Probablemente este no sea tu problema. Espero que su problema sea que no ha desactivado el ADC (convertidor analógico-digital). RB14 comparte un pin con AN10 (entrada analógica 10). Algunas fotos están predeterminadas en la entrada analógica, que no es lo que quieres. debe deshabilitar activamente el ADC para que RB14 sea una entrada digital.