This document discusses the printf() function for serial RS232 input/output in PIC programming in C. It describes how to use the #use RS232 directive to enable serial communication and the various parameters that can be set. It then provides examples of using printf() to output strings and variable values to the serial port or LCD.
1. Programación PIC en C - Funciones de Entrada/Salida serie RS232. Función printf() Page 1 of 4
Inicio Contactar Acerca de .. Foros Blog
Inicio Programación PIC en C
Menú Principal
Programación PIC en C - Funciones de Entrada/Salida serie RS232. Función printf()
Inicio Escrito por biblioman
Registrarse Página 8 de 18
Volver al índice
Enlaces Web
Aunque no hemos visto el tema de las funciones todavía, pero ya que estamos utilizando esta función
Foros
muy a menudo, vamos a ver alguna de las posibilidades que nos ofrece. El que tenga conocimientos del
Sitemap lenguaje C sabrá que para utilizar esta función que pertenece al estándar ANSI de C hay que incluir
previamente el archivo de cabecera #include <stdio.h>, pero esto con el compilador PCW de CCS no
funciona, en este compilador esta función está definida en la directiva:
#use RS232(BAUD=9600,BITS=8,PARITY=N,XMIT=PIN_B1,RCV=PIN_B2)
Esto quiere decir que cada vez que queramos utilizar la función printf tenemos que haber incluido
previamente esta directiva, que posibilita la comunicación del PIC con otro dispositivo utilizando el
protocolo de comunicación serie RS232, además de la función printf esta directiva permite el uso de otras
funciones para la entrada y salida de datos serie como: getc, getchar, gets, puts y kbhit que iremos
viendo poco a poco, pero la más importante para la salida de datos sin duda es printf, porque nos permite
formatear la salida de esos datos de la forma que nosotros queramos.
Como vemos la directiva #use RS232 admite una serie de parámetros que son los que van entre
paréntesis separados por comas, estos son los siguientes:
• BAUD con este parámetro establecemos la velocidad en baudios a la que queremos que se
transmitan los datos por el puerto serie, 9600 es lo normal.
Últimos Tutoriales
• BITS número de bits que utilizaremos en la transmisión, el estándar establece que pueden ser 8 ó
Índice Programación 9, para la comunicación con microcontroladores con 8 son suficientes.
PIC en C • PARITY nos permite utilizar un bit de paridad para la comprobación de errores, está opción la
dejamos a No.
Índice prácticas PIC C
• XMIT está opción nos configura porque patilla del PIC saldrán los datos, está opción junto con la
Curso PIC32
siguiente sí que la tendremos que cambiar a nuestras necesidades.
SDCC (Small Device
C Compiler) en • RCV nos configura porque patilla del PIC se recibirán los datos. En el ejemplo, los datos se
transmiten por el PIN RB1 y se reciben por RB2.
Windows
Actualizar a Ubuntu
9.10 (Karmic Koala) La forma de hacer la llamada a la función printf es la siguiente:
Programación de printf(Nombre Función, Cadena de caracteres , valores);
Microcontroladores
PIC en C con Ubuntu Como vemos la función printf también admite parámetros que podremos utilizar para formatear el texto
utilizando el ICD2 de salida. Vamos a ver cuáles son:
Particiones y sistemas
El primero es opcional y es el nombre de una función, si no lo ponemos los datos se transmitirán vía
de archivos en Linux
RS232 a través de los pines que hayamos configurado en la directiva #use RS232.
Algunas razones para El segundo parámetro es una cadena de caracteres encerrada entre comillas dobles.
probar Ubuntu Y el tercero son datos o nombres de variables cuyo valor queremos que se muestren. Vamos a ver todo
esto con ejemplos que es como mejor se ven las cosas:
Instalación de Ubuntu
9.04 paso a paso
1º Ejemplo:
Compilador PCW CCS
Compiladores C para #include <16F877.h>
PIC #use delay(clock=4000000)
#include <LCD.C>
Programación PIC en
#use RS232(BAUD=9600,BITS=8,PARITY=N,XMIT=PIN_B1,RCV=PIN_B2)
C
void main()
X - 10 {
int i1=9;
Comandos Unix/Linux lcd_init(); //función de inicialización del LCD
Autómatas //Mostramos una cadena en la terminal
Secuenciales Finitos printf("Esto es una cadenar");
CAD Electrónico //Mostramos una cadena de texto junto con el valor de una variable
//en la terminal.
Arduino y el
printf("El valor de la variable i1 es: %d",i1);
controlador LCD serie
//Mostramos el valor de la variable por el LCD
printf (lcd_putc,"El valor de i1 es: %d",i1);
http://www.aquihayapuntes.com/programacion-pic-en-c.html?start=7 14/08/2012
2. Programación PIC en C - Funciones de Entrada/Salida serie RS232. Función printf() Page 2 of 4
Chat
}
5
11 ago 12, 18:27
Ann: Comentario:
11 ago 12, 18:26
Ann: ia buske XD En este primer ejemplo vamos a ver el uso de la función printf utilizando diferentes parámetros. Como
11 ago 12, 10:31
vamos a utilizar la librería que incluye el compilador para el manejo de un LCD tenemos que incluir la
xor: Busca en el foro..
directiva:
10 ago 12, 19:38
Ann: kk?
10 ago 12, 18:45 #include <LCD.C>
Ann: Como puedo
programar en C para
circuito con RF? Declaramos una variable i1 de tipo entero que nos va a servir para mostrar su valor en la terminal y en un
10 ago 12, 17:16 LCD.
frentzen2@ig.com.br: Cuando utilicemos la librería LCD.C y antes de utilizar cualquier otra función incluida en la librería tenemos
salsa2
que llamar a la siguiente función que sirve para inicializar el LCD.
1 ago 12, 01:56
logix0000: hola algien me
puede ayudar con un lcd_init();
programa
29 jul 12, 11:02
Biblioman: CCS también En la primera llamada a la función printf como parámetros solo incluimos una cadena de caracteres
tiene una versión para constante que termina en (r), esa barra invertida junto con la r se le llama secuencia de escape y le está
LInux aunque sin IDE.. 6
diciendo al compilador que al final de la cadena introduzca un retorno de carro (tecla enter). Las
[Get a Cbox] actualizar
secuencias de escape se utilizan para representar caracteres o acciones especiales.
nombre
mensaje ok printf("Esto es una cadenar");
ayuda · emoticonos · cbox
En la tabla de abajo se muestran las secuencias de escape que tenemos disponibles para utilizar con la
Siguenos en ... función printf:
r Retorno de carro
t Tabulador
' Comilla simple
" Comillas dobles
Barra invertida
? Símbolo de interrogación
Licencia
0 Caracter nulo
% Símbolo Tanto por ciento
b Retroceder un caracter
Todo el contenido de
este sitio está bajo una Vamos con la segunda llamada a la función:
licencia de Creative
Commons printf("El valor de la variable i1 es: %d",i1);
En este caso tampoco está definido el primer parámetro, por tanto, al igual que en la primera llamada a la
función, los datos se enviaran por el puerto serie al pin que hayamos definido en la directiva #use RS232,
en esta llamada vemos que tenemos la cadena de caracteres limitada por las comillas dobles y separado
por una coma, como tercer parámetro el nombre de la variable i1 que habíamos declarado previamente.
En la cadena de caracteres vemos que aparece el carácter de % seguido de la letra d, ese es un carácter
especial para la función y lo que le indica a la función es que en esa posición muestre el valor de la
variable i1, la d le indica a la función que represente ese valor en formato de número entero. Podemos
representar el valor de la variable en diferentes formatos según se muestra en la tabla de abajo:
c Caracter
s Cadena ó caracter
u Entero sin signo
d Entero con signo
Lu Entero largo sin signo
Ld Entero largo con signo
x Entero Hexadecimal (minúsculas)
X Entero Hexadecimal (mayúsculas)
Lx Entero largo Hexadecimal (minúsculas)
LX Entero largo Hexadecimal (mayúsculas)
f Número real en coma flotante con truncado
g Número real en coma flotante con redondeo
e Número real en formato exponencial
Entero sin signo con decimales insertados.
w Especifica dos números para n. La 1ª cifra
indica el total y la 2ª el número de decimales
Si quisiésemos mostrar el valor de más de una variable lo haríamos de la siguiente forma:
printf("El valor i1 es: %d el de i2: %d y el de i3: %d",i1,i2,i3);
Vamos con la última llamada a la función del 1º ejemplo:
printf (lcd_putc,"El valor de i1 es: %d",i1);
http://www.aquihayapuntes.com/programacion-pic-en-c.html?start=7 14/08/2012
3. Programación PIC en C - Funciones de Entrada/Salida serie RS232. Función printf() Page 3 of 4
En esta llamada hemos incluido el primer parámetro y hemos puesto el nombre de la función lcd_putc,
está función está definida en la librería LCD.C que trae el compilador para ayuda del manejo de los
dispositivos LCD y que hemos incluido en nuestro programa por medio de la directiva #include <lcd.c>,
vemos que la librería está encerrada entre los símbolos de <> esto le indica al compilador que busque la
librería en el directorio en que se instalo el compilador, si copiáramos esa librería en otro directorio
tendríamos que indicarle la ruta completa, pero esta vez encerrada entre comillas dobles.
Ejemplo:
#include “C:Ejemplos de Clcd.c”
Pues bien ahora la función printf no enviará los datos al puerto serie, sino a la función lcd_puct que será
la encargada de enviárselos al LCD, esta función por defecto envía los datos al puerto D del PIC, pero
accediendo a la librería se puede modificar el puerto fácilmente.
Aquí tenéis un video demostrativo del ejemplo:
2º Ejemplo
Salida del programa:
http://www.aquihayapuntes.com/programacion-pic-en-c.html?start=7 14/08/2012