Probalo en un protoboard.
Proba hacer una rutina de 1seg prende 1seg apaga.
Tenes que deshabilitar el perro guardian y ver el tema de MCLR dejalo por default(OFF) y metele un cable a + no una Resistencia, empeza usando un XTAL de 4mhz
En otro ambito de cosas, no entiendo porque lees el puerto completo.
Si no te queda otra cosa que hacerlo, almacena el puerto en una variable
Luego usa la variable para comparar o lo que sea. No leas el puerto tantas veces ni una vez tras otra.
Para evitar estados locos en lo que no me interesa hago lo siguiente
Checkstatus:
Varaux3=PORTX
Varaux2=VarMaskOfZorro | Varau3 'Operacion Or Puertab Y Mascara
If Varau2=VarMaskOfZorro Then Varau2=0
delayms 100
Return
VarMaskOfZorro seria el estado de 0 de la puerta que me interesa los 1 no me interesan
Y luego trabajo sobre la variable no sobre el puerto. Lee el datasheet y el documento de los midrange.
En proteus simula bien porque hace caso omiso a esas pequeñeces porque es una pequeñez.
Saludos y postea los resultados o siguientes preguntas.