Echa un vistazo a esto:
(CortesíadeMicrochip: enlace )
Lo siento por las fuentes desordenadas.
Cuando configura un puerto como salida, WR_TRIS es cero, por lo que los valores de P y N están controlados por el valor que escriba en WR_PORT.
Si configura el valor en lógica 0, la N está activada, reduce la corriente de hundimiento de salida de su resistencia externa, pase lo que pase con su botón.
Si lo configura en 1, la P está activada, y si presiona el botón, en teoría está acortando Vdd a Vss, que es una cosa mala \ $ ^ \ text {(C)} \ $.
El transistor de salida puede soportar una corriente máxima antes de la explosión, pero generalmente está protegido. Si, digamos, el puerto de salida puede generar / hundir un máximo de 20 mA, si el MOS está protegido, es decir, la corriente está limitada a 20 mA, tendrá un flujo de 20mA en la P, a través del botón, a Vss. Espero que la resistencia del botón sea muy baja, en el rango de 100 m \ $ \ Omega \ $, por lo que el voltaje de salida sería bajo, es decir, el botón gana.
Si el transistor no está protegido, probablemente explotará. Sin embargo, esto depende de su fuente de alimentación: si se limita actualmente a un valor seguro, no pasa nada y el botón aún gana, de lo contrario, ignore el puerto micro.
Para resumir: no establezca como salida un puerto que siempre debería ser una entrada.