Programación PIC en C

Volver al índice

 

 

Vamos a continuar con las funciones disponibles en CCS para la entrada y salida de datos a través del puerto serie RS-232. Hasta ahora solo hemos visto que con la función printf(), podemos enviar datos formateados a través del pin que hayamos seleccionado en la directiva:

#use RS232(BAUD=9600,BITS=8,PARITY=N,XMIT=PIN_D1,RCV=PIN_D2)


En este caso los datos saldrán por el pin RD1 del PIC. Pero ¿de que funciones disponemos para recibir datos desde fuera hacia nuestro PIC?. El que haya programado en C echará de menos la función scanf() definida en la librería stdio.h y perteneciente al estándar ANSI C. Pero desgraciadamente esa función tampoco está disponible en CCS. Pero tampoco hay por qué preocuparse mucho, porque disponemos de otras. En este caso vamos a ver las funciones: getc(), getch() y getchar(). Las tres hacen lo mismo por lo que podemos usarlas indistintamente.


Estas funciones esperan un carácter por la patilla del PIC que hayamos definido en la directiva #use RS232 con el parámetro RCV. En el caso del ejemplo de arriba, los datos serán recibidos por el pin RD2 del PIC.


Pues vamos a ver nuestro primer ejemplo acerca del uso de estas funciones:

 

 

Uso de las funciones getc, getch y getchar

 

Comentario:

El ejemplo lo que hace es mostrar el valor de la tecla que pulsemos en el teclado y su equivalente en código ASCII


Vamos a explicar su funcionamiento paso a paso:

 

  • Primeramente, como siempre, incluimos por medio de la directiva #include el archivo de cabecera del PIC que vamos a utilizar, en este caso el PIC16F877.
  • Por medio de #use delay le decimos al compilador la frecuencia de reloj que vamos a utilizar en nuestro circuito.
  • Configuramos los parámetro de la directiva #use RS232, fijaros que XMIT=PIN_D0 y que RCV=PIN_D1. Con lo cual los datos saldrán del PIC por el pin RD0 y entrarán por el pin RD1.
  • Dentro de la función principal main(), escribimos lo que queremos que haga nuestro programa. Las instrucciones siempre empezarán a ejecutarse una a una a partir de esta función y de arriba hacia abajo.
  • Lo primero que hacemos es declarar una variable de tipo char donde almacenaremos el valor de la tecla que pulsemos en el teclado.
  • Después se nos mostrará un mensaje en la terminal invitándonos a que introduzcamos un carácter.

printf("Introduzca un caracter :\r");

 

  • Después se ejecutará la sentencia:

ch=getch()


Que esperará hasta que pulsemos una tecla y almacenará su valor en la variable ch.

  • La siguiente instrucción:

printf("El caracter %c tiene un valor ASCII decimal de %d.\r",ch,ch);


muestra el valor del carácter y su equivalente en código ASCII

  • Después se repite el proceso dos veces más, pero esta vez utilizando las funciones getc() y getchar()

Al utilizar solo la variable ch, el valor de la nueva tecla pulsada sobrescribirá el valor anterior de la variable.


La salida de nuestro programa será el siguiente:

 

 

Salida función getc(), getch() y getcharr()

 

 

Bien, hay que decir que el programa finalizará al llegar a la última sentencia incluida en la función main(). Para que el programa termine cuando nosotros queramos tenemos que incluir como mínimo un bucle y establecer una condición para que podamos salir de él, vamos a ver esto con otro ejemplo:



Segundo ejemplo funciones getc(), getch() y getchar()

 

 

En este ejemplo se irán mostrando en la terminal las teclas que vayamos pulsando por el teclado hasta que pulsemos la tecla ‘n’ momento en el cual finalizará el programa.

Los códigos fuentes de los ejemplos los tenéis aquí.



Gracias por vuestros comentarios y en especial al equipo de ABCdatos por incluirlo en su directorio y considerarlo como el mejor tutorial de la semana.

 

 

Mejor tutorial de la semana ABCdatos

 

Un saludo y hasta el próximo día.

 

Volver al índice

 

© 2007-2017 AquiHayapuntes.com