jueves, 21 de octubre de 2010

delays.h

   Hola a todos!! en nuestro miniproyecto "hola mundo" utilizamos una, bueno 2, de las librerias, en concreto utilizamos la librería propia del microcotrolador, la "p18f2550.h" y otra llamada "delays.h", la cual voy a explicar en esta entrada. Pero en primer lugar voy a intentar explicaros qué es una libreria.
   Como sabéis, los programas que creamos para nuestros microcontroladores, o para cualquier programa en general, están compuestos por una serie de sentencias o instrucciones, pero si eso se lo enviaramos el microcontrolador, el realmente no entendería nada, ya que el microcontrolador tan solo entiende un lenguaje, denominado lenguaje máquina, el cual esta compuesto únicamente de unos y ceros. De traducir lo que nosotros escribimos a lenguaje máquina se encarga el compilador, en nuestro caso C18. Al igual que nosotros necesitamos diccionarios para entender otros idiomas, el compilador necesita también diccionarios para traducir lo que escribimos. Estos diccionarios se conocen como librerías, y tienen la extensión .h.
   Si abrimos una librería (boton derecho > editar), veremos que ahí se encuentran escritos todos los comandos que nosotros podemos utilizar, en la librería del microcntrolador podemos encontrar el nombre de todos los puertos, y los registros, y en este caso, su dirección en la memoria del microcontrolador.
En esta caso no vamos a estudiar la librería del microcontrolador, sino la librería "delays.h", que nos permite hacer pausas en la ejecución del programa. En concreto la librería contiene las siguientes instrucciones:


 Delay10TCYx(*char)
 Delay100TCYx(*char)
 Delay1KTCYx(*char)
 Delay10KTCYx(*char)

   Estas instrucciones funcionan de la siguiente manera. Como veis cada instrucción empieza con la palabra "delay", lo que nos indica que vamos a crear un retardo, seguido de un numero múltiplo de 10, acompañado o no de una K, que simplemente es un factor que multiplica  x1000. El valor que pongamos dentro del paréntesis indicara cuentas veces vamos a hacer ese retardo. Lo que hace esta librería es lo siguiente. Si elegimos, por ejemplo Delay1KTCYx(10), tenemos que vamos a crear un retardo de 1 x1000 ciclos de reloj. Cabe mencionar que un ciclo de reljos equivale a 4/Fosc segundos, siendo Fosc la frecuencia del oscilador.  Así pues, utilizando un reloj de 4MHz, tenemos un tiempo de instrucción de 4/4000000 = 1 microsegundo. . . como tenemos 1K, multiplicamos 1 microsegundo por 1000, y nos da 1 milisegundo. A continuación lo multiplicamos por el numero que hay dentro del paréntesis, por tanto habremos creado un retardo de 10 milisegundos. Hay que destacar, que el valor entre paréntesis, por ser una constante de tipo char, puede valer desde 1 hasta 255. Espero que os sea útil esta entrada.
Un saludo

3 comentarios: