You are on page 1of 8

Laboratorio de Microprocesadores I

Docente: Ing. Roger Guachalla Narvez


xoroger@yahoo.es

PRACTICA 07: Funciones, Procedimientos y Libreras creadas por el usuario


1. Objetivos
Conocer el uso de funciones y procedimientos en MikroBasic
Conocer el procedimiento para crear libreras creadas por el usuario
Implementar e incluir la librera KeyLcd en el entorno Mikrobasic Pro for Pic
Utilizar la librera KeyLcd para simplificar el ingreso de datos mediante teclado matricial 4x4 y un display LCD.

2. Funciones y Procedimientos en MikroBasic


Las funciones y los procedimientos, denominados bajo el nombre comn de rutinas, son subprogramas
(bloques de sentencias autnomos) que ejecutan ciertas tareas a base de un nmero de los parmetros de
entrada. Los procedimientos pueden tener cero o ms entradas y devolver cero o ms valores mientras
que las funciones pueden tener cero o ms entradas y siempre devuelven un solo valor en la variable
predefinida result despus de la ejecucin.

0, 1, 2,...
Entradas

0, 1, 2,...
Entradas

PROCEDIMIENTO

0, 1, 2,...
Salidas

1 Salida result
FUNCION

2.1 PROCEDIMIENTOS
Los procedimientos se declaran de la siguiente manera:
sub procedure nombre_de_procedimiento (lista_de_parmetros)
[declaraciones_locales]
cuerpo_de_procedimiento
end sub
Cada declaracin contiene los siguientes elementos:
El nombre_de_procedimiento es un identificador vlido utilizado para llamar al procedimiento
La lista_ de_parmetros entre parntesis representa una lista de parmetros de Entrada y/o Salida
declarados de manera similar a variables.
Variable de Entrada:
Una variable de Entrada se pasa por valor utilizando la palabra reservada dim
Variable de Entrada y Salida:
Una variable de Entrada y Salida se pasa por referencia, se aade la palabra reservada byref
Las declaraciones_locales son declaraciones opcionales de variables y constantes que se refieren
solamente al procedimiento dado.
El cuerpo_de_procedimiento es una secuencia de sentencias que se ejecutarn despus de llamar
al procedimiento

Ejemplo: Procedimiento Calcular que halla la Suma, Resta, Multiplicacin y Divisin de 2 nmeros

xx,yy
2 Entradas

Calcular

suma,resta,multi,divi
4 Salidas

'Calcular + - * / de dos numeros


sub procedure Calular (dim xx, yy as short, dim byref suma,resta,multi,divi as integer)
suma = xx + yy
resta = xx-yy
multi = xx*yy
divi = xx/yy
end sub

Ahora, se puede llamar al procedimiento Calcular con cualesquiera dos valores de entrada y almacenar
los resultados en cualesquiera cuatro variables de salida como por ejemplo:
Calcular(57,83,CalcSum,CalcRes,CalcMul,CalcDiv)

2.2 FUNCIONES
Las funciones se declaran de la siguiente manera:
sub function nombre_de_funcin (lista_de_parmetros) as valor_devuelto
[declaraciones locales]
cuerpo_de_funcin
result=(valor de salida de la funcin)
end sub
Cada declaracin contiene los siguientes elementos:
El nombre_de_funcin es un identificador valido utilizado para llamar a la funcin
El valor_devuelto es el tipo de variable del resultado que genera la funcin
La lista_de_parmetros es la declaracin de los parmetros: cada parmetro consiste en una
variable, constante, puntero o matriz precedidos por su tipo de dato especificado similar a una
declaracin de variable regular. Se utilizan para pasar la informacin de la funcin al llamarla.
La declaraciones_locales son declaraciones opcionales de variables y constantes que se refieren
solamente a la funcin dada
El cuerpo_de_funcin es una secuencia de sentencias que sern ejecutadas despus de llamar a la
funcin.
Ejemplo: Funcin Potencia que el valor de un nmero xx elevado a la potencia nn

xx,nn
2 Entradas

Potencia

Salida

'funcion que hace clculo de xx elevado a la nn donde nn debe ser mayor a 0


sub function Potencia(dim x,n as byte) as longint 'xx,nn son bytes,resultado es entero largo
dim i as byte
result = 1
' resultado = 1 si n = 0
if n > 0 then
for i = 1 to n
result = result*x
next i
end if
end sub

Ahora, se puede llamar a la funcin Potencia para hacer clculo de 3 12 por ejemplo:
temp = Potencia(3,12)

3. Libreras creadas por el usuario


Las Libreras o Mdulos creados por el usuario:
Permiten descomponer los programas largos en partes encapsuladas que se pueden editar por
separado
Se pueden utilizar en proyectos diferentes
Se pueden distribuir a otros programadores sin revelar el cdigo fuente
Para crear una nueva librera, se debe realizar la siguiente operacin:
File->New->New Unit
Esto crea el esqueleto de una nueva librera:
Module

'Nombre de la libreria
'Seccion de Interface

implements
'Seccion de Implementacion
end.
La seccin de interface es la que precede a la palabra clave implements. Esta seccin contiene
declaraciones globales (de constantes, variables y smbolos) para el proyecto dado. Tambin se
incluyen en esta seccin, los prototipos ( cabeceras) de las rutinas (funciones y/o procedimientos)
que sern visibles fuera del mdulo. En esta seccin no se pueden definir las rutinas.
La seccin de implementacin contiene las declaraciones y definiciones privadas de las rutinas. Esta
seccin permite encapsular el cdigo. Todas las rutinas (funciones y/o procedimientos), cuyos
prototipos han sido declarados en la seccin de interface, han de ser totalmente desarrolladas e
implementadas en esta seccin.
Una vez que la librera ha sido guardada y compilada con xito, se observa que se ha creado un archivo con
el mismo nombre que la librera pero con la extensin .mcl (mikrobasic compiled library). Este archivo
debe ser incluido en la carpeta de cada proyecto que utilice esta librera.
Para utilizar la librera (ej. mi_libreria.mcl) en un proyecto de mikrobasic (ej. mi_proyecto), bastar
con incluir la sentencia include inmediatamente despus de la palabra clave program. Es decir:
program mi_proyecto
include "mi_libreria"

4. Ejemplo Librera KeyLCD: Diagrama Esquemtico

Componentes Proteus:

5. Ejemplo Librera KeyLCD

6. Cdigo Fuente del programa que usa la librera KeyLcd

7. Procedimiento Experimental en Laboratorio


PRIMERA FIRMA:

Crear una librera llamada ByteAAymara cuya tarea es convertir un dato de entrada tipo Byte a una
expresin literal compuesta por caracteres que representen el byte de entrada el idioma Aymara
Posteriormente, implementar un programa que utilice la librera ByteAAymara que ingrese un byte
a travs de 8 switches en puerto RB del PIC16F877A y lo visualice en el display LCD en la 1era y 2da
fila (no se utiliza el teclado matricial)

SEGUNDA FIRMA:

Utilizando la librera KeyLcd:


a) Escribir un programa que permita evaluar las dos soluciones de la Ecuacin Cuadrtica:

Esta expresin requiere la introduccin de valores enteros para


y a travs del teclado
matricial. Usar variables tipo float para los clculos y mostrar las soluciones (reales o imaginarias)
b) Escribir un programa que permita hallar el valor del Volumen para las siguientes superficies
geomtricas:

A travs del teclado matricial, el usuario deber seleccionar el tipo de Volumen a calcular,
posteriormente introducir los parmetros necesarios y finalmente visualizar en el display LCD el
resultado correspondiente. Usar variables tipo float para los clculos.
c) Escribir un programa que permita evaluar la siguiente expresin algebraica:

Esta expresin requiere la introduccin de valores para y a travs del teclado matricial. La
expresin solo se evaluar y visualizara en el display LCD para todo valor de distinto de 3. En el
caso de que sea igual a 3, se visualizar el mensaje:
Error Division 0
d) Escribir un programa que permita hallar el valor del rea para las siguientes superficies
geomtricas:

A travs del teclado matricial, el usuario deber seleccionar el tipo de rea a calcular,
posteriormente introducir los parmetros necesarios y finalmente visualizar en el display LCD el
resultado correspondiente.
e) Escribir un programa que permita realizar la conversin de grados de temperatura entre Celsius
(C), Fahrenheit (F), Kelvin (K) y Rankin (R):
K = C + 273.15

R = (C + 273.15)*1.8
Usando el teclado matricial, el usuario deber seleccionar el tipo de conversin a realizar
Posteriormente ingresar el valor de temperatura a convertir y finalmente visualizar el resultado
de la conversin.

8. Informe Escrito
I.

Firmas en la Cartula (0, 1 o 2) que avalen los procedimientos realizados en Laboratorio

II.

Imprimir el Cdigo Fuente en MikroBasic y el Diagrama de Flujo usado para realizar el inciso
asignado para la obtencin de la 2da Firma del Trabajo en Laboratorio

III.

Trabajo de Investigacin:

Librera incorporada en MikroBasic: Conversions Library


Explicacin y Ejemplo de funcionamiento de cada una de las funciones incluidas en la
librera
Cada trabajo de investigacin debe incluir:
Resumen escrito a mano (de un mnimo de 3 pginas)
Fuentes de Informacin (direcciones web, bibliografa)
Copias impresas de la informacin adquirida a travs de las fuentes
IV.

Conclusiones