Printf ocupa mas memoria de programa pues es una funcion de mucha mas potencia que el solo PUTC.
PUTC es como si en ASM le dieras la orden a la USART de transmitir un Byte. Printf es toda una funcion que te permite enviar varios caracteres uno tras de otro dentro una cadena de texto " ". para hacer lo mismo con PUT se debe implementar un FOR, tal cual como te lo mostro en el ejemplo MLO__. Ademas printf puede convertir (Dar formato) a un variable que se tenga en la memoria RAM y el resultado convertirlo a cadena de texto (Caracteres ascii) y enviarlos automaticamente.
Ejemplo.
Int8 Variable1=0x81;
Printf("%2x",Variable1);
lo anterios realiza la siguiente secuencia de operaciones:
toma Variable1, separa los 4 bits mas altos y los 4 mas bajos, lObtieniendo 8 y 1 por separado, luego pasa el 8 decimal a '8' ascii lo mismo con el 1 y luego lo transmite por el puerto serie.
Lo anterior es por haberle dicho que formateara en X es decir en hex...
Sicambiamos a:
Printf("%u",Variable1);
el resultado sera transmitir la cadena ascii "121" que es el equivalente de 0x81 a decimal.
Espero se entienda algo, si no me dicen y hablo un poco mas sobre el tema..
Conclusion: Es mejor usar PUTC cuando se quiere enviar un byte en especifico o una letra, en general solo un caracter (Comando).
PUTC para enviar cadenas de caracteres ascii y para enviar lo que contiene una variable de la RAM.
SALUDOS!!