Está en la página 1de 17

Laboratorio de Microprocesadores I Ing.

Roger Guachalla Narváez

7. Funciones y librerías en MikroC y del Usuario


7.1 Objetivos
 Manejar la Ayuda de las librerías incorporadas en MikroC
 Conocer el sitio web de Mikroe, repositorio de códigos y librerías, www.libstock.com
 Utilizar el software utilitario Package Manager de Mikroe
 Comprender el manejo de funciones en la programación en lenguaje C
 Conocer el procedimiento para crear librerías creadas por el Usuario
 Usando librerías manejar el sensor de ultrasonido HC-SR04 y un parlante piezoeléctrico

7.2 Librerías incorporadas en MikroC


Una librería es un conjunto de variables y funciones, previamente escritas y compilada, que permiten
desarrollar tareas comunes de manera más rápida y sencilla.
La ventaja del uso de librerías es que permiten un desarrollo de un proyecto en menor tiempo, además
no es necesario ‘reinventar la rueda’ cada vez que se necesita realizar una tarea común.
Sin embargo, las librerías añaden el código de todas sus funciones, aunque solo se utilicen algunas,
repercutiendo en el tamaño del código final del proyecto. Otro efecto negativo, es que las librerías
‘esconden’ los detalles de las acciones que realiza el microcontrolador creando una dependencia
exagerada en el uso de estas en la programación. Un claro ejemplo de esto lo representa el desarrollo
con la tarjeta Arduino.
En las guías anteriores se han utilizado algunas funciones como son 'Delay_ms', 'LCD_out', 'LCD_cmd'
etc. Estas funciones están definidas en las librerías contenidas en el compilador mikroC.
Cada librería tiene un propósito específico. Por ejemplo, la librería LCD contiene funciones de
visualización de la pantalla LCD.
MikroC incorpora una amplia variedad de librerías incorporadas disponibles al usuario.
Antes de utilizar alguna de ellas en el programa, es necesario habilitarlas seleccionándolas de la lista de
librerías de MikroC existentes. Si el compilador encuentra una función desconocida durante la ejecución
de programa, primero buscará su declaración en las librerías seleccionadas.
a) Para habilitar una librería ir al menú View – Library Manager y en ventana emergente elegir
mikroE Libraries -System Libraries. De la lista seleccionar las librerías que se utilizarán:

Ing. Roger Guachalla Narváez 1


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

7.3 Ayuda en las librerías incorporadas de MikroC


El entorno de desarrollo integrado IDE MikroC ofrece una extensa ayuda referente al uso de las
librerías incorporadas. Más aun, también ofrece similar ayuda acerca del lenguaje C.
a) Para acceder a la ayuda, ingresar al menú principal y seleccionar ‘Help – Help’

b) En la sección izquierda de la ventana emergente, seleccionar ‘ mikroC PRO for PIC Libraries’
para acceder al listado de librerías incorporadas:

Ing. Roger Guachalla Narváez 2


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

c) Las librerías incorporadas están organizadas en tres categorías:

Librerías para el hardware:

LIBRERÍA DESCRIPCIÓN
ADC Library Utilizada para el funcionamiento del conversor Análogo/Digital
CAN Library Utilizada para las operaciones con el bus CAN
CANSPI Library Utilizada para las operaciones con el módulo CAN externo (MCP2515 o
MCP2510)
Compact Flash Library Utilizada para las operaciones con las tarjetas de memoria Compact
Flash
EEPROM Library Utilizada para las operaciones con la memoria EEPROM incorporada
EthernetPIC18FxxJ60 Utilizada para las operaciones con el módulo Ethernet incorporado
Library
Flash Memory Library Utilizada para las operaciones con la memoria Flash incorporada
Graphic Lcd Library Utilizada para las operaciones con el módulo LCD gráfico con resolución
128x64
I2C Library Utilizada para las operaciones con el módulo de comunicación serial I2C
incorporado
Keypad Library Utilizada para las operaciones con el teclado matricial de 4x4

Ing. Roger Guachalla Narváez 3


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

Lcd Library Utilizada para las operaciones con el display LCD de 2x16 caracteres
Manchester Code Library Utilizada para la comunicación utilizando el código Manchester
Multi Media Card Library Utilizada para las operaciones con las tarjetas multimedia MMC flash
One Wire Library Utilizada para las operaciones con los circuitos utilizando la
comunicación serial One Wire
Port Expander Library Utilizada para las operaciones con el extensor de puertos MCP23S17
PS/2 Library Utilizada para las operaciones con el teclado estándar PS/2
PWM Library Utilizada para las operaciones con el módulo PWM incorporado
RS-485 Library Utilizada para las operaciones con los módulos utilizando la
comunicación serial RS485
Software I2C Library Utilizada para simular la comunicación I2C con software
Software SPI Library Utilizada para simular la comunicación SPI con software
Software UART Library Utilizada para simular la comunicación UART con software
Sound Library Utilizada para generar las señales de audio
SPI Library Utilizada para las operaciones con el módulo SPI incorporado
SPI Ethernet Library Utilizada para la comunicación SPI con el módulo ETHERNET (ENC28J60)
SPI Graphic Lcd Library Utilizada para la comunicación SPI de 4 bits con el LCD gráfico
SPI LCD Library Utilizada para la comunicación SPI de 4 bits con el LCD (de 2x16
caracteres)
SPI Lcd8 Library Utilizada para la comunicación SPI de 8 bits con el LCD
SPI T6963C Graphic Lcd Utilizada para la comunicación SPI con el LCD gráfico
Library
UART Library Utilizada para las operaciones con el módulo UART incorporado
USB Hid Library Utilizada para las operaciones con el módulo USB incorporado

Librerías ANSI C estándar:


LIBRERÍA DESCRIPCIÓN
ANSI C Ctype Library Utilizada principalmente para probar o para convertir los datos
ANSI C Math Library Utilizada para las operaciones matemáticas de punto flotante
ANSI C Stdlib Library Contiene las funciones de librerías estándar
ANSI C String Library Utilizada para realizar las operaciones de cadenas y de manipulación de
memoria

Librerías misceláneas:

LIBRERÍA DESCRIPCIÓN
Button Library Utilizada para eliminación de rebotes de pulsadores e interruptores
Conversion Library Utilizada para la conversión de tipos de datos
Sprint Library Utilizada para formatear los datos con facilidad
PrintOut Library Utilizada para formatear los datos e imprimirlos
Time Library Utilizada para cálculos de tiempo (formato UNIX time)
Trigonometry Library Utilizada para la implementación de funciones trigonométricas
fundamentales
Setjmp Library Utilizada para modificar el mecanismo de llamadas a saltos de programa

Ing. Roger Guachalla Narváez 4


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

d) Por ejemplo, al seleccionar la librería ‘ Button Library’ de la categoría Miscelánea, se obtiene:

Donde se encuentra:
 un resumen de la función que cumple la librería
 el listado de las funciones o Rutinas incorporadas
 Para cada función se detalla:
 formato del Prototipo: Indica la sintaxis, el orden, la cantidad y el tipo de datos
que poseen las variables de Entrada y Salida
 valores de Retorno: Indica que tipo de valores son devueltos por la función una
vez concluida su tarea
 la Descripción: Indica la tarea específica que cumple la función
 los Requisitos: Indica que requisitos de programación deben cumplirse antes de
usar la función
 Ejemplo de Aplicación***: Se incluye el Código fuente completo y comentado
mostrando el uso de la función.
Muchas veces también se incluye el diagrama esquemático que requiere el código.
***Tanto el código como el diagrama esquemático están elaborados para el
microcontrolador PIC16F887 que es muy similar al PIC18F4550, sin embargo, se
deben realizar las modificaciones pertinentes para que funcione adecuadamente
en el PIC18F4550.

Ing. Roger Guachalla Narváez 5


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

e) Para este ejemplo, la ayuda de la función ‘Button’ es la siguiente:


Librería Botón
La biblioteca de botones proporciona rutinas para detectar pulsaciones de botón y rebote (eliminando la
influencia del parpadeo de contacto al presionar un botón).
Rutinas de la Librería
 Botón

Como se observa, la Ayuda incorporada en el IDE MikroC, proporciona una documentación completa.
f) Una opción más rápida para acceder a la Ayuda es seleccionar el nombre de la rutina en el Editor de MikroC
y presionar la tecla F1. Esta acción abrirá la ventana de ayuda inmediatamente.

Ing. Roger Guachalla Narváez 6


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

7.4 Sitio web Libstock


Libstock es una comunidad de desarrolladores y programadores de los compiladores de Mikroe, que
permite a los usuarios:
 Compartir proyectos y bibliotecas.
 Navegar a través de los proyectos y revisar ideas de otros programadores.
 Descargar gratis proyectos totalmente funcionales, incluidos esquemas y documentación.
Existen literalmente cientos de proyectos y/o librerías desarrollados para los compiladores MikroC,
MikroBasic y MikroPascal y para todos los procesadores (PIC, PIC32, dsPIC, AVR, 801, FT90x y ARM) a
los que Mikroe da soporte.
a) Para ingresar a Libstock, seleccionar del menú principal ‘ Help – Libstock Developer Comunity’
o en el navegador de internet digitar la dirección: www.libstock.com

b) Una vez dentro del sitio web:


A. Buscar ‘LCD font’ para revisar los proyectos y/o librerías referentes al display LCD
B. En los resultados obtenidos, hacer clic en ‘LCD Custom Font’

Ing. Roger Guachalla Narváez 7


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

c) En la ventana emergente, la descripción indica que:


A. Esta librería sencilla permite crear números que ocupan 3x2 casillas en el display LCD.
B. La librería está realizada para el compilador MikroCPro for PIC
C. El archivo solo incluye el paquete de librería

En este caso, al tratarse de una librería muy simple, el autor no incluyó un archivo de ayuda o
de ejemplos, sin embargo, si se incluye el código fuente .c para revisar su uso.

D. Hacer clic en ‘Download Library [11.09KB]´ para descargar la librería

d) Descomprimir el archivo descargado:

e) Al descomprimir el archivo, se encuentra la librería

Para instalar las librerías, con extensión ‘.mpkg’ se utiliza e{ software utilitario Package Manager

Ing. Roger Guachalla Narváez 8


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

7.5 Software utilitario Package Manager


 Mikroe incluye el Administrador de Paquetes ‘Package Manager’, que permite integrar fácilmente
librerías externas en los compiladores mikroC, mikroBasic o mikroPascal.
 Junto con las librerías, los paquetes pueden contener valiosa información como: archivos de
definición, archivos de ayuda, dependencias y ejemplos.
 Las librerías se almacenan en paquetes en archivos con la extensión ‘.mpkg’

a) Del menú principal seleccionar ‘ Tools - Package Manager ‘

b) Seleccionar ‘Abrir Paquete Existente’

c) Seleccionar la librería: y hacer clic en ‘Open’


(Abrir)

Ing. Roger Guachalla Narváez 9


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

d) En la ventana emergente, hacer clic en el icono de Instalación de Paquete

e) Esperar hasta que se muestre el mensaje de ‘Finalización Exitosa’

f) Una vez concluida la instalación de la librería, cerrar el software Package Manager


g) Todos los paquetes de librerías que se instalan mediante el Package Manager se guardan en la
carpeta ‘Packages’ en la dirección donde se instaló el MikroC IDE. En esta carpeta, se
encontrarán, además, los archivos de ayuda, esquemáticos, información adicional, etc. que el
autor de la librería haya incluido con el paquete.
Por ejemplo, para una librería llamada ‘HC-SR04_Sensor_Library’ se tiene:

Ing. Roger Guachalla Narváez 10


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

h) Abrir el IDE MikroC, y del menú principal seleccionar ‘Vistas-Administrador de Librerías’

i) En la ventana ‘Library Manager’, desplazar hasta el final, expandir y seleccionar la librería


‘LCD_Custom_Font’

j) Esta librería contiene dos rutinas:


 LCD_Custom_Number(número, fila, columna);
Muestra en la pantalla LCD un número entre 0 a 9 (de tamaño 3x2 celdas del display) en la fila
y columna especificada. Ej: LCD_Custom_Number(7,1,6); //Muestra el número 7 en la fila 1 y
columna 6 del LCD
 LCD_Erase(fila, columna);
Borra el número (de tamaño 3x2 celdas) ubicado en la fila y columna especificadas.
*** Antes de usar la librería LCD_Custom_Font, se debe Iniciar y asignar los pines de
conexión al LCD usando los comandos y funciones de la librería estándar LCD Library

Ing. Roger Guachalla Narváez 11


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

7.6 Funciones en MikroC


Una función es una subrutina que contiene una lista de instrucciones a realizar. La programación
estructurada se basa en la estrategia ‘Divide y vencerás’

La idea principal es dividir un programa en varias partes utilizando estas funciones para resolver el
problema inicial con más facilidad.
En MikroC, un programa siempre contiene la función principal main(). El código normalmente consiste
de varias funciones, pero si el programa es corto y simple se puede escribir todo dentro de main().

Estructura de una función en MikroC

Parámetros de Nombre
Entrada/Salida de Función Valor devuelto

Cuerpo de Función

La declaración contiene los siguientes elementos:


 Tipo de resultado (valor devuelto): tipo de dato del valor devuelto
 Nombre de función: es un identificador que hace posible llamar a una función.
 Declaración de parámetros delimitados por comas. Cada parámetro consiste en el nombre de
una variable, constante, puntero o matriz, precedidos por su tipo de dato.
 Cuerpo de función: bloque de sentencias dentro de llaves
 Instrucción return, que indica el valor que devuelve la función
La función principal main() es una función particular puesto que no tiene parámetros de Entrada o
Salida y es la que se ejecuta al iniciar el programa. La sintaxis de esta función es la siguiente:
void main (void) {
/*El primer 'void' significa que main no devuelve ningún valor.
El segundo 'void' significa que no recibe ningún valor.
Notese que MikroC también admite las sintaxis: 'main()' o
'void main()' o 'main(void)' */
//Instrucciones del programa
};
Por ejemplo, una función llamada Calcular que recibe dos números enteros xval y yval como y
devuelve el valor entero 2*xval-yval, tendrá la siguiente sintaxis:
int Calcular(int xval, int yval) {
int resultado; //variable que almacena el resultado
resultado=2*xval-yval; // almacenar el resultado del cálculo
return resultado; // devolver el valor de resultaod
}

Ing. Roger Guachalla Narváez 12


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

Declaración de Prototipos de Funciones


Para utilizar una función, MikroC debe conocer su presencia en el programa.
Una opción consiste en escribir primero las funciones adicionales y al final la función main().
Si primero se escribe la función main() y luego las funciones adicionales, se requiere declarar los
prototipos de funciones al principio de programa antes de la función main(). El prototipo de función
está compuesto por la cabecera (primera línea) donde se indican el tipo de resultado, nombre de
función, tipos de parámetros y el punto y coma (;)
Llamadas a una Función
Mientras una función es definida y su prototipo declarado, se puede utilizar en cualquier parte de
programa. Sin embargo, como la función main() es la principal del programa, no puede ser llamada por
otra función. Para ejecutar una función, es necesario escribir su nombre y los parámetros asociados.
Cuando se llama una función, el programa salta a la función llamada, la ejecuta, después vuelve a la línea
desde la que fue llamada.
PASAR LOS PARÁMETROS
Al llamar una función, se pasan los parámetros. En MikorC existen dos formas diferentes para pasar
parámetros a una función.
El primer método, denominado ‘paso por valor’, es el más fácil. En este caso, los parámetros se
pueden considerar como variables locales de la función. Cuando se llama una función, el valor de cada
parámetro se copia a un nuevo espacio de memoria reservado durante la ejecución de la función.
Como los parámetros se consideran como variables locales por el compilador, sus valores pueden ser
modificados dentro de la función, pero sus modificaciones no se quedan en la memoria una vez
completada la ejecución de la función.
Tomar en cuenta de que la función devuelve un valor, y no una variable. Además, se crean copias de
los valores de los parámetros, por lo que sus nombres en la función pueden ser diferentes de los
parámetros utilizados en la main().
La mayor desventaja del ‘paso por el valor’ es que la única interacción que una función tiene con el
resto del programa es el valor devuelto de un solo.
El otro método, denominado 'paso por referencia o dirección' permite sobrepasar este problema. En
vez de enviar el valor de una variable al llamar a función, se envía la dirección de memoria del valor.
Entonces, la función llamada será capaz de modificar el contenido de esta localidad de memoria.
Ejemplo:
Paso por Valor Paso por Referencia o Dirección

Llamada a las funciones:

Resultados de las funciones:

Ing. Roger Guachalla Narváez 13


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

7.7 Librerías creadas por el usuario


Para ejemplificar la creación y uso de librerías del usuario se propone el siguiente ejemplo:
 Se creará la librería c1lib que incorpora 3 funciones (c1a, c1b y c1c).
 Cada una de las funciones realiza la misma tarea, pero utiliza un algoritmo distinto.
 Las funciones cuentan el número de unos binarios dentro de un número entero entre 0 a 255.
 Por ejemplo, el número 5 su representación en binario es 0000 0101 y el número de unos es 2.
Para crear esta librería, se debe seguir los siguientes pasos:
a) Usando el ‘New Project Wizard’, crear un nuevo proyecto ‘TestC’ donde se utilizará la librería.
b) Añadir un nuevo archivo: File – New – Add New File

c) Transcribir el código C de las funciones que incluirá la librería

Ing. Roger Guachalla Narváez 14


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

d) Grabar el archivo con la extensión.h. Para este ejemplo: ‘c1lib.h’ en la misma carpeta que se
creó para el proyecto ‘TestC ‘

e) Copiar el código del proyecto ‘TestC’

En este ejemplo, el código prueba las 3 funciones con los mismos datos, por lo tanto, los
resultados serán los mismos.

Ing. Roger Guachalla Narváez 15


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

f) Para verificar el funcionamiento del programa, basta con Depurar el programa y observar el
valor de la variable ‘dato’

7.8 Procedimiento de Laboratorio


1ERA Firma:
Añadiendo un display LCD al PIC18F4550, realizar un programa en MikroC que:
a) Muestre, en la fila 1, columna 3 de un display LCD, el número de pulsaciones (desde 0 hasta 9)
realizadas por un botón (Cada número deberá ocupar 3x2 celdas del LCD)
b) Muestre, en la fila 1, columna 10 del LCD, la cantidad de unos binarios que posee el número de
pulsaciones realizadas por el botón.
Ejemplo: Si se han realizado 7 pulsaciones con el botón, la pantalla del LCD indicará:

El primer digito ‘7’ indica el número de pulsaciones realizadas.


El segundo digito ‘3’ indica la cantidad de unos binarios que tiene ‘7’ (0000 0111)

 Usar la librería Button Library para eliminar los rebotes en el pulsador


 Usar la librería LCD_Custom_Font para mostrar el número de pulsaciones y la cantidad
de unos binarios
 Usar la librería del usuario c1lib para calcular la cantidad de unos binarios
2DA Firma:
Añadiendo un display LCD y un sensor de ultrasonido HC-SR04 y un buzzer (parlante
piezoeléctrico) al PIC18F450, realizar un programa en MikroC que:
a) Muestre, en la primera fila del display LCD, la distancia (en centímetros) existente entre un
objeto de prueba y el sensor de ultrasonido
b) Muestre, en la segunda fila del display LCD, la distancia en pulgadas
c) Cuando la distancia sea menor a 15 cm, el buzzer se activará produciendo un sonido de 2 kHz

Ing. Roger Guachalla Narváez 16


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

 Para trabajar con sensor HC-SR04 descargar de Libstock e instalar en MikroC la librería:
HC-SR04 Ultrasonic Sensor Library

 Para trabajar con el buzzer utilizar la librería incorporada de MikroC: Sound Library

7.9 Informe escrito


I. Firmas en la Carátula (0, 1 o 2) que avalen los procedimientos realizados en Laboratorio
II. Imprimir el Diagrama en Bloques, Flujograma, Diagrama Esquemático y el Código Fuente
Comentado del inciso asignado para la 1ERA Firma.
III. Imprimir el Diagrama en Bloques, Flujograma, Diagrama Esquemático y el Código Fuente
Comentado del inciso asignado para la 2DA Firma.
IV. TRABAJO DE INVESTIGACION
Cada trabajo de investigación debe incluir: Resumen escrito a mano (de un mínimo de 4 páginas),
Fuentes de Información (direcciones web, bibliografía), Copia impresa de la primera página de la
información adquirida a través de las fuentes
Sensor de Ultrasonido y Parlante Piezoeléctrico
 Características técnicas y Diagrama eléctrico
 Teoría del funcionamiento
 Aplicaciones
V. Conclusiones

Ing. Roger Guachalla Narváez 17

También podría gustarte