Você está na página 1de 23

MECATRONICA

SISTEMAS MICROCONTROLADOS

Figura 4.7 Ventana New Project Wizard 5

5. Seleccionamos si queremos incluir automticamente las libreras o para incluirlas desde el progama.

Figura 4.8 Ventana New Project Wizard 6

6. Por ltimo, se necesita confirmar todas las opciones seleccionadas. Haga click en Finish.

58

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS

Figura 4.9 Ventana New Project Wizard 7 Despus de crear el proyecto, en la pantalla aparecer una nueva ventana blanca en la

que Ud. debe escribir el programa. Vea la Figura a continuacin:

Figura 4.10 Ventana de programacin

Aqu debemos escribir nuestro programa

59

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS

Figura 4.11 Ejemplo de un programa

4.2.3 Compilacin
Una vez que se ha creado el programa es necesario compilarlo en un cdigo de programa (.hex). Seleccione una de las opciones para compilacin del men Project:

60

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS

Figura 4.12 Men Project-Build

Para crear un fichero HEX seleccione la opcin Build (Ctrl+F9) del men Project o haga click en el icono Build de la barra de herramientas Project. La opcin Build All Projects (Shift+F9) compila todos los ficheros del proyecto, libreras (si hay cdigo fuente para ellas) y los ficheros def para el chip utilizado. La opcin Build + Program (Ctrl+F11) es importante puesto que permite al compilador mikroBasic PRO for PIC cargar automticamente el programa en el microcontrolador despus de la compilacin. El proceso de programacin se realiza por medio del programador compatible con mikroBasic PRO for PIC.

Todos los errores detectados durante la compilacin aparecern en la ventana Message. Si no hay errores, mikroBasic PRO for PIC generar ficheros de salida.

61

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS

Figura 4.13 Ventana de mensajes

4.2.4 Ficheros de salida


El compilador mikroBasic PRO for PIC generar los ficheros de salida en la carpeta del proyecto que contiene el fichero de proyecto. Los ficheros de salida se muestran en la tabla a continuacin:
Formato Descripcin Tipo de fichero

Intel HEX

Fichero Binario Fichero Ensamblador

Fichero List

COFF

Registros del formato Intel hex. Este fichero se utiliza para la programacin de los microcontroladores PIC. Librera compilada que se puede incluir en otros proyectos. Fichero ensamblador con los nombres simblicos Visin general de uso de la memoria de los microcontroladores PIC. El fichero List representa una versin extendida del cdigo ensamblador, es decir, contiene las direcciones de instrucciones, registros, rutinas y etiquetas. Archivo que contiene le cdigo de depuracin

.hex

.mcl .asm

.lst

.cof

62

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS

4.2.5 Configuracin del proyecto


Al seleccionar la opcin Project Settings del men View aparecer una ventana en la que puede modificar el tipo de microcontrolador, su frecuencia de reloj, el modo de operacin del compilador y del depurador despus de la compilacin.

Figura 4.14 Projetc Settings

Es posible modificar la palabra de configuracin al introducir los nuevos datos en la ventana Configuration Bits que aparecer al seleccionar la opcin Edit Project en el men Project. Cada modificacin en esta ventana se refiere solamente al proyecto actualmente activo.

Figura 4.15 Ventana edit project

63

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS

4.2.6 FICHEROS FUENTE


Crear un nuevo fichero fuente Para crear un nuevo fichero fuente, es necesario seleccionar la opcin New Unit del men File o presionar CTRL+N o hacer click en el icono New File de la barra de herramientas File. Se abrir automticamente una nueva ventana, o sea un nuevo fichero fuente. Seleccione la opcin Save del men File o presione CTRL+S o haga click en el icono Save File de la barra de herramientas File y nmbrelo como quiera.

Figura 4.16 Men File

Abrir un fichero existente Para abrir un fichero guardado es necesario seleccionar la opcin Open del men File o presionar CTRL+O o hacer click en el icono Open File de la barra de herramientas File. En la caja de dilogo Open navegue por la ubicacin del fichero que quiere abrir, seleccinelo y haga click en el botn Open. El fichero se visualizar automticamente en su propia ventana. Si el fichero seleccionado ya est abierto, llega a estar activo.

Figura 4.17 Men File-open

64

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS

Imprimir un fichero activo Antes que nada, es necesario asegurarse que el fichero que quiere imprimir est activo. Seleccione la opcin Print del men File o presione CTRL+P y haga click en el botn OK. En la ventana Print Preview configure el diseo deseado del documento y haga click en el icono Print.

Figura 4.18 Men File-print

Guardar un archivo Asegrese que la ventana que el fichero que quiere guardar est activo. Para guardarlo, seleccione la opcin Save del men File, o presione CTRL+S, o haga click en el icono Save File de la barra de herramientas File.

Figura 4.19 Men File-Save

65

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS

Guardar el archivo bajo un nombre diferente Asegrese que el fichero que quiere guardar est activo. Para guardarlo bajo un nombre diferente, seleccione la opcin Save As del men File. Se abrir la caja de dilogo Save As. En este dilogo navegue por la carpeta en la que quiere guardar el fichero. En el campo File Name modifique el nombre del fichero que quiere guardar. Haga click en el botn Save.

Figura 4.20 Men File-Save As

Cerrar el archivo Asegrese que el fichero que quiere cerrar est activo. Para cerrarlo, seleccione la opcin Close del men File o haga click en la ventana del fichero que quiere cerrar y seleccione la opcin Close. Si el fichero ha sido modificado desde que fue guardado la ltima vez, la opcin le preguntar si desea guardar los cambios.

Figura 4.21 Men File-Close

66

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS

4.2.7 Estructura de un Programa


Para empezar, es necesario conocer como est estructurado un programa en MB, para tal propsito a continuacin se muestra dicha estructura junta con una breve indicacin de cada uno de sus bloques constituyentes:
program <Nombre_del_Programa> include <Nombre_de_Librera> '******************************************************* '* Declaraciones Globales: '******************************************************* ' Declaracin de Constantes const ... ' Declaracin de Variables dim ... ' Declaracin de Procedimientos sub procedure nombre_procedimiento(...) <Declaraciones Locales> end sub ' Declaracin de Funciones sub function nombre_funcin(...) <Declaraciones Locales> . end sub '*******************************************************

67

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS


'* Programa Principal: '******************************************************* main: 'A partir de aqu se escribe el cdigo . .. end.

Nota: para incluir un comentario se inicia con el apostrofe ' como en el ejemplo anterior. Como se observa el bloque principal incluye las declaraciones program, main y end., este bloque es importante porque los comandos puestos aqu son los que realmente ejecutar el uC, no sucede lo mismo con las funciones y procedimientos, estos necesitan ser llamados por el bloque principal para funcionar.

4.3 Constantes, Variables y Alias: Tipos y Declaracin


Como en todo lenguaje de programacin, las unidades bsicas de datos son dos: constantes y variables. Las primeras son unidades cuyo valor se mantiene a lo largo del todo el programa, en general son tiles para definir dimensiones, direcciones, cantidades, etc., en cambio que las segundas son aquellas cuyo valor puede ser alterado mediante operaciones aritmticas o lgicas. Dependiendo de la cantidad de memoria que utilicen en el UC (recuerde que la unidad mnima de memoria RAM es 1byte = 8bits), ambas pueden ser cualquiera de los siguientes tipos: TIPO: byte char word short integer Longint float #BITS: 8 bits 8 bits 16 bits 8 bits 16 bits 32 bits 32 bits RANGO:
0-255 0-255 0-65535 -128-127 -32768-32767 2147483648-214748367 1.175494 35082x10-38 6.80564774407x1038

A continuacin se muestra la manera de declarar una constante y una variable respectivamente, as como algunos ejemplos:

68

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS


const nombre_constante as tipo = valor const letra as char = n ' constante tipo char valor n const radio as short =-15 'constante tipo short valor -15 dim nombre_variable as tipo dim i, j, k as byte ' variables de tipo byte dim producto as float ' variable de tipo float

Note que en el caso de variables se puede declarar ms de una si todas son del mismo tipo, esto no es aplicable a constantes. Tanto para variables como constantes, se puede requerir en algn punto trabajar directamente con valores binarios o hexadecimales, para esto solo es necesario utilizar la notacin $ para valores hexadecimales y % para valores binarios, como se muestra a continuacin:
const P as word = $A56D 'constante valor AF56D dim CONTADOR as byte ' variable de tipo byte CONTADOR = %01001011 ' asigna valor a CONTADOR

Un caso especial de variables, son los registros de funciones especficas del uC (ver memoria RAM), los cuales no necesitan ser declarados ya que todos son de tipo byte y son reconocidos por el programa como variables globales:
TRISB = %11110000 ' Configura la mitad inferior del puerto B como salidas. PORTB = %11111111 ' Pone en 1 la mitad inferior del puerto B.

Alias: Proveen un nombre nico y especfico a elementos o variables dentro de nuestro programa. Para definir un smbolo, utilizamos la palabra "Symbol", seguida del alias del elemento, el smbolo de igualdad "=", y por ltimo el elemento en cuestin: Symbol {alias} = {elemento} Por ejemplo, si deseamos controlar un motor DC a travs de uno de los pines del puerto A de un microcontrolador, resultara mucho ms sencillo referirse a este pin como "Motor", en vez de referirse a l como "PortA.0". Symbol Motor = PORTA.O Symbol LED = PORTA. 1 Symbol RC0 = PORTC.0

69

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS

4.4 Operadores Aritmticos, Relacionales, Lgicos y Bolanos


Los operadores son elementos que permiten realizar algn tipo de operacin aritmtica o lgica sobre variables o constantes. Existen 4 tipos de operadores mismos que se explican a continuacin: Operadores Aritmticos: Son los que realizan operaciones matemticas y el resultado que devuelven es de tipo numrico y son: OPERADOR: + * / div OPERACIN: Suma Resta Multiplicacin Divisin Normal (con decimales) Divisin con Redondeo al entero ms prximo

a=b*c a=b+c a = b div c

Operadores Relacionales: Se utilizan en declaraciones condicionales (if, select, while, etc.), comprueban la igualdad o desigualdad de una expresin con respecto a la otra, el resultado entregado es TRUE o FALSE y son: OPERADOR: = <> > < >= <=
a = b ' a es igual que b a < b + c ' a es menor que b+c a >= b*c ' a es mayor o igual que b*c

OPERACIN: Igual que Diferente de Mayor que Menor que Mayor o igual que Menor o igual que

Operadores Lgicos: Realizan operaciones lgicas y son ms utilizados cuando el objetivo es modificar variables a nivel de sus bits y son:

70

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS


OPERADOR: and or xor not << >> OPERACIN: Operacin Lgica AND Operacin Lgica OR Operacin Lgica XOR Operacin Lgica NOT Desplaza un nmero de bits hacia la izquierda Desplaza un nmero de bits hacia la izquierda

%1010 and %0011 ' el resultado es 0010 not %0011 ' el resultado es 1100 %1100 >> 2 ' el resultado es 0011

Operadores Bolanos: Se utilizan para enlazar expresiones relacionales largas o multi-condicionales, el resultado que entregan es TRUE o FALSE y son: OPERADOR: and or not OPERACIN: expresin 1 y expresin 2 expresin 1 o expresin 2 Negar expresin

(a < b + c) and (b = c) ' a es mayor que b+c y b es igual que c (a < b + c) or (b = c) ' a es mayor que b+c o b es igual que c

4.5 Estructuras de Control Condicionales e Iterativas


Las estructuras de control son aquellas que nos permiten tomar decisiones dentro de un programa o cambiar el avance del mismo. Bsicamente existen dos tipos de estructuras: las condicionales y las iterativas, las cuales a su vez se subdividen en otros que se explican a continuacin: Estructura condicional if:
if expresin then declaraciones_1 else declaraciones_2 end if

71

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS

Si la expresin o expresiones enlazadas es verdadera entonces se ejecutan el conjunto de declaraciones_1, caso contrario se ejecuta el conjunto de declaraciones_2. No es obligatorio el bloque else. Ejm:
if a > b then c=a-b else c=b-a end if

Estructura condicional select:


select case selector case valor_1 declaraciones_1 .......... case valor_n declaraciones_n case else declaraciones_auxiliares end selec

El selector es una expresin que puede tomar al menos n valores diferentes, para cada uno existe un conjunto de declaraciones que se pueden ejecutar, y en el caso de no ser ninguno de estos n valores, se ejecutan las declaraciones auxiliares, aunque no son obligatorias. Ejm:
Select case operacin case "*" a=b*c case "/" a=b/c

72

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS


case "+" a=b+c case "-" a=b-c case else a=0 end select

Estructura iterativa for:


for contador=valor_inicial to valor_final[step valor_paso] declaracioes next contador

El conjunto de declaraciones encerradas dentro de un bucle for se repite continuamente hasta que la variable llamada contador alcanza el valor final, cada repeticin incrementa un cierto nmero de veces al contador, este incremento est determinado por el parmetro step. Si no se utiliza este parmetro el incremento es uno. Ejemplo: s=2 for i = 1 to 2 s = s * 2 ' la operacin resultante es 2 al cubo next i Estructura iterativa while:
while expresin declaraciones wend

El conjunto de declaraciones encerradas dentro de un bucle while se repite continuamente siempre y cuando la expresin evaluada sea verdadera (TRUE). Ejemplo:

73

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS


i=1 s=2 while i <= 2 s = s * 2 ' la operacin resultante es 2 al cubo i=i+1 wend

4.6 Procedimientos y Funciones


Generalmente conocidas como subrutinas, las funciones y procedimientos son conjuntos de instrucciones encerradas en un bloque, destinadas a realizar algn trabajo especfico. En el caso de las funciones estas devuelven un valor, en cambio que los procedimientos no lo hacen. En la mayora de casos estos bloques requieren parmetros de entrada que pueden ser incluidos al llamar a la funcin.

Las ventajas principales de utilizar funciones y procedimientos se mencionan a continuacin junta con la forma en cmo se declara cada una: Evitan el desperdicio de memoria del microcontrolador, ya que para utilizar dicho conjunto de instrucciones solo se necesita llamar a la rutina en vez de copiar todo el cdigo en cada punto que se requiera. Permiten obtener un programa con menos lneas, ms ordenado y fcil de entender Funciones: sub function nombre_funcin(lista_parametros) as tipo_resultado [ declaraciones_locales ] cuerpo_de_la_funcin end sub La lista de parmetros, define el nmero y el tipo de datos de entrada que se debern esperar siempre que se llame a la funcin, las declaraciones locales son las variables internas que utiliza la funcin y que no son vistas por el programa principal. Siempre que se llama a una funcin, inmediatamente se crea una variable llamada result cuyo tipo depende del tipo especificado al declarar la funcin, es precisamente esta variable la que la funcin devolver al final. Ejemplo:

74

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS


sub function potencia(dim x, n as byte) as longint dim i as byte result = 1 ' declaracin local de variable i = 0

' result no necesita declaracin

if n > 0 then for i = 1 to n result =result*x next i end if end sub Una vez que la funcin ha sido declarada esta puede ser utilizada dentro del programa principal como en el siguiente ejemplo:
valor = potencia (2,3) ' calcula 2 al cubo valor = potencia (3,5) ' calcula 3 a la quinta potencia

Procedimientos:

sub procedure nombre_procedimiento(lista_parametros) [declaraciones_locales] cuerpo_de_la_funcin end sub El siguiente procedimiento se encarga de prender y apagar n nmero de veces a unos leds conectados en el puerto B del microcontrolador cada 2 segundo.
sub procedure led_on_off(dim n as byte) dim i as byte for i = 1 to n PORTB = %11111111 ' Enciende LEDs Delay_ms(1000) ' Espera 1seg (1000ms)

75

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS


PORTB = %00000000 ' Apaga LEDs Delay_ms(1000) ' Espera 1seg (1000ms next i end sub

Una vez que el procedimiento ha sido declarado, este puede ser utilizado dentro del programa principal como en el siguiente ejemplo:
Led_on_off (10) ' Enciende y apaga los LEDs 10 veces

Un tipo especial de procedimiento que requiere especial atencin, son las interrupciones, en este caso se trata de un procedimiento que ser llamado cada vez que se genere una interrupcin por parte de algn perifrico especfico todo procedimiento destinado a atender interrupciones debe llamarse interrupt. A continuacin se muestra la forma de declarar una interrupcin y un ejemplo que atiende la interrupcin por el TIMER 0 o el TIMER 1:
sub procedure interrupt [ declaraciones_locales ] cuerpo_de_la_funcin end sub sub procedure interrupt if TestBit(INTCON, TMR0IF) = 1 then 'Fue el TIMER 0? PORTB = %11111111 ' Enciende LEDs del puerto B

ClearBit(INTCON, TMR0F) 'Limpia Bandera antes de 'salir else if TestBit(PIR1, TMR1IF) = 1 then ' Fue el TIMER 1? PORTB = %00000000 ' Apaga LEDs del puerto B ClearBit(PIR1, TMR1IF) ' Limpia Bandera antes ' de salir end if end if end sub

76

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS

Observe que parte esencial de una subrutina de interrupcin, es el chequeo de banderas mediante la funcin TestBit, esto nos ayuda a saber cul fue el causante de la misma, esto solo es necesario cuando existe ms de un dispositivo programado para generar una interrupcin. Recuerde que antes de salir de la interrupcin se debe limpiar la bandera del dispositivo que gener la interrupcin, caso contrario se volvera a entrar a la interrupcin inmediatamente despus de haber salido de ella.

4.7 Estructura de MikroBasic IDE


Para que nuestros programas tengan una apariencia ordenada y se facilite la comprensin del mismo ante otros programadores que deseen realizar mejoras a ste, es necesario establecer una estructura que nos permita identificar fcilmente cada una de las partes que lo componen.

Figura 4.22 MikroBasic IDE

77

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS

En la seccin A, podemos encontrar las opciones del men principal, adems de todos los accesos directos a cada funcin del software a travs de pequeos botones ordenados y de fcil acceso. La seccin B es el editor en el cual se escribirn los programas de cada proyecto. En la seccin C se puede observar el administrador de libreras, el cual deber ser tomado en cuenta siempre que nuestros proyectos incluyan el uso de cualquiera de las libreras disponibles en mikroBasic. En la seccin D se encuentra en explorador de cdigo el cual resulta muy til cuando realizamos programas muy extensos. En l se muestra cada elemento declarado en un programa. Podremos acceder directamente a uno de estos elementos haciendo doble clic en ellos. La seccin E muestra dos pestaas importantes. La primera pestaa se llama "Messages" o "Mensajes", contiene un rea en la cual se mostrarn los resultados del procedimiento de compilacin de un programa. Si se genera un error de compilacin, ste ser mostrado en esta ventana mostrando el tipo de error y su ubicacin en la ventana de edicin. La segunda pestaa se llama "Quick Converter" y contiene una herramienta de conversin de unidades en diferentes formatos.

4.8 Ejemplo de un programa completo


Ejemplo LEDs ON/OFF y suma program EJEMPLO '******************************************************** '* Declaraciones Globales: '******************************************************** ' Declaracin de Constantes const evento as byte = 1 ' Declaracin de Variables dim aa, bb, cc, i, n as byte ' Declaracin de Procedimientos sub procedure Led_on_off(dim n as byte) dim i as byte ' Declaraciones Locales

78

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS


' Cuerpo del Procedimiento for i = 1 to n PORTB = %11111111 ' Enciende LED's Delay_ms(1000) ' Espera 1seg (1000ms) PORTB = %00000000 ' Apaga LED's Delay_ms(1000) ' Espera 1seg (1000ms) next i end sub ' Declaracin de Funciones sub function sumar(dim x, y as byte) as byte result = x + y end sub '******************************************************** '* Programa Principal: '******************************************************** main: n = evento aa = 10 bb = 5 cc = 0 TRISB = %00000000 ' Todo los pines son salidas select case n case 1 if aa > bb then cc = aa - bb else cc = bb - aa

79

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

MECATRONICA SISTEMAS MICROCONTROLADOS


end if case 2 for i = 1 to 2 cc = cc + aa + bb next i case 3 while aa > bb aa = aa - 1 wend case 4 cc = sumar(aa,bb) case 5 Led_on_off(10) case else cc = 0 end select end.

4.9 Generar el archivo COFF


Para que se genere el archivo COFF debemos ir a tools luego a options y asegurarnos que la pestaa est habilitada.

80

Unidad Educativa Tcnico Salesiano

Ing. Pablo Rodas

Você também pode gostar