Imagino que hay que diferenciarlas segun su uso.
* Si es una salida y no es colector abierto no se por que usaria una resistencia de pull-up, ya que el pin del micro tendria GND o VCC (Obviamente debo respetar la corriente maxima que puede manejar el mismo ).
* Ahora una entrada si pondria una resistencia de pull-up o utilizaria la resistencia de pull-up/pull-down del puerto. Un boton que tiene un terminal al pin y otro a GND, mientras no este presionado el pin de entrada esta a la merced de todo tipo de ruido (no se encuentra ni en VCC ni en GND), si le pones la resistencia de pull-up le definis un estado, en este caso un 1.
Cuando es salida en el ejemplo de un led esta muy claro, en la linea de comunicacion por ejemplo un SPI en el pin de recepcion el 0 lo pone el que transmite, por lo tanto esta en un estado definido.
pero según me ha parecido leer los pines de los micros están diseñados para alimentar hasta una cierta demanda de corriente, si se supera la demanda o está muy al límite el pin se podría romper
Tienen un limite, y cada micro es distinto, el 16F887 (Maximum output current sourced by any I/O pin : 25 mA ), y tambien tiene un limite de todos los puertos. Y tambien tiene un limite la resistencia de pull-up ( en caracteristicas electricas esta todo )
El dsPIC33Fj32mc204 ( Maximum output current sourced by any I/O pin(3) : 4 mA ) este trabaja a 3.3V
Despues me toco que en un integrado de TI (ARM Cortex-M4F) tiene un registro para controlar la fuerza del driver ( driver strength ) para poder poner 2/4/8/16mA o no se si alguno mas.
Y para soportar mas carga necesitas de un driver que pueda poner a 1 o 0 la salida y lo soporte, por eso se termina usando BJT, ULN2003 , entre otros. Por mas que pongas una resistencia que soporte la corriente que consume el dispositivo si eel driver no lo soporta el pin murio xD. Una equivalencia burda seria, por que pondrias un transistor que soporta 1A si pasan 2A, para eso pones uno de 2A+, pero lametablemente en el micro no lo podes cambiar a eso