Вы находитесь на странице: 1из 8

Link: https://deltironmega.

com/2016/01/01/vikings-temporadas-1-2-3espanol-de-espana/

Contrasea:deltiron

temporadas vikingos

Programacin PIC en C
Detalles
Escrito por biblioman

Pgina 8 de 18
Volver al ndice

Aunque no hemos visto el tema de las funciones todava, pero ya que estamos utilizando
esta funcin muy a menudo, vamos a ver alguna de las posibilidades que nos ofrece. El que
tenga conocimientos del lenguaje C sabr que para utilizar esta funcin que pertenece al
estndar 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 funcin 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 funcin printf tenemos que haber
incluido previamente esta directiva, que posibilita la comunicacin del PIC con otro
dispositivo utilizando el protocolo de comunicacin serie RS232, adems de la funcin 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 ms
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 parmetros que son los que van
entre parntesis separados por comas, estos son los siguientes:

BAUD con este parmetro establecemos la velocidad en baudios a la que


queremos que se transmitan los datos por el puerto serie, 9600 es lo normal.

BITS nmero de bits que utilizaremos en la transmisin, el estndar establece


que pueden ser 8 9, para la comunicacin con microcontroladores con 8 son
suficientes.

PARITY nos permite utilizar un bit de paridad para la comprobacin de errores,


est opcin la dejamos a No.

XMIT est opcin nos configura porque patilla del PIC saldrn los datos, est
opcin junto con la siguiente s que la tendremos que cambiar a nuestras
necesidades.

RCV nos configura porque patilla del PIC se recibirn los datos. En el ejemplo,
los datos se transmiten por el PIN RB1 y se reciben por RB2.

La forma de hacer la llamada a la funcin printf es la siguiente:

printf(Nombre Funcin, Cadena de caracteres , valores);

Como vemos la funcin printf tambin admite parmetros que podremos utilizar para
formatear el texto de salida. Vamos a ver cules son:

El primero es opcional y es el nombre de una funcin, si no lo ponemos los datos se


transmitirn va RS232 a travs de los pines que hayamos configurado en la directiva #use
RS232.
El segundo parmetro es una cadena de caracteres encerrada entre comillas dobles.
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:

1 Ejemplo:

#include <16F877.h>
#use delay(clock=4000000)
#include <LCD.C>
#use RS232(BAUD=9600,BITS=8,PARITY=N,XMIT=PIN_B1,RCV=PIN_B2)
void main()
{
int i1=9;
lcd_init(); //funcin de inicializacin del LCD
//Mostramos una cadena en la terminal
printf("Esto es una cadena\r");
//Mostramos una cadena de texto junto con el valor de una variable
//en la terminal.
printf("El valor de la variable i1 es: %d",i1);
//Mostramos el valor de la variable por el LCD
printf (lcd_putc,"El valor de i1 es: %d",i1);
}

Comentario:
En este primer ejemplo vamos a ver el uso de la funcin printf utilizando diferentes
parmetros. Como vamos a utilizar la librera que incluye el compilador para el manejo de
un LCD tenemos que incluir la directiva:

#include <LCD.C>

Declaramos una variable i1 de tipo entero que nos va a servir para mostrar su valor en la
terminal y en un LCD.

Cuando utilicemos la librera LCD.C y antes de utilizar cualquier otra funcin incluida en la
librera tenemos que llamar a la siguiente funcin que sirve para inicializar el LCD.

lcd_init();

En la primera llamada a la funcin printf como parmetros solo incluimos una cadena de
caracteres constante que termina en (\r), esa barra invertida junto con la r se le llama
secuencia de escape y le est diciendo al compilador que al final de la cadena introduzca un
retorno de carro (tecla enter). Las secuencias de escape se utilizan para representar
caracteres o acciones especiales.

printf("Esto es una cadena\r");

En la tabla de abajo se muestran las secuencias de escape que tenemos disponibles para
utilizar con la funcin printf:

\r

Retorno de carro

\t

Tabulador

\'

Comilla simple

\"

Comillas dobles

\\

Barra invertida

\?

Smbolo de interrogacin

\0

Caracter nulo

\%

Smbolo Tanto por ciento

\b

Retroceder un caracter

Vamos con la segunda llamada a la funcin:

printf("El valor de la variable i1 es: %d",i1);

En este caso tampoco est definido el primer parmetro, por tanto, al igual que en la
primera llamada a la funcin, 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
parmetro el nombre de la variable i1 que habamos declarado previamente. En la cadena
de caracteres vemos que aparece el carcter de % seguido de la letra d, ese es un carcter
especial para la funcin y lo que le indica a la funcin es que en esa posicin muestre el
valor de la variable i1, la d le indica a la funcin que represente ese valor en formato de
nmero entero. Podemos representar el valor de la variable en diferentes formatos segn
se muestra en la tabla de abajo:

Caracter

Cadena caracter

Entero sin signo

Entero con signo

Lu

Entero largo sin signo

Ld

Entero largo con signo

Entero Hexadecimal (minsculas)

Entero Hexadecimal (maysculas)

Lx

Entero largo Hexadecimal (minsculas)

LX

Entero largo Hexadecimal (maysculas)

Nmero real en coma flotante con truncado

Nmero real en coma flotante con redondeo

Nmero real en formato exponencial


Entero sin signo con decimales insertados.

Especifica dos nmeros para n. La 1 cifra indica el


total y la 2 el nmero de decimales

Si quisisemos mostrar el valor de ms de una variable lo haramos 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 funcin del 1 ejemplo:

printf (lcd_putc,"El valor de i1 es: %d",i1);

En esta llamada hemos incluido el primer parmetro y hemos puesto el nombre de la


funcin lcd_putc, est funcin est definida en la librera 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 librera est encerrada entre los
smbolos de <> esto le indica al compilador que busque la librera en el directorio en que se
instalo el compilador, si copiramos esa librera en otro directorio tendramos que indicarle
la ruta completa, pero esta vez encerrada entre comillas dobles.

Ejemplo:

#include C:\Ejemplos de C\lcd.c

Pues bien ahora la funcin printf no enviar los datos al puerto serie, sino a la funcin
lcd_puct que ser la encargada de envirselos al LCD, esta funcin por defecto enva los
datos al puerto D del PIC, pero accediendo a la librera se puede modificar el puerto
fcilmente.

Aqu tenis un video demostrativo del ejemplo:

2 Ejemplo

Salida del programa:

Comentario del programa:

El especificador de formato %x indica al sistema que escriba en hexadecimal


(base 16) el valor sustituido.

El ejemplo tambin escribe el carcter 'A', apoyndose en cuatro formas distintas


de representaciones inciales. En todos los casos se almacenar el mismo valor
numrico, pero son diferentes las representaciones usadas.

El carcter (A) sale en la terminal en una lnea diferente cada vez que se
imprime, eso es debido a la secuencia de escape (\r) utilizada.

Observar que el ejemplo se ha hecho sobre el PIC 16f84 que no dispone de una
USART hardware para la comunicacin serie , pero sin embargo el programa se
ha ejecutado correctamente, eso es debido a que la comunicacin serie se ha
establecido por software por medio de las libreras implementadas en el
compilador PCW.

Вам также может понравиться