microcontroladores 4 mikrobasic

23
MECATRONICA SISTEMAS MICROCONTROLADOS 58 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas Figura 4.7 Ventana New Project Wizard 5 5. Seleccionamos si queremos incluir automáticamente las librerías 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.

Upload: pablo-rodas

Post on 04-Aug-2015

288 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

58 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Figura 4.7 Ventana New Project Wizard 5

5. Seleccionamos si queremos incluir automáticamente las librerías 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.

Page 2: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

59 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Figura 4.9 Ventana New Project Wizard 7

Después de crear el proyecto, en la pantalla aparecerá una nueva ventana blanca en la que Ud. debe escribir el programa. Vea la Figura a continuación:

Figura 4.10 Ventana de programación

Aquí debemos escribir nuestro programa

Page 3: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

60 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Figura 4.11 Ejemplo de un programa

4.2.3 Compilación

Una vez que se ha creado el programa es necesario compilarlo en un código de progra-ma (.hex). Seleccione una de las opciones para compilación del menú Project:

Page 4: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

61 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Figura 4.12 Menú Project-Build

Para crear un fichero HEX seleccione la opción Build (Ctrl+F9) del menú Project o haga click en el icono Build de la barra de herramientas Project.

La opción Build All Projects (Shift+F9) compila todos los ficheros del proyecto, librerías (si hay código fuente para ellas) y los ficheros def para el chip utilizado.

La opción Build + Program (Ctrl+F11) es importante puesto que permite al compilador mikroBasic PRO for PIC cargar automáticamente el programa en el microcontrolador después de la compilación. El proceso de programación se realiza por medio del programador compatible con mikroBasic PRO for PIC.

Todos los errores detectados durante la compilación aparecerán en la ventana Message. Si no hay errores, mikroBasic PRO for PIC generará ficheros de salida.

Page 5: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

62 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

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 continuación:

Formato Descripción Tipo de fichero

Intel HEX

Registros del formato Intel hex. Este fichero se utiliza para la programación de los microcontroladores PIC.

.hex

Fichero Binario Librería compilada que se puede incluir en otros proyectos.

.mcl

Fichero Ensamblador Fichero ensamblador con los nombres simbólicos

.asm

Fichero List

Visión general de uso de la memoria de los microcontroladores PIC. El fichero List representa una versión extendida del código ensamblador, es decir, contiene las direcciones de instrucciones, registros, rutinas y etiquetas.

.lst

COFF Archivo que contiene le código de depuración

.cof

Page 6: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

63 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

4.2.5 Configuración del proyecto

Al seleccionar la opción Project Settings del menú View aparecerá una ventana en la que puede modificar el tipo de microcontrolador, su frecuencia de reloj, el modo de operación del compilador y del depurador después de la compilación.

Figura 4.14 Projetc Settings

Es posible modificar la palabra de configuración al introducir los nuevos datos en la ventana Configuration Bits que aparecerá al seleccionar la opción Edit Project en el menú Project. Cada modificación en esta ventana se refiere solamente al proyecto actualmente activo.

Figura 4.15 Ventana edit project

Page 7: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

64 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

4.2.6 FICHEROS FUENTE

Crear un nuevo fichero fuente

Para crear un nuevo fichero fuente, es necesario seleccionar la opción 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á automáticamente una nueva ventana, o sea un nuevo fichero fuente. Seleccione la opción Save del menú File o presione CTRL+S o haga click en el icono Save File de la barra de herramientas File y nómbrelo como quiera.

Figura 4.16 Menú File

Abrir un fichero existente

Para abrir un fichero guardado es necesario seleccionar la opción 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 diálogo Open navegue por la ubicación del fichero que quiere abrir, selecciónelo y haga click en el botón Open. El fichero se visualizará automáticamente en su propia ventana. Si el fichero seleccionado ya está abierto, llega a estar activo.

Figura 4.17 Menú File-open

Page 8: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

65 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Imprimir un fichero activo

Antes que nada, es necesario asegurarse que el fichero que quiere imprimir esté activo. Seleccione la opción Print del menú File o presione CTRL+P y haga click en el botón OK. En la ventana Print Preview configure el diseńo deseado del documento y haga click en el icono Print.

Figura 4.18 Menú File-print

Guardar un archivo

Asegúrese que la ventana que el fichero que quiere guardar esté activo. Para guardarlo, seleccione la opción 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

Page 9: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

66 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Guardar el archivo bajo un nombre diferente

Asegúrese que el fichero que quiere guardar esté activo. Para guardarlo bajo un nombre diferente, seleccione la opción Save As del menú File. Se abrirá la caja de diálogo Save As. En este diálogo 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 botón Save.

Figura 4.20 Menú File-Save As

Cerrar el archivo

Asegúrese que el fichero que quiere cerrar esté activo. Para cerrarlo, seleccione la opción Close del menú File o haga click en la ventana del fichero que quiere cerrar y seleccione la opción Close. Si el fichero ha sido modificado desde que fue guardado la última vez, la opción le preguntará si desea guardar los cambios.

Figura 4.21 Menú File-Close

Page 10: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

67 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

4.2.7 Estructura de un Programa

Para empezar, es necesario conocer como está estructurado un programa en MB, para tal propósito a continuación se muestra dicha estructura junta con una breve indicación de cada uno de sus bloques constituyentes:

program <Nombre_del_Programa>

include <Nombre_de_Librería>

'*******************************************************

'* Declaraciones Globales:

'*******************************************************

' Declaración de Constantes

const ...

' Declaración de Variables

dim ...

' Declaración de Procedimientos

sub procedure nombre_procedimiento(...)

<Declaraciones Locales>

………

………

end sub

' Declaración de Funciones

sub function nombre_función(...)

<Declaraciones Locales>

………………

…………….

end sub

'*******************************************************

Page 11: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

68 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

'* Programa Principal:

'*******************************************************

main:

'A partir de aquí se escribe el código

………….

…………..

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 Declaración

Como en todo lenguaje de programación, las unidades básicas 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 aritméticas o lógicas.

Dependiendo de la cantidad de memoria que utilicen en el UC (recuerde que la unidad mínima de memoria RAM es 1byte = 8bits), ambas pueden ser cualquiera de los siguientes tipos:

TIPO: #BITS: RANGO:

byte 8 bits 0-255 char 8 bits 0-255word 16 bits 0-65535 short 8 bits -128-127integer 16 bits -32768-32767Longint 32 bits 2147483648-214748367

float 32 bits ±1.175494 35082x10-38 ±6.80564774407x1038

A continuación se muestra la manera de declarar una constante y una variable respectivamente, así como algunos ejemplos:

Page 12: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

69 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

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 más de una si todas son del mismo tipo, esto no es aplicable a constantes. Tanto para variables como constantes, se puede requerir en algún punto trabajar directamente con valores binarios o hexadecimales, para esto solo es necesario utilizar la notación $ para valores hexadecimales y % para valores binarios, como se muestra a continuación:

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 específicas 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 específico a elementos o variables dentro de nuestro programa. Para definir un símbolo, utilizamos la palabra "Symbol", seguida del alias del elemento, el símbolo de igualdad "=", y por último el elemento en cuestión:

Symbol {alias} = {elemento}

Por ejemplo, si deseamos controlar un motor DC a través de uno de los pines del puerto A de un microcontrolador, resultaría mucho más 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

Page 13: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

70 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

4.4 Operadores Aritméticos, Relacionales, Lógicos y Boléanos

Los operadores son elementos que permiten realizar algún tipo de operación aritmética o lógica sobre variables o constantes. Existen 4 tipos de operadores mismos que se explican a continuación:

Operadores Aritméticos: Son los que realizan operaciones matemáticas y el resultado que devuelven es de tipo numérico y son:

OPERADOR: OPERACIÓN:+ Suma- Resta* Multiplicación/ División Normal (con decimales)div División con Redondeo al entero más próximo

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 expresión con respecto a la otra, el resultado entregado es TRUE o FALSE y son:

OPERADOR: OPERACIÓN:= Igual que<> Diferente de> Mayor que< Menor que> = Mayor o igual que< = Menor o igual que

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

Operadores Lógicos: Realizan operaciones lógicas y son más utilizados cuando el objetivo es modificar variables a nivel de sus bits y son:

Page 14: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

71 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

OPERADOR: OPERACIÓN:and Operación Lógica ANDor Operación Lógica ORxor Operación Lógica XORnot Operación Lógica NOT<< Desplaza un número de bits hacia la izquierda >> Desplaza un número 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 Boléanos: Se utilizan para enlazar expresiones relacionales largas o multi-condicionales, el resultado que entregan es TRUE o FALSE y son:

OPERADOR: OPERACIÓN:and expresión 1 y expresión 2or expresión 1 o expresión 2not Negar expresión

(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. Básicamente existen dos tipos de estructuras: las condicionales y las iterativas, las cuales a su vez se subdividen en otros que se explican a continuación:

Estructura condicional “if”:

if expresión then

declaraciones_1

else

declaraciones_2

end if

Page 15: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

72 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Si la expresión 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 expresión 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 operación

case "*"

a = b * c

case "/"

a = b / c

Page 16: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

73 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

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 repetición incrementa un cierto número de veces al contador, este incremento está determinado por el parámetro “step”. Si no se utiliza este parámetro el incremento es uno. Ejemplo:

s = 2

for i = 1 to 2

s = s * 2 ' la operación resultante es 2 al cubo

next i

Estructura iterativa “while”:

while expresión

declaraciones

wend

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

Page 17: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

74 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

i = 1

s = 2

while i <= 2

s = s * 2 ' la operación 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 algún trabajo específico. En el caso de las funciones estas devuelven un valor, en cambio que los procedimientos no lo hacen. En la mayoría de casos estos bloques requieren parámetros de entrada que pueden ser incluidos al llamar a la función.

Las ventajas principales de utilizar funciones y procedimientos se mencionan a continuación junta con la forma en cómo 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 código en cada punto que se requiera.

Permiten obtener un programa con menos líneas, más ordenado y fácil de entender

Funciones:

sub function nombre_función(lista_parametros) as tipo_resultado [ declaraciones_locales ] cuerpo_de_la_función

end sub

La lista de parámetros, define el número y el tipo de datos de entrada que se deberán esperar siempre que se llame a la función, las declaraciones locales son las variables internas que utiliza la función y que no son vistas por el programa principal. Siempre que se llama a una función, inmediatamente se crea una variable llamada “result” cuyo tipo depende del tipo especificado al declarar la función, es precisamente esta variable la que la función devolverá al final.

Ejemplo:

Page 18: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

75 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

sub function potencia(dim x, n as byte) as longint

dim i as byte ' declaración local de variable i = 0

result = 1 ' “result” no necesita declaración

if n > 0 then

for i = 1 to n

result =result*x

next i

end if

end sub

Una vez que la función 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_función

end sub

El siguiente procedimiento se encarga de prender y apagar “n” número 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 LED’s

Delay_ms(1000) ' Espera 1seg (1000ms)

Page 19: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

76 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

PORTB = %00000000 ' Apaga LED’s

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 LED’s 10 veces

Un tipo especial de procedimiento que requiere especial atención, son las interrupciones, en este caso se trata de un procedimiento que será llamado cada vez que se genere una interrupción por parte de algún periférico específico todo procedimiento destinado a atender interrupciones debe llamarse “interrupt”. A continuación se muestra la forma de declarar una interrupción y un ejemplo que atiende la interrupción por el TIMER 0 o el TIMER 1:

sub procedure interrupt

[ declaraciones_locales ]

cuerpo_de_la_función

end sub

sub procedure interrupt

if TestBit(INTCON, TMR0IF) = 1 then 'Fue el TIMER 0?

PORTB = %11111111 ' Enciende LED’s 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 LED’s del puerto B ClearBit(PIR1, TMR1IF) ' Limpia Bandera antes

' de salir

end if end if end sub

Page 20: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

77 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Observe que parte esencial de una subrutina de interrupción, es el chequeo de banderas mediante la función “TestBit”, esto nos ayuda a saber cuál fue el causante de la misma, esto solo es necesario cuando existe más de un dispositivo programado para generar una interrupción.

Recuerde que antes de salir de la interrupción se debe limpiar la bandera del dispositivo que generó la interrupción, caso contrario se volvería a entrar a la interrupción inmediatamente después de haber salido de ella.

4.7 Estructura de MikroBasic IDE

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

Figura 4.22 MikroBasic IDE

Page 21: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

78 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

En la sección A, podemos encontrar las opciones del menú principal, además de todos los accesos directos a cada función del software a través de pequeños botones ordenados y de fácil acceso.

La sección B es el editor en el cual se escribirán los programas de cada proyecto.

En la sección C se puede observar el administrador de librerías, el cual deberá ser tomado en cuenta siempre que nuestros proyectos incluyan el uso de cualquiera de las librerías disponibles en mikroBasic.

En la sección D se encuentra en explorador de código 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 sección E muestra dos pestañas importantes. La primera pestaña se llama "Messages" o "Mensajes", contiene un área en la cual se mostrarán los resultados del procedimiento de compilación de un programa. Si se genera un error de compilación, éste será mostrado en esta ventana mostrando el tipo de error y su ubicación en la ventana de edición. La segunda pestaña se llama "Quick Converter" y contiene una herramienta de conversión de unidades en diferentes formatos.

4.8 Ejemplo de un programa completo

Ejemplo LEDs ON/OFF y suma

program EJEMPLO

'********************************************************

'* Declaraciones Globales:

'********************************************************

' Declaración de Constantes

const evento as byte = 1

' Declaración de Variables

dim aa, bb, cc, i, n as byte

' Declaración de Procedimientos

sub procedure Led_on_off(dim n as byte)

dim i as byte ' Declaraciones Locales

Page 22: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

79 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

' 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

' Declaración 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

Page 23: MICROCONTROLADORES 4 MikroBasic

MECATRONICASISTEMASMICROCONTROLADOS

80 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

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 pestaña esté habilitada.