Академический Документы
Профессиональный Документы
Культура Документы
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:
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.
Como vemos la funcin printf tambin admite parmetros que podremos utilizar para
formatear el texto de salida. Vamos a ver cules son:
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.
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
\%
\b
Retroceder un caracter
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
Lu
Ld
Lx
LX
Ejemplo:
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.
2 Ejemplo
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.