No he tenido que leer el valor de un pin que está configurado como salida, porque al estar configurado como salida es el programador el que decide qué valor tiene, y por lo tanto se mantiene ese valor hasta que el programador en su algoritmo decida el cambio.
Un pin que está configurado como salida pertenece a un puerto, ese puerto está representado por una dirección de memoria que se puede tanto leer como escribir, el problema que se plantea es que si se realiza una lectura de un pin que está configurado como salida, el valor de lectura será el que se escribió en última instancia, si dicho pin por motivos externos fuera forzado al valor contrario se podría producir un daño en el puerto, y por supuesto este valor no quedaría reflejado en la dirección de memoria del puerto. El tiempo que tarda un puerto en cambiar de valor mediante su instrucción interna asociada tan solo es la de 4ciclos de reloj, y posiblemente haya que sumar el tiempo que la puerta de salida cambia de valor, que será un tiempo muy inferior a 100nSeg. posiblemente estará sobre los 20nSeg.
Para saber realmente el valor que tiene el pin de salida puedes unirlo a otro configurado como entrada para así leer el valor.
Si lo lees por medio del CCS y no lo tienes configurado, por defecto seguramente al compilar el lenguaje te configurar el pin como entrada y posteriormente se devolverá el valor de su lectura, por lo tanto el pin durante ese tiempo estará configurado como entrada o estado de alta impedancia, aunque el tiempo sea muy pequeño esto podría causar problemas en tu circuito.
De todas formas tengo curiosidad por saber si hay otro método si es que entendí correctamente la pregunta.