tutorial: uso de librerías, archivos .h |
|
Introducción:
en un programa ANSI C para sistemas de microcontrol, existen 2 tipos de archivos .h: el
archivo del microcontrolador particular que se esté utilizando, y las librerías del
programa. Ambos llevan la terminación ".h" El archivo header del microcontrolador contiene las equivalencias que usa el compilador entre los nombres de los puertos, registros, bits y señales con su dirección física en el microcontrolador. Por ejemplo, para el compilador CCS, vea los archivos 16F628A.h, 16F88.h, 16F88ADC.h . Para el compilador HITECH, vea como ejemplos los archivos pic16F62xa.h ó pic16F88.h. Los archivos ".h" del programa también se conocen como "librerías" ó "bibliotecas". Las que están siempre integradas en todos los compiladores ANSI C, como por ejemplo <stdlib.h>, se conocen como "librerías estándar". En seguida se dan detalles con respecto a ambos tipos de archivos .h |
ARCHIVO HEADER DEL
MICROCONTROLADOR: El archivo header del microcontrolador contiene las equivalencias para
el compilador entre los nombres de los puertos, registros, bits y señales con su
dirección física en el microcontrolador. Por ejemplo, para el compilador CCS, vea los archivos 16F628A.h y 16F88.h . Para el compilador HITECH, vea el archivos pic16F62xa.h y pic16F88.h. El archivo "header" del microcontrolador debe siempre declararse en el encabezado del programa principal (main). El compilador HITECH, tiene un archivo header que se declara siempre mediante la directiva #include <htc.h> . El compilador busca el archivo particular del microcontrolador que haya sido seleccionado por el usuario durante la creación del proyecto en MPLAB, por ejemplo el 16F88. En el caso del compilador CCS, debe incluirse la directiva #include "16F628A.h" ó "16F88.h". El uso de las comillas dirige al compilador a buscar ese archivo en la misma carpeta en donde está el proyecto generado desde MPLAB IDE. Si se usa la directiva #include <16F628A.h>, el compilador busca el archivo en la carpeta "devices" en donde se instalaron originalmente los drivers para cada microcontrolador.
|
LIBRERIAS DEL
PROGRAMA: también llamadas "bibliotecas". Estos archivos header contienen las
funciones que habrán de usarse en el programa principal ó en alguno de los otros
archivos header. No es indispensable tener un archivo "header" separado del
programa principal. Un programa ANSI C puede tener su encabezado, la función
"main" y las demás necesarias para su funcionamiento, en un solo archivo con
terminación .c, sin utilizar archivos header ó librerías adicionales. Sin embargo, cuando el programador desea separar algunas ó todas las funciones del programa principal en un archivo ó archivos distintos, entonces es indispensable crear nuevos archivos ó librerías cuyo nombre debe llevar la terminación .h . De esta manera, el programa en el archivo "main" se simplifica a un mínimo de líneas, facilitando su comprensión. Como ventaja adicional para los programadores al crear sus propias librerías, es permitir que esas funciones puedan ser utilizadas por otros programadores (ver LIBRERIA UNIVERSAL) Un archivo .h puede contener las llamadas "directivas del preprocesador de C", como #define e #include, así como las funciones. Puede también contener la declaración de otros archivos .h, que son indispensables para la operación de algunas de las funciones, incluyendo las llamadas "librerías estándar" del propio compilador C como son "stdio.h" ó "string.h". |
EJEMPLO:
El nombre de la librería debe declararse en el encabezado de la función main mediante la
directiva #include< >, como se verá en el siguiente ejemplo. Si se usan comillas
" " en el nombre del archivo, el compilador lo busca en la carpeta del proyecto
creado desde MPLAB. Si se usan brackets < >, entonces lo busca en la carpeta de
instalación del compilador. Ejemplo para el compilador CCS: tomemos el encabezado del programa principal (main) del controlador del LCD denominado CCSLCD.c. Las definiciones y directivas necesarias están en el archivo header display.h En este mismo archivo se incluyeron (en este ejemplo) el resto de las funciones que son llamadas desde el programa principal. Abra ambos archivos y observe su contenido: ENCABEZADO EN EL PROGRAMA PRINCIPAL: #if defined(__PCM__)
//define el compilador para microcontroladores "Medium Range" ENCABEZADO EN EL ARCHIVO HEADER display.h: #include <string.h>
//librería estándar necesaria para el manejo de "strings" /*Aquí siguen el resto de las funciones utilizadas por el programa principal*/ Para evitar errores en el compilador, no debe repetirse ninguna función, directiva, ó definición listada en algún archivo "header", en el propio archivo principal "main", ni en ninguna otra librería del programa. Es deseable, como en el caso de este ejemplo, incluir en un solo archivo header las funciones llamadas desde el programa principal. |
EN EL CASO DE LOS SISTEMAS 16F84, 16F628 Y SISTEMA EB88, CONTAMOS CON UNA LIBRERIA UNIVERSAL QUE CONTIENE TODAS LAS FUNCIONES NECESARIAS PARA MANEJAR LOS DISPOSITIVOS COMO LEDS, MICROSWITCHES, RELEVADOR, LCD, TECLADO, CONVERTIDOR AD Y FUNCIONES DE DELAY. |