MOSFETs have a huge gate capacitance. Also it takes a large amount of charge to get the gate past its turn-on voltage. It is almost like an infinite capacitor, wth the voltage hardly changing for a while as current goes into the gate.
Because of that, the pin won't read high for a long time after the program has driven it high.
I would avoid all bsf or bcf operations on the port. That is because those commands read the port, modify one bit, and then write to the port. If one pin on the port is trying to go high, but is actually low, then doing a bsf/bcf on any pin on that port, will clear the pin that is being dragged low.
You need to write bits to a shadow register, then move that to the port.