Ahora mirando el codigo se por que no te funciona. Y no te funciona por que realmente no tenes nada realizado.
Es como que crees que mandandole un pulso al sensor y poniendo el pin como entrada , los valores van a estar magicamente en W. Y eso no ocurre asi..
Es mucho mas complejo que eso. Ademas tenes que tener en cuenta que es una comunicacion con colector abierto o alta impedancia, ya que es un solo pin. y JAMAS de los JAMAS deberias poner tu pin como salida
a 1, si como salida pero a 0 o como entrada ( alta impedancia ).
Leyendo el datasheet del DHT11 lo primero que dice es: Al darle alimentacion esperar 1 segundo antes de realizar la primera lectura. Lo cual jamas se espera.
Por otra parte la comunicacion la inicia el PIC poniendo el pin a 0 por un tiempo (deberia estar en alta impedancia - entrada hasta este momento me refiero para ponerlo a 0) y luego ponerlo como entrada y ver lo que llega.
Lo que llegan son 40 bits. pero estos bits no es tan facil como leer si es uno o cero. vienen "codificados".
Lo primero que llega como respuesta del sensor es.. un pulso bajo y luego alto indicando que el sensor va a transmitir. Seguido de eso cada bit viene representado por un pulso bajo y luego un pulso alto. Para saber que valor tiene ese bit. Hay que medir cuanto tarda el pulso alto.
El pulso bajo siemrpe es de 50us, y luego el alto depende, si es de 26/28us significa que es un 0 y luego comienza el otro bit, pero si tarda 70us significa que es un 1. Cuando recibas todos los bits, los 40, deberias verificar si lo que llego es correcto.
8 bits de humedad : 8 bits de humedad : 8 bits de temperatura : 8 bits de temperatura : 8 bits de paridad
Sumando los 8 +8 de humedad mas los otros 8 + 8 de temperatura te deberian dar igual a los de paridad. Sino hay un error y deberias de tirar la lectura
Comprobado esto, ya tenes tus bits de forma correcta en tu PIC. Y podes mostrarlo ahora si.
Datasheet del DHT11 donde explica esto:
http://akizukidenshi.com/download/ds/aosong/DHT11.pdf