Autor Tema: cual es la direrencia entre printf y putc?  (Leído 7733 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado CEAUGO

  • PIC10
  • *
  • Mensajes: 13
cual es la direrencia entre printf y putc?
« en: 18 de Mayo de 2008, 17:21:59 »
Hola a todos....tengo una inquietud y perdonen si es muy boba..... estoy aprendiendo a enviar datos por #use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7), pero en los ejemplos que he visto he notado, dos formas de enviar el dato.

printf("%ld",temperatura);       printf y putc solo envia 8bits??
putc(temperatura);

cual es la diferencia entre estos, uno envia datos es ascii??? y el otro en binario???, si yo deseara enviar datos del micro al pc cual utilizo???...Muchas gracias por sus respuestas y atencion...

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: cual es la direrencia entre printf y putc?
« Respuesta #1 en: 18 de Mayo de 2008, 17:40:35 »
Hola.

Ninguna duda es lo suficientemente boba si nos coloca a pensar.
En el manual del CCS estan las definiciones de las funciones:

PUTC:
putc (cdata)
cdata is a 8 bit character
This function sends a character over the RS232 XMIT pin.  A #USE RS232 must appear before this call to determine the baud rate and pin used.  The #USE RS232 remains in effect until another is encountered in the file.


PRINTF :
printf (string)
String is a constant string or an array of characters null terminated.
Outputs a string of characters to either the standard RS-232 pins (first two forms) or to a specified function.  Formatting is in accordance with the string argument.  When variables are used this string must be a constant.  The % character is used within the string to indicate a variable value is to be formatted and output.  Longs in the printf may be 16 or 32 bit.  A %% will output a single %.  Formatting rules for the % follows


Y, ademas hay unos ejemplos para que la diferencia sea mas apreciable.


byte  x,y,z;
printf("HiThere");
printf("RTCCValue=>%2x\n\r",get_rtcc());
printf("%2u %X %4X\n\r",x,y,z);



putc('*');
for(i=0; i<10; i++)
   putc(buffer);

putc(13);


Saludos
El papel lo aguanta todo

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: cual es la direrencia entre printf y putc?
« Respuesta #2 en: 18 de Mayo de 2008, 18:17:56 »
entonces según entiendo yo el put c solo puede colocar un caracter

y el printf caracteres y cadenas
.

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: cual es la direrencia entre printf y putc?
« Respuesta #3 en: 18 de Mayo de 2008, 19:22:34 »
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!!


Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: cual es la direrencia entre printf y putc?
« Respuesta #4 en: 18 de Mayo de 2008, 19:49:22 »
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.

Fe de erratas: PICmouse seguramente habra querido decir:

Citar
Conclusion: Es mejor usar PUTC cuando se quiere enviar un byte en especifico o una letra, en general solo un caracter (Comando).

PRINTF para enviar cadenas de caracteres ascii y para enviar lo que contiene una variable de la RAM.

Saludos a todos.
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."

Desconectado CEAUGO

  • PIC10
  • *
  • Mensajes: 13
Re: cual es la direrencia entre printf y putc?
« Respuesta #5 en: 18 de Mayo de 2008, 20:45:12 »
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.

Fe de erratas: PICmouse seguramente habra querido decir:

Citar
Conclusion: Es mejor usar PUTC cuando se quiere enviar un byte en especifico o una letra, en general solo un caracter (Comando).

PRINTF para enviar cadenas de caracteres ascii y para enviar lo que contiene una variable de la RAM.

Saludos a todos.
-------------------------------------------------------------------------------------------------------------------
Muchas gracias por la explicacion..... entonces puedo decir esto y si me equivoco porfa corrigamen... yo puedo obtener una conversion adc y enviarla completamente con el PRINTF y este valor es en ascii y lo puedo enviar directamente al pc???, y en tonces si yo mando con putc solo puedo enviar 8bits y estos no estan en ascii asi que los deserara enviar a mi pc los debo transformar en ascii???, perdon si digo algo indevido...y muchas gracias...

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: cual es la direrencia entre printf y putc?
« Respuesta #6 en: 18 de Mayo de 2008, 21:07:11 »
Hola.

La cuestion seria asi:

Si envias el resultado del adc configurado a 8 bits con putc, en el hyperterminal de Windows veras algun caracter ( correspondiente al codigo ascii ) y si usas el printf para enviar el dato, veras en el hyperterminal el string correspondiente.

Ejemplo:

Si el valor es value_adc = 48, entonces:
putc(value_adc); -> se vera en el hyperterminal "0"
printf("%u", value_adc); -> se vera en el hyperterminal "48"

Tu mismo colocaste el mejor ejemplo para explicarlo!!!!!!  :-/

Saludos
El papel lo aguanta todo

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: cual es la direrencia entre printf y putc?
« Respuesta #7 en: 19 de Mayo de 2008, 11:42:59 »
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.

Fe de erratas: PICmouse seguramente habra querido decir:

Citar
Conclusion: Es mejor usar PUTC cuando se quiere enviar un byte en especifico o una letra, en general solo un caracter (Comando).

PRINTF para enviar cadenas de caracteres ascii y para enviar lo que contiene una variable de la RAM.

Saludos a todos.

Tas en lo Correcto, queria decir Printf en el segundo parrafo.. :mrgreen:


 

anything