Es correcto lo del clear_interrupt() me olvide.
Ese circuito es lo peor que podrias haber realizado, es mas no se que quisiste hacer. Tu problema ahora esta en el circuito.
Por que razon enviarias la señal al MCLR ? estarias reseteando el micro continuamente... Envia solo la señal a RB0. Ademas te das cuenta que estas enviando 12V al pin de entrada del PIC y al MCLR? Y lo que es peor SIN resistencia entre medio lo del RB0 ? , Ese circuito solo pide a gritos que se queme el PIC
Hubiera sido mas simple:
- una resistencia a VDD ( 5V ) en el MCLR,
- una resistencia 10K a Rb0 + switch + señal. Todo en serie.
Y listo, solo tomo 2 resistencias y tenes funcionando tu circuito. Pero realmente no se que quisiste hacer ahi.
A pesar que supuestamente tenes alta impedancia en la entrada del PIN, esa resistencia de 10K te va a servir si es que pones una fuente de 12V, ya que el resto de voltaje se va a recortar por los diodos de clamping del mismo micro, y esa resistencia va a limitar la corriente que atravizen por los mismos, no destruyendo el pin/puerto/PIC, aunque deberias intentar que la señal de entrada sea de maximo 5V
Si quisieras usar el MOSFET, entonces podrias activar las resistencias de Pull-up del PORTB, o agregar una resistencia a 5V desde Rb0 y el mosfet que lo conecte a GND. Aunque creo que no tiene sentido gastarse en un MOSFET, a no ser que tengas una buena razon para hacerlo.
Tampoco entiendo por que esto esta en el foro de dsPIC