Thus, eliminating the dependency of the osc with pulsin.
Well, SOMETHING has to be dependant on osc if you want to measure absolute time... pulsin is as good as any I suppose. There's a bunch of different ways of doing this, but since you know the code can work, give it a shot.
I'd take Burt's suggestion and hook up the Pickit2 and use the logic analyzer function. If you set a pin high/low around the calls to pulsin, you can see when you're sampling/what you're actually measuring wrt the sensor's output.
You want to give yourself some leeway since the sensor output isn't always going to be spot on. For example the 'if ip > 70' test checks for a high signal of roughly 43us, and says that must be a '1'. Since a '0' is 26-28us high, 43us is way longer than a '0' should be, so that's probably good enough. It never really checks for a '70us logic 1'.
I forgot to add - if you do use the pickit2 LA function, make sure to use CH3 (AUX, pin 6) to measure the sensor data signal.
The other two channels (CH1 and CH2) have internal 4.7K pulldowns in the pickit2, so they won't work with the open-drain data signal and it's pullup. It would screw up the logic high level and you'd see ~2.5V
Dim ip As Byte 'hi pulse from sensor
Dim temp As Byte
Dim hum As Byte
Dim chksm As Byte
Dim temp1 As Byte
Dim hum1 As Byte
Dim temp2 As Word
Dim hum2 As Word
Dim test As Byte
Dim i As Byte
DelayMS 1000 'give sensor time to settle