TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Medusa en 21 de Agosto de 2009, 14:00:04

Título: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
Publicado por: Medusa en 21 de Agosto de 2009, 14:00:04
Hola,   :lol: quisiera saber cual es la diferencia entre  PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ) y cuando se debe usar
Título: Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
Publicado por: ppyote en 22 de Agosto de 2009, 20:52:06
todo esto esta sacado del manual del ccs,,, espero que te quede algo mas claro....

c = GETC()
c = GETCH()
c = GETCHAR()
Estas funciones esperan un carácter por la patilla RCV del dispositivo RS232 y retorna
el carácter recibido.
Es preciso utilizar la directiva #USE RS232 antes de la llamada a esta función para que
el compilador pueda determinar la velocidad de transmisión y la patilla utilizada. La
directiva #USE RS232 permanece efectiva hasta que se encuentre otra que anule la
anterior.
Los procedimientos de I/O serie exigen incluir #USE DELAY para ayudar a sincronizar
de forma correcta la velocidad de transmisión. Recordad que es necesario adaptar los
niveles de voltaje antes de conectar el PIC a un dispositivo RS-232.
Ejemplo:
printf("Continuar (s,n)?");
do {
respuesta=getch();
} while(respuesta!='s'&& respuesta!='n');

GETS(char *string)
Esta función lee caracteres (usando GETC()) de la cadena (string) hasta que encuentra
un retorno de carro(valor ASCII 13). La cadena se termina con un 0.
Ejemplo:
Véase la función GET_STRING en el archivo INPUT.C.

PUTC()
PUTCHAR()
Estas funciones envían un carácter a la patilla XMIT del dispositivo RS232. Es preciso
utilizar la directiva #USE RS232 antes de la llamada a esta función para que el
compilador pueda determinar la velocidad de transmisión y la patilla utilizada. La
directiva #USE RS232 permanece efectiva hasta que se encuentre otra que anule la
anterior.
Ejemplo:
if (checksum==0)
putchar(ACK);
else
putchar(NAK); // NAK carácter de respuesta negativa

  PUTS(string)
Esta función envía cada carácter de string a la patilla XMIT del dispositivo RS232. Una
vez concluido el envío de todos los caracteres la función envía un retorno de carro CR
o RETURN (ASCII 13) y un avance de línea LF o LINE-FEED (ASCII 10).
Ejemplo:
puts( " ---------- " );
puts( " | HOLA |" );
puts( " ---------- " );

PRINTF([function], string, [values])
La función de impresión formateada PRINTF saca una cadena de caracteres al
estándar serie RS-232 o a una función especificada. El formato está relacionado con el
argumento que ponemos dentro de la cadena (string).
Cuando se usan variables, string debe ser una constante. El carácter % se pone dentro
de string para indicar un valor variable, seguido de uno o más caracteres que dan
formato al tipo de información a representar.
Si ponemos %% obtenemos a la salida un solo %. El formato tiene la forma genérica
%wt, donde w es optativo y puede ser 1,2,...,9. Esto es para especificar cuántos
carácteres son representados; si elegimos el formato 01,...,09 indicamos ceros a la
izquierda, o también 1.1 a 9.9 para representación en punto flotante.
t es el tipo de formato y puede ser uno de los siguientes:
C Carácter
U Entero sin signo
x Entero en Hex (en minúsculas)
X Entero en Hex (en mayúsculas)
D Entero con signo
%e Real en formato exponencial(notación científica)
%f Real (Float)
Lx Entero largo en Hex (en minúsculas)
LX Entero largo en Hex (en mayúsculas)
Lu Decimal largo sin signo
Ld Decimal largo con signo
% Simplemente un %
Ejemplos:
byte x,y,z;
printf (" Hola ");
printf("RTCCValue=>%2x\n\r",get_rtcc());
printf("%2u %X %4X\n\r",x,y,z);
printf(LCD_PUTC, "n=%c",n);
Título: Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
Publicado por: gera en 23 de Agosto de 2009, 01:13:27
Me gustaria acotar una cosa:
getch, getchar, putch, y todas esas no son estandares de C, por lo tanto conviene usar getc() y putc() si nos interesa q nuestro programa sea portable.
saludos!!!
Título: Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
Publicado por: Medusa en 24 de Agosto de 2009, 10:43:47
Gracias por la aclaracion...
Título: Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
Publicado por: Suky en 24 de Agosto de 2009, 12:52:10
fprintf se utiliza cuando se tiene 2 o mas lineas de comunicación, para enviar una trama indicando el stream que la identifica:

Código: C
  1. #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8, stream=PC)
  2. #use rs232(baud=9600,parity=N,xmit=PIN_C5,rcv=PIN_C4,bits=8,stream=Dispositivo)
  3.  
  4.  
  5. fprintf(Dispositivo,"%02u-%f\r\n",....);
  6. fprintf(PC,"Enviando..\r\n");


Saludos!
Título: Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
Publicado por: Medusa en 24 de Agosto de 2009, 14:20:19
Hola Suky, gracias por la aclaracion.
Título: Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
Publicado por: micronet3 en 28 de Agosto de 2009, 10:59:52
que diferencia habria entre putc() y putchar().?
Título: Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
Publicado por: gera en 28 de Agosto de 2009, 11:23:52
ninguna, trabajan igual. pero como explique mas arriba, putc() es estandar, putch() y putchar() no lo son
saludos!
Título: Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
Publicado por: Cryn en 02 de Septiembre de 2009, 16:08:20
no son estándares de C como bien dice gera, son en CCS definos en los .h de todos los micros que usamos:

#define getc getch
#define fgetc getch
#define getchar getch
#define putc putchar
#define fputc putchar
#define fgets gets
#define fputs puts

fíjense el .h de cualquier micro, lo verán, y ahí esta un define de boolean también, que no es estándar de C

y otros más

saludos.
Título: Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
Publicado por: ppyote en 03 de Septiembre de 2009, 19:50:26
cierto asta hace no mucho no lo sabia mire el archivo 16f877.h y ahi estaba....
yo siempre uso putc... es costumbre mia
Título: Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
Publicado por: RALF2 en 26 de Octubre de 2009, 23:26:25
Hola amigos!
Me estaba preguntando como se trabaja con el fprintf con eso del stream y vi lo que coloco el maestro suki y listo problema resuelto  :-/

Saludos
Título: Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
Publicado por: Suky en 27 de Octubre de 2009, 01:01:55
Hola amigos!
Me estaba preguntando como se trabaja con el fprintf con eso del stream y vi lo que coloco el maestro suki y listo problema resuelto  :-/

Saludos

Y eso me lo enseño MLO_ en algún momento, eso es compartir conocimientos!!!  :D :D


Saludos!
Título: Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
Publicado por: MLO__ en 27 de Octubre de 2009, 23:42:53
 ;-)

Es lo bueno de compartir ... que el conocimiento se difunfe ...