micro tu

83
2.1 LENGUAJES DE PROGRAMACIÓN El microcontrolador ejecuta el programa cargado en la memoria Flash. Esto se denomina el código ejecutable y está compuesto por una serie de ceros y unos, aparentemente sin significado. Dependiendo de la arquitectura del microcontrolador, el código binario está compuesto por palabras de 12, 14 o 16 bits de anchura. Cada palabra es interpretada por la CPU como una instrucción a ser ejecutada durante el funcionamiento del microcontrolador. Como es más fácil trabajar con el sistema de numeración hexadecimal, el código ejecutable se representa con frecuencia como una serie de los números hexadecimales denominada código Hex. A todas las instrucciones que el microcontrolador puede reconocer y ejecutar se le denominan colectivamente Juego de instrucciones. En los microcontroladores PIC con las palabras de programa de 14 bits de anchura, el conjunto de instrucciones tiene 35 instrucciones diferentes.

Upload: victor-mamani-zarate

Post on 13-Sep-2015

219 views

Category:

Documents


1 download

DESCRIPTION

micro

TRANSCRIPT

2.1 LENGUAJES DE PROGRAMACIN

El microcontrolador ejecuta el programa cargado en la memoria Flash. Esto se denomina el cdigo ejecutable y est compuesto por una serie de ceros y unos, aparentemente sin significado. Dependiendo de la arquitectura del microcontrolador, el cdigo binario est compuesto por palabras de 12, 14 o 16 bits de anchura. Cada palabra es interpretada por la CPU como una instruccin a ser ejecutada durante el funcionamiento del microcontrolador. Como es ms fcil trabajar con el sistema de numeracin hexadecimal, el cdigo ejecutable se representa con frecuencia como una serie de los nmeros hexadecimales denominada cdigo Hex. A todas las instrucciones que el microcontrolador puede reconocer y ejecutar se le denominan colectivamente Juego de instrucciones. En los microcontroladores PIC con las palabras de programa de 14 bits de anchura, el conjunto de instrucciones tiene 35 instrucciones diferentes.

Normalmente los programas se escriben en el lenguaje ensamblador cuando se requiere controlar completamente la ejecucin de programa.Como el proceso de escribir un cdigo ejecutable era considerablemente arduo, en consecuencia fue creado el primer lenguaje de programacin denominado ensamblador (ASM). El proceso de programacin se hizo un poco ms complicado. Por otro lado, el proceso de escribir un programa dej de ser una pesadilla. Las instrucciones en ensamblador consisten en las abreviaturas con significado. Un programa denominado ensamblador instalado en la PC compila las instrucciones del lenguaje ensamblador a cdigo mquina (cdigo binario). Este programa compila instruccin a instruccin sin optimizacin. La ventaja principal del lenguaje ensamblador es su simplicidad y el hecho de que a cada instruccin cle orresponde una localidad de memoria. Como permite controlar todos los procesos puestos en marcha dentro del microcontrolador, este lenguaje de programacin todava sigue siendo popular.Por otro lado, los programas se ejecutan siempre a alta velocidad y en la mayora de casos no es necesario saber en detalle qu ocurre dentro del microcontrolador. A pesar de todos los lados buenos del lenguaje ensamblador, los programadores siempre han necesitado un lenguaje de programacin similar al lenguaje utilizado en el habla cotidiana. Por ltimo, los lenguajes de programacin de alto nivel (Basic entre otros) fueron creados. La ventaja principal de estos lenguajes es la simplicidad de escribir un programa. Varias instrucciones en ensamblador se sustituyen por una sentencia en Basic. El programador ya no tiene que conocer el conjunto de instrucciones del microcontrolador utilizado. Ya no es posible conocer exactamente cmo se ejecuta cada sentencia, de todas formas ya no importa. Aunque siempre se puede insertar en el programa una secuencia escrita en ensamblador.

El proceso de escribir un programa en Basic. Al seleccionar la opcin apropiada, el programa ser compilado en el ensamblador y luego en el cdigo hex que ser cargado en el microcontrolador.Similar al lenguaje ensamblador, un programa especializado e instalado en la PC se encarga de compilar un programa a cdigo mquina. A diferencia del ensamblador, los compiladores para los lenguajes de programacin de alto nivel crean un cdigo ejecutable que no es siempre tan corto como el cdigo escrito en ensamblador.

La figura anterior describe el proceso de la compilacin de programa escrito en Basic en cdigo hex.Ejemplo de un programa simple escrito en Basic:

VENTAJAS DE LOS LENGUAJES DE PROGRAMACIN DE ALTO NIVELSi alguna vez ha escrito un programa para un microcontrolador PIC en lenguaje ensamblador, probablemente sepa que la arquitectura RISC carece de algunas instrucciones. Por ejemplo, no hay instruccin apropiada para multiplicar dos nmeros. Por supuesto, este problema se puede resolver gracias a la aritmtica que permite realizar las operaciones complejas al descomponerlas en un gran nmero de operaciones ms simples. En este caso, la multiplicacin se puede sustituir con facilidad por adicin sucesiva (a x b = a + a + a + ... + a). Ya estamos en el comienzo de una historia muy larga... No hay que preocuparse al utilizar uno de estos lenguajes de programacin de alto nivel como es Basic, porque el compilador encontrar automticamente la solucin a ste problema y otros similares. Para multiplicar los nmeros a y b, basta con escribir a*b.

2.2 CARACTERSTICAS PRINCIPALES DEL LENGUAJE DE PROGRAMACIN BASICSimilar al uso de cualquier lengua que no est limitada a los libros y a las revistas, el lenguaje de programacin Basic no est estrechamente relacionado a un tipo particular de ordenador, procesador o sistema operativo. Esto puede ser un problema, ya que Basic vara ligeramente dependiendo de su aplicacin (como diferentes dialectos de una lengua). Por consiguiente, en este libro no vamos a darle una descripcin detallada de todas las caractersticas de Basic, sino presentar una aplicacin muy concreta de Basic, lenguaje de programacin utilizado en el compilador mikroBasic PRO for PIC.El Basic es un lenguaje de programacin simple y fcil de entender. Para utilizarlo correctamente, basta con conocer slo unos pocos elementos bsicos en los que consiste cada programa. Estos son: Identificadores Comentarios Operadores Expresiones Instrucciones Constantes Variables Smbolos Directivas Etiquetas Procedimientos y funciones Mdulos

Aqu est un ejemplo de cmo no se debe escribir un programa. Los comentarios no estn incluidos, nombres de etiquetas no tienen significado, secciones del cdigo no estn agrupadas...Este programa funciona correctamente, pero slo el programador que lo escribi conoce su propsito y modo de ejecucin (como mximo uno o dos das).En la siguiente figura se muestra la estructura de un programa simple escrito en Basic, destacando las partes en las que consiste. Esto es un ejemplo de cmo se debe escribir un programa. Las diferencias son ms que obvias...

ESTRUCTURA DE PROGRAMASimilar a los otros lenguajes de programacin, Basic dispone de un conjunto de reglas estrictamente definidas que se deben observar al escribir un programa. Para escribir un programa en Basic, es necesario instalar un software que proporciona el entorno de trabajo apropiado y entiende estas reglas en la PC... Al escribir una carta, se necesita un programa para procesar palabras. En este caso, se necesita el compilador mikroBasic PRO for PIC. A diferencia de la mayora de programas a los que est acostumbrado a manejar, el proceso de escribir programas en el compilador no empieza por seleccionar la opcin File>New, sino Project>New. Por qu? Bueno, usted escribe un programa en un documento con extensin .mbas (mikroBasic). Una vez que se ha escrito el programa, el mismo se debe compilar en cdigo HEX para crear un nuevo documento con extensin .hex. Al mismo tiempo el compilador generar automticamente varios documentos aparte de se. Por ahora el propsito de estos documentos no importa. Por supuesto, hay algo para conectarlos todos. Usted ya lo adivina - se trata de un proyecto. El programa que escribe es slo una parte del proyecto.

Slo para estar seguro de que estamos hablando en los mismos trminos... A partir de ahora la palabra mdulo se refiere a un documento con extensin .mbas. El texto que contiene se refiere a un programa. Cada proyecto escrito en el compilador mikroBasic PRO for PIC es de extensin .mbppi (microBasic Project for PIC) y consiste en un mdulo como mnimo (mdulo principal - Main Module).Cada proyecto en el mikroBasic PRO for PIC requiere un solo mdulo principal. Lo identifica la palabra clave program y ordena al compilador por dnde empezar el proceso de la compilacin. Al crear con xito un proyecto vaco en Project Wizard, el mdulo principal (main module) ser visualizado automticamente en la ventana Code Editor:program MyProject ' El mdulo principal es denominado MyProject main: ' Procedimiento principal... '*... '* Escribir el cdigo de programa aqu... '*end.A la palabra clave program no le puede preceder nada, excepto comentarios. Como hemos mencionado anteriormente, el proyecto puede incluir a otros mdulos que, a diferencia del mdulo principal, empiezan por la palabra clave module.module MyModule' Mdulo auxiliar Auxiliary es denominado MyModule... '*... '* Implementos... '*end.Para que el compilador pueda reconocer todos los mdulos que pertenecen a un proyecto, es necesario especificarlos en el mdulo principal por medio de la palabra clave include seguida por un nombre del mdulo entre comillas. La extensin de estos ficheros no se debe incluir. Se permite slo un mdulo por clusula include. El nmero de las clusulas include no est limitado, pero todas ellas deben estar especificadas inmediatamente despus del nombre del programa (mdulo principal). Ejemplo:

program MyProgram ' Inicio de programa (mdulo principal denominado MyProgram) ' Otros mdulos incluidos son:include "utils" ' Mdulo utilsinclude "strings" ' Mdulo stringsinclude "MyUnit" ' Mdulo MyUnit...ORGANIZACIN DEL MDULO PRINCIPALEl mdulo principal se puede dividir en dos secciones:declaraciones y el cuerpo de programa. Qu es una declaracin en la programacin? Una declaracin es un proceso de definir las propiedades de los identificadores que se utilizarn en el programa. Como la mayora de los dems lenguajes de programacin, Basic tambin requiere que todos los identificadores estn declarados antes de ser utilizados en el programa. Si no es as, el compilador no puede interpretarlos correctamente. Ejemplo de la declaracin de una variable denominada distancia:dim distance as float ' Declarar la variable distanciaComo se puede ver, es una variable de punto flotante, o sea un nmero con posicin decimal opcional. Las otras dos variables estn declaradas y nombradas velocidad y tiempo. Ahora, se pueden utilizar en el siguiente programa:Esto es un ejemplo de cmo escribir el mdulo principal correctamente:

ORGANIZACIN DE OTROS MDULOSLos otros mdulos empiezan por la palabra clave module. Cada mdulo consiste en tres secciones: include, interface e implementation. Solo la seccin implementation es obligatoria. Empieza por la palabra clave implements. Vea el siguiente ejemplo:

IDENTIFICADORESLos identificadores son los nombres arbitrarios asignados a los objetos bsicos del lenguaje teles como constantes, variables, funciones, procedimientos etc. A alguien se le ocurri utilizar la palabra identificador en vez de utilizar el nombre. As de simple. Aqu estn las reglas a observar al utilizar los identificadores. Los identificadores pueden incluir cualquiera de los caracteres alfabticos A-Z (a-z), los dgitos 0-9 y el carcter subrayado '_'. El primer carcter de un identificador no puede ser un dgito. Ningn identificador puede contener caracteres especiales tales como ! [{ # $ % & etc. Basic no es sensible a la diferencia entre minsculas y maysculas, lo que significa que FIRST, first y First son identificadores idnticos. El smbolo ^ (signo de intercalacin) se utiliza para denotar un operador exponencial, el smbolo * (asterisco) se utiliza para denotar la multiplicacin, mientras que los dems smbolos tienen el significado comn. Las palabras clave ya utilizadas por el compilador no deben ser utilizadas como identificadores. Lista alfabtica de las palabras clave en Basic: Abstract And Array As At Asm Assembler Automated Bdata Begin Bit Case Cdecl Class Code Compact Const Constructor Contains Data Default Deprecated Destructor Dispid Dispinterface Div Do Downto Dynamic Else End Except Export Exports External Far File Finalization Finally For Forward Function Goto Idata If Ilevel Implementation In Index Inherited Initialization Inline Interface Io Is Label Large Library Message Mod Name Near Nil Not Object Of On Or Org Out Overload Override Package Packed Pascal Pdata Platform Private Procedure Program Property Protected Public Published Raise Read Readonly Record Register Reintroduce Repeat Requires Resourcestring Rx Safecall Sbit Set Sfr Shl Shr Small Stdcall Stored String Stringresource Then Threadvar To Try Type Unit Until Uses Var Virtual Volatile While With Write Writeonly Xdata XorUna lista de identificadores que no deben ser utilizados en el programaCOMENTARIOSLos comentarios son las partes del programa utilizados para aclarar las instrucciones de programa o para proporcionar ms informacin al respecto. En Basic, cualquier texto que sigue a un apstrofo (') se considera un comentario, Los comentarios no se compilan al cdigo ejecutable. El compilador es capaz de reconocer los caracteres especiales utilizados para designar dnde los comentarios comienzan y terminan y no hace nada de caso al texto entre ellos durante la compilacin. Aunque los comentarios no pueden afectar a la ejecucin de programa, son tan importantes como cualquier otra parte de programa. Aqu est el porqu... Con frecuencia es necesario mejorar, modificar, actualizar, simplificar un programa... No es posible interpretar incluso los programas simples sin utilizar los comentarios.

ETIQUETASLas etiquetas proporcionan el modo ms fcil de controlar el flujo de programa. Se utilizan para denotar las lneas particulares en el programa donde se deben ejecutar la instruccin de salto y la subrutina apropiada. Todas las etiquetas deben terminar por : as que el compilador las puede reconocer con facilidad.

CONSTANTESLas constantes son los nmeros o caracteres cuyo valor no puede ser cambiado durante la ejecucin de programa. A diferencia de las variables, las constantes se almacenan en la memoria ROM del microcontrolador para guardar el mayor espacio posible de la memoria RAM. El compilador reconoce las constantes por sus nombres y el prefijo const. Cada constante se declara bajo un nombre nico que debe ser un identificador vlido. Las constantes pueden ser en formatos decimal, hexadecimal o binario. El compilador los distingue por su prefijo. Si una constante no lleva prefijo, se considera decimal por defecto.FormatoPrefijoEjemplo

Decimalconst MAX = 100

Hexadecimal0x o $const MAX = 0xFF

BinarioPunto flotanteconst MAX = %11011101

Las constantes se declaran en la parte de declaracin del programa o de la rutina. La sintaxis es la siguiente:const nombre_de_constante [as type] = valorLos nombres de las constantes se escriben normalmente con maysculas. El tipo de una constante se reconoce automticamente por su tamao. En el siguiente ejemplo, la constante MINIMUM se considera un entero con signo y ocupa dos bytes de la memoria Flash (de 16 bits):const MINIMUM = -1000 ' Declarar la constante MINIMUM El tipo de constante se especifica opcionalmente. En la ausencia de tipo, el compilador lo considera el menor tipo conveniente al valor de constante.const MAX as longint = 10000const MIN = 1000 ' Compilador supone el tipo wordconst SWITCH = "n" ' Compilador supone el tipo char En el siguiente ejemplo, una constante denominada T_MAX se declara de modo que tenga el valor fraccional 32.60. Ahora, el programa puede comparar la temperatura anteriormente medida con la constante con el nombre con significado en vez del nmero 32.60.const T_MAX = 32.60 ' Declarar temperatura T_MAXconst T_MAX = 3.260E1 ' Otra forma de declarar la constante T_MAXUna constante de cadena consiste en una secuencia de caracteres. Debe estar encerrada entre comillas. Un espacio en blanco se puede incluir en la constante de cadena y representa un carcter. Las constantes de cadena se utilizan para representar cantidades no numricas tales como nombres, direcciones, mensajes etc.const Message_1 = "Press the START button" ' Mensaje 1 para LCDconst Message_2 = "Press the RIGHT button" ' Mensaje 2 para LCDconst Message_3 = "Press the LEFT button" ' Mensaje 3 para LCDEn este ejemplo, al enviar la constante Message_1 al LCD, el mensaje press the START button aparecer en la pantalla.VARIABLESUna variable es un objeto nombrado capaz de contener un dato que puede ser modificado durante la ejecucin de programa. Cada variable se declara bajo un nombre nicoque debe ser un identificador vlido. Por ejemplo, para sumar dos nmeros (nmero1 + nmero2) en el programa, es necesario tener una variable para representar qu es lo que llamamos suma en vida cotidiana. En este caso, nmero1, nmero2 y suma son variables. La sintaxis es la siguiente:dim nombre_de_variable as typeLas variables en Basic son de un tipo, lo que significa que es necesario especificar el tipo de dato que se asignar a la variable. Las variables se almacenan en la memoria RAM y el espacio de memoria ocupado (en bytes) depende de su tipo. Aparte de las declaraciones de una sola variable, las variables del mismo tipo, se pueden declarar en forma de una lista. Aqu, lista de identificadores es una lista de identificadores vlidos delimitados por comas, mientras que tipo puede ser cualquier tipo de dato.dim i, j, k as byte 'Definir variables i, j, kdim counter, temp as word 'Definir variables contador y tempSMBOLOSLos smbolos en Basic permiten crear los macros simples sin parmetros. Cualquier lnea de cdigo se puede reemplazar por un solo identificador. Los smbolos pueden aumentar legibilidad y reutilizacin de cdigo cuando se utilizan correctamente.

Los smbolos deben ser declarados al principio del mdulo, bajo el nombre del mdulo y la directiva opcional include. El mbito de un smbolo es siempre limitado al mdulo en el que ha sido declarado.symbol nombre_de_smbolo = cdigoAqu, nombre_de_smbolo debe ser un identificador vlido que se utilizar por todo el cdigo. El especificador cdigo puede ser cualquier lnea de cdigo (literales, asignaciones, llamadas de funcin etc.)symbol MAXALLOWED = 216 ' Smbolo MAXALLOWED para el valor numricosymbol OUT = PORTA ' Smbolo OUT para SFRsymbol MYDELAY = Delay_ms(762) ' Smbolo MYDELAY para llamada de procedimiento dim cnt as byte ' Variable cntmain:if cnt > MAXALLOWED then ' Programa comprueba si cnt > 216cnt = 0 ' Si lo es,OUT.1 = 0 ' los siguientes tres comandos MYDELAY ' se ejecutarn

end if... ' Si no lo es, el programa contina aquLos smbolos no se almacenan en la memoria RAM. El compilador reemplaza los smbolos por las lneas del cdigo apropiadas asignadas durante la declaracin.TIPOS DE DATOS EN BASICHay varios tipos de datos que se pueden utilizar en el lenguaje de programacin Basic. La siguiente tabla muestra el rango de valores que estos datos pueden tener cuando se utilizan en su forma bsica.Tipo de datoDescripcinTamao (Nmero de bits)Rango de valores

bitUn bit10 o 1

sbitUn bit10 o 1

byte, charCarcter80 ... 255

shortEntero con signo corto-127 ... 128

wordEntero sin signo160 ... 65535

integerEntero con signo16-32768 ... 32767

longwordPalabra de 32 bits320 ... 4294967295

longintPalabra de 32 bits asignada32-2147483648 ... 2147483647

floatPunto flotante321.17549435082*10-38 ... 6.80564774407*1038

CONVERSIN DE TIPOS DE DATOS AUTOMTICAEl compilador automticamente realiza la conversin implcita en los siguientes casos: si una sentencia requiere una expresin del tipo particular, y se utiliza la expresin de tipo diferente; si un operador requiere un operando de tipo particular, y se utiliza un operando de tipo diferente; si una funcin requiere un parmetro formal de tipo particular, y se le asigna el objeto de tipo diferente; y si el resultado de una funcin no corresponde al tipo del valor devuelto de la funcin declarada. PROMOCINCuando los operandos son de tipos diferentes, mediante la conversin implcita se realiza la promocin de tipo ms bajo a tipo ms alto, de la siguiente manera: bit byte short, byte/char integer, word, longint, longword integer, word longint, longword short, byte/char, integer, word, longint, longword floatRECORTE DE DATOSEn las sentencias de asignacin y en las sentencias que requieren una expresin de tipo particular, el valor correcto ser almacenado en el destino slo si el resultado de expresin no excede al rango del destino. Al contrario, si el resultado de la expresin resulta en un tipo ms complejo de lo esperado, los datos que exceden se recortarn, o sea los bytes ms altos se pierden.dim i as byte 'Variable i ocupa un solo byte de la memoria RAMdim j as word ' Variable j ocupa dos bytes de la memoria RAM

...j = $FF0Fi = j ' i se convierte en $0F, el byte ms alto $FF se pierdeCONVERSIN DE DATOS EXPLCITALa conversin explcita se puede ejecutar bajo cualquier expresin en cualquier punto al escribir la palabra clave de tipo deseado (byte, word, short, integer, longint, float...) delante de la expresin que ser convertida. La expresin debe estar encerrada entre parntesis. La conversin explcita no puede ser realizada bajo el operando de la izquierda del operador de asignacin.a = word(b) ' Conversin explcita de la expresin bword(b) = a ' Compilador informa de un errorComo no afecta a la representacin binaria de los datos, un caso especial es una conversin entre tipos de datos con signo y sin signo.dim a as bytedim b as short'...b = -1a = byte(b) ' a is 255, not -1' El dato no cambia su representacin binaria %11111111 ' pero el compilador la interpreta de la manera diferenteOPERADORESUn operador es un smbolo que denota una operacin aritmtica, lgica u otra operacin particular. Cada operacin se realiza sobre uno o ms operandos (variables o constantes) en una expresin. Adems, cada operador dispone de la ejecucin de prioridad y de la asociatividad. Si una expresin contiene ms de un operando, los operandos se ejecutarn en orden de su prioridad. Hay 4 categoras de prioridad en Basic. Los operadores que pertenecen a la misma categora tienen igual prioridad. Si dos o ms operandos tienen el mismo nivel de prioridad, las operaciones se realizan de izquierda a derecha. Los parntesis se utilizan para definir la prioridad de la operacin dentro de la expresin. A cada categora se le asigna una de dos reglas de asociatividad: de izquierda a derecha o de derecha a izquierda. Refirase a la siguiente tabla:PrioridadOperadoresAsociatividad

Alta@ not + -de derecha a izquierda

* / div mod and >de izquierda a derecha

+ - or xorde izquierda a derecha

Baja= < > =de izquierda a derecha

OPERADORES ARITMTICOSLos operadores aritmticos se utilizan para realizar operaciones aritmticas. Estas operaciones se realizan sobre los operandos numricos y siempre devuelven los resultados numricos. Las operaciones binarias se realizan sobre dos operandos, mientras que las operaciones unitarias se realizan sobre un operando. Todos los operadores aritmticos se asocian de izquierda a derecha.OperadorOperacin

+Adicin

-Resta

*Multiplicacin

/Divisin - punto flotante

divDivisin - redondear

modRemanente

DIVISIN POR CEROSi un cero (0) se utiliza explcitamente como el segundo operando en la operacin de divisin (x div 0), el compilador informa de un error y no generar un cdigo. En caso de una divisin implcita, o sea, en el caso de que el segundo operando sea un objeto cuyo valor es 0 (x div y, w y=0), el resultado ser indefinido.OPERADORES RELACIONALESLos operadores relacionales se utilizan para comparar dos variables y determinar la validez de su relacin. En mikroBasic, todos los operadores relacionales devuelven 255 si la expresin es evaluada como verdadera (true). Si una expresin es evaluada como falsa (false), el operador devuelve 0. Lo mismo se aplica a las expresiones tales como si la expresin es evaluada como verdadera, entonces...OperadorSignificadoEjemploCondicin de veracidad

>es mayor queb > asi b es mayor que a

>=es mayor o igual quea >= 5si a es mayor o igual que 5

0)sub function power(dim x, n as byte) as longint ' x y n son bytes, resultado es longintdim i as byte ' i es un byteresult = 1 ' resultado = 1 si n = 0if n > 0 thenfor i = 1 to nresult = result*xnext iend ifend subAhora, podemos llamar a la funcin power para hacer clculo de 312 por ejemplo:tmp = power(3, 12) ' Hacer clculo de 3*12LIBRERAS DE FUNCIONES Y PROCEDIMIENTOSLas declaraciones de todas las funciones y procedimientos utilizados en Basic se almacenan normalmente en los ficheros de mdulo especial y se les denominan libreras. Antes de utilizar una librera en el programa, es necesario especificar el mdulo apropiado por medio de la clusula include al principio de programa. Esto es una regla general. Si escribe un programa en el compilador mikroBasic PRO for PIC basta con marcar la librera deseada en la lista y el mdulo apropiado ser automticamente incluido en el proyecto. El compilador ya contiene un gran nmero de estas libreras. Si el compilador encuentra una funcin o procedimiento desconocidos durante la ejecucin de programa, primero va a buscar su declaracin en las libreras anteriormente marcadas.RUTINAS INTEGRADAS EN EL COMPILADOR MIKROBASIC PRO FOR PICAparte de las libreras de funciones y procedimientos, el compilador mikroBasic PRO for PIC proporciona un conjunto de las funciones integradas y tiles: Lo Hi Higher Highest Inc Dec Chr Ord SetBit ClearBit TestBit Delay_us Delay_ms Vdelay_Advanded_ms Vdelay_ms Delay_Cyc Clock_KHz Clock_MHz Reset ClrWdt DisableContextSaving SetFuncCall SetOrg GetDateTime GetVersionLas rutinas Delay_us y Delay_ms se generan en la parte del programa de la que se llaman.Vdelay_ms, Delay_Cyc y Get_Fosc_kHz son las rutinas actuales en Basic. Sus fuentes se pueden encontrar en el archivo Delays.mbas ubicado en el archivo uses del compilador.PREPROCESADORUn preprocesador es una parte integral de cada compilador. Su funcin es de reconocer y ejecutar las instrucciones del preprocesador. Qu son instrucciones del preprocesador? Son instrucciones especiales que no pertenecen al lenguaje Basic, sino que estn integrados en el compilador. Antes de compilar, el compilador inicia al preprocesador que pasa por el programa en bsqueda de estas instrucciones. Si encuentra una, el preprocesador las sustituir por otro texto que, dependiendo del tipo de comando, puede ser un archivo (comando include) o slo una corta sentencia de caracteres (comando define). Entonces, el proceso de compilar puede empezar. Las instrucciones pueden estar en cualquier parte del programa fuente y se refieren solamente a la parte del programa en la que aparecen hasta el final del programa.DIRECTIVA DEL PREPROCESADOR INCLUDEMuchos programas repiten con frecuencia el mismo conjunto de comandos un par de veces. Para escribir un programa ms rpidamente, estos comandos y declaraciones se agrupan normalmente en los mdulos particulares que se pueden incluir en el programa con facilidad por medio de la directiva include. Para decir con ms precisin, la directiva include importa el texto del otro documento en el programa, sea un conjunto de comandos o bien un conjunto de comentarios etc.

COMPILACIN CONDICIONALLas directivas de la compilacin condicional se utilizan generalmente para facilitar la modificacin y compilacin de los programas fuente para los diferentes microcontroladores. El compilador mikroBasic PRO for PIC soporta a la compilacin condicional. Todas las directivas de la compilacin condicional deben terminar dentro del mdulo en el que han empezado.DIRECTIVAS #IF, #ELIF, #ELSE, Y #ENDIFLas directivas condicionales #if, #elif, #else y #endif se ejecutan de manera similar a las sentencias condicionales comunes en Basic. Si una expresin escrita despus de #if tiene un valor distinto de cero, las lneas de programa que siguen a la directiva #ifsern interpretadas como un cdigo de programa vlido y compiladas en cdigo hex. La sintaxis es la siguiente:#if constant_expression_1 'Si expresin_de_constante_1 no es cero, 'seccin_1 ser compilada[#elif constant_expression_2 'Si expresin_de_constante_2 no es cero,] 'seccin_2 ser compilada...[#elif constant_expression_n 'Si expresin_de_constante_n no es cero,] 'seccin_n ser compilada[#else 'Si no se compila ninguna de las secciones anteriores] 'seccin_final ser compilada#endif 'Final de la directiva #if Cada directiva #if en un archivo fuente debe terminar por una directiva #endif de cierre correspondiente. Entre las directivas#if y #endifpuede haber cualquier nmero de las directivas #elif, pero slo se permite una directiva #else. Si est presente la directiva #else, debe ser la ltima directiva antes de la directiva #endif. Seccin puede ser cualquier cdigo de programa reconocido por el compilador o preprocesador. El preprocesador selecciona una seccin al evaluar la expresin_de_constante que sigue a cada directiva #if o #elif hasta encontrar una expresin_de_constante verdadera (distinta de cero). Si todas las expresiones-constantes son evaluadas como falsas o no aparecen ninguna directiva #elif, el preprocesador selecciona la seccin_final que sigue a la clusula #else. Si se omite la clusula #else y todas las expresiones_constantes en el bloque #if son evaluadas como falsas, no se seleccionar ninguna seccin para un procesamiento posterior. Por ltimo, resulta que solamente una seccin del cdigo ser compilada, aunque est vaca.PUNTEROSComo ya hemos mencionado, a cada objeto en el programa (variable, procedimiento, subrutina etc.) se le asigna una direccin de memoria particular. Al declarar una variable en el programa el compilador le asigna automticamente una localidad de la memoria RAMlibre. Durante la programacin, estas direcciones no son visibles para los programadores. La posibilidad de acceder a los diferentes objetos por sus nombres (identificadores) en vez de por sus direcciones es una de las ventajas principales de los lenguajes de programacin de alto nivel. En realidad, es ms fcil manejar las palabras (nombres) que los nmeros. Adems, el compilador se encarga de los objetos asociados y de sus direcciones. Direccionar los objetos al especificar sus nombres es denominado direccionamiento directo.

Sin embargo, a veces se necesita utilizar las direcciones de localidades de memoria. En este caso se utilizan los punteros - variables que almacenan la direccin de memoria de un objeto. Entonces, es posible acceder a los objetos que utilizan solamente los punteros. Por eso esta forma de direccionar es denominada direccionamiento indirecto.Antes de utilizar un puntero es necesario declarar su tipo de datos. Solo hay que anteponer el signo de intercalacin (^) al tipo.dim pointer_p as ^word ' puntero_p apunta al dato de tipo wordSe le recomienda almacenar una varible en una localidad de memoria RAM especfica, luego se debe utilizar la directiva absolute en el programa de la siguiente manera:dim variable_a as word absolute 12 ' variable_a ocupar una palabra ' (16 bits) en la direccin 12Para acceder a los datos en la localidad de memoria del puntero, necesita posponer el signo de la intercalacin (^) al nombre del puntero. Veamos el ejemplo de la declaracin del anteriormente mencionado puntero puntero_p , que apunta a la palabra (en este caso, es anteriormente definida variable_a almacenada en la direccin 12 en la RAM). A la variable apuntada variable_a se le asigna el valor 26:dim pointer_p as ^word 'Puntero_p a punta al dato de tipo word......pointer_p = 12 'Puntero_p apunta a la direccin de memoria 12...puntero_p^ = 26 'Variable a en la localidad de memoria 12 tiene valor 2'Similar a la directiva absolute utilizada para las variables, la 'directiva org especifica la direccin inicial de una rutina en la 'memoria ROM. Se aade a la declaracin de la rutina. Por ejemplo:sub procedure proc(dim par as word) org 0x200 ' El procedimiento empezar... ' en la direccin 0x200end subEn este caso, al puntero puntero_p se le asigna el valor 12 (puntero_p =12), lo que significa que la direccin de memoria 12 est especificada.

Si quiere cambiar el valor de una variable apuntada, basta con cambiar el valor del puntero y posponer el signo de intercalacin (^) al valor. Veamos la figura a la derecha: a la variable variable_a en la direccin 12 se le asigna el valor 26 por medio del puntero puntero_p.Los punteros pueden apuntar a los datos almacenados en cualquier espacio de memoria disponible y pueden residir en cualquier espacio de memoria disponible menos en el espacio de memoria de programa (ROM).@ OPERADOREl operador @ devuelve la direccin de un objeto, o sea, crea un puntero sobre su operando. Las siguientes reglas se aplican al operando @: Si X es una variable, @X devuelve la direccin de X. Si F es una rutina (funcin o procedimiento), @F crea un puntero a F. dim temp as wordptr_b as ^byteptr_arr as ^byte[10]arr as byte[10]main:ptr_b = @arr ' operador @ devolver ^bytetemp = @arr ' operador @ devolver ^byteptr_arr = @arr ' operador @ devolver ^byte[10]end.Si la variable X es de tipo matriz, el operador @ devolver el puntero a su primer elemento bsico, excepto en el caso de que la parte izquierda de la expresin en la que se utiliza X sea el puntero a matriz. En este caso, el operador @ devolver el puntero a matriz, y no a su primer elemento bsico.Estructura de programa en mikroBasic PRO for PIC:1. Cada programa normalmente empieza con un comentario que proporciona informacin sobre el propsito del programa, fecha de programa, programador, versin, cambios a la versin anterior etc. Estos comentarios (cabecera) no son obligatorios, pero es una buena costumbre escribirlos y tenerlos en el programa.2. Cada programa empieza con una directiva de programa seguida por el nombre de programa. 3. Si el programa contiene otros mdulos, aparte del mdulo principal, sus nombres se deben especificar al utilizar la directiva include (una directiva inlcude para cada mdulo). Por consiguiente, si el compilador durante la compilacin del mdulo principal llega a un objeto que no es declarado (funcin, variable etc.), primero va a buscar su declaracin dentro de los mdulos declarados. Si no encuentra la declaracin apropiada, el compilador informar de error. 4. La directiva include (si hay alguna) es seguida por la parte de cdigo que sirve de declarar variables, constantes, procedimientos, subprogramas, funciones y otros objetos que se utilizarn ms tarde en el programa. Estas declaraciones se utilizan para reservar los registros de la memoria RAM para almacenar los datos as como para ensear al compilador cmo ejecutar una funcin o un procedimiento. Por ejemplo, un dato de tipo byte ocupa un solo registro, mientras que un dato de tipo float ocupa cuatro registros.5. El programa principal empieza con la directiva main: (siempre seguida por dos puntos). Tambin es llamada cuerpo de programa.6. Cada programa termina con la directiva end. (siempre seguida por un punto).2.3 COMPILADOR MIKROBASIC PRO FOR PICTodo lo que usted ha ledo hasta ahora sobre la programacin en Basic es slo teora. Es til saberlo, pero no se olvide de que este lenguaje de programacin no est tan relacionado con algo concreto y tangible. Podr experimentar muchos problemas con los nombres exactos de los registros, sus direcciones, nombres de los bits de control particulares, y muchos ms al empezar a escribir su primer programa en Basic. El punto es que usted necesita ms que una teora para que el microcontrolador haga algo til. Teniendo en cuenta de que Es mejor prevenir que curar, hay que avisarle de todas las cosas por resolver antes de que empiece a escribir un programa para el microcontrolador. Antes que nada, necesita un programa instalado en la PC que eniende el lenguaje de programacin a utilizar y que proporciona un entorno de trabajo apropiado. No hay un compilador apropiado para un tipo de compilador, tampoco para todos los microcontroladores. Normalmente se utiliza un software para programar los similares microcontroladores de un fabricante. En las secciones anteriores hemos presentado el lenguaje mikroBasic, especialmente diseado para programar los PIC. Ahora, cuando sabe lo suficiente sobre ese lenguaje, es hora de presentar el software que utilizar para desarrollar y editar los proyectos. Este software se le denomina Entorno de desarrollo integrado (Integrated Developement Environment - IDE) e incluye todas las herramientas necesarias para desarrollar los proyectos (editor, depurador etc.).Como implica su nombre, mikroBasic PRO for PIC est pensado para escribir los programas para los microcontroladores PIC en Basic. Este compilador contiene las informaciones de arquitectura de los microcontroladores PIC (registros, sus direcciones exactas, mdulos de memoria, funcionamiento de sus mdulos, juego de instrucciones, disposicin de pines etc.). Adems incluye las herramientas apropiadas para programar los microcontroladores PIC. Lo primero que tiene que hacer al iniciar el compilador es seleccionar el chip y frecuencia de operacin de la lista. Esto no es un final, sino un comienzo. Por fin puede empezar a escribir el programa en Basic.El proceso de crear y ejecutar un proyecto contiene los siguientes pasos:1. Crear un proyecto (nombre de proyecto, configuracin de proyecto, dependencias entre archivos);2. Editar un programa;3. Compilar el programa y correccin de errores;4. Depurar (ejecutar el programa paso a paso para asegurarse de que se ejecutan las operaciones deseadas);5. Programar un microcontrolador (cargar el archivo .hex generado por el compilador en el microcontrolador utilizando el programador PICflash). INSTALAR MIKROBASIC PRO FOR PICLa instalacin del mikroBasic PRO for PIC es similar a la instalacin de cualquier programa en Windows. Todo el procedimiento se lleva a cabo por medio de los wizards (asistentes de instalacin):

Basta con seguir las instrucciones y pulsar sobre Next, OK, Next, Next... En general, es el mismo procedimiento menos la ltima opcin: 'Do you want to install PICFLASH v7.11 programmer?'. Para qu sirve este software? Como ya hemos dicho, el compilador compila un programa escrito en Basic en cdigo hex. El siguiente paso es cargar ese cdigo en el microcontrolador. Por eso es necesario instalar el programador PICFLASH. Hgalo! Una vez ms: Next, OK, Next, Next...

Una vez completada la instalacin del PICFLASH, el sistema operativo le preguntar a instalar otro programa similar. Es un software para programar una familia de los microcontroladores PIC que funcionan en modo de bajo consumo (3.3 V). Salte este paso.El ltimo paso - la instalacin del controlador (driver)!

Un controlador es un programa que permite al sistema operativo comunicarse con un perifrico. En este caso, este dispositivo es el programador (hardware) del sistema de desarrollo. Lo necesita seguramente. Pulse sobre Yes.

El controlador a instalar depende del sistema operativo utilizado. En este caso, el ordenador utiliza el sistema operativo de 32 bits Windows XP. Seleccione la carpeta Win 2000, XP, 2003 32-bit que contiene el controlador apropiado e inicie la instalacin.Otra vez, Next, OK, Next, Next...Bueno, todo est instalado para iniciar a programar!

IDE DEL MIKROBASIC PRO FOR PICAl iniciar el IDE del compilador mikroBasic PRO for PIC por primera vez, aparecer una ventana como se muestra a continuacin:

Desgraciadamente, una descripcin detallada de todas las opciones disponibles de este IDE nos tomara mucho tiempo. Por eso vamos a describir slo lo ms importante del compilador mikroBasic PROfor PIC. De todos modos, para obtener ms informacin presione el botn de Ayuda (Help) [F1]. En el captulo cuatro se presentan varios ejemplos y se da una explicacin detallada de cmo crear un nuevo proyecto y escribir un programa.PROJECT MANAGER (Administrador de proyecto)

Un programa escrito en el compilador mikroBasic PROfor PIC no es un archivo autnomo, sino que forma parte de un proyecto que incluye un cdigo hex, un cdigo ensamblador y otros archivos. Algunos de ellos se requieren para compilar el programa, mientras que otros se crean durante el proceso de compilacin. La ventana Project Manager le permite manejar todos los ficheros del proyecto. Basta con pulsar con el botn derecho del ratn sobre una carpeta y seleccionar la opcin que necesita para su proyecto.LIBRARY MANAGER

Las libreras contienen un gran nmero de funciones listas para ser utilizadas. Las libreras en mikroBasic proporcionan muchas facilidades para escribir programas para los microcontroladores PIC. El compilador debe conocer todas las dependencias del archivo fuente de mikroBasic para compilarlo apropiadamente. Abra la ventana Library Manager, y marque las que quiere utilizar en el programa. Al marcar una librera, se aade automticamente al proyecto y se enlaza durante el proceso de la compilacin. As, no necesita incluir las libreras manualmente en sus archivos del cdigo fuente por medio de la directiva del preprocesador #include. Por ejemplo, si su programa utiliza un LCD no hace falta escribir nuevas funciones ya que al seleccionar la librera Lcd, usted podr utilizar funciones listas para ser utilizadas de la librera Lcd en su programa. Si esta librera no est seleccionada en la ventana Library Manager, cada vez que intente utilizar una funcin de la librera LCD, el compilador le informar de un error. Una descripcin de cada librera est disponible al pulsar con el botn derecho del ratn sobre su nombre y seleccionar la opcin Help.CODE EXPLORER (Explorador de cdigo)

La ventana Code Explorer le permite localizar funciones y procedimientos dentro de los programas largos. Por ejemplo, si usted busca una funcin utilizada en el programa, basta con pulsar dos veces sobre su nombre en esta ventana, y el cursor estar automticamente posicionado en la lnea apropiada en el programa.PROJECT SETTINGS (Configuracin de proyectos)

Al compilar un proyecto, el compilador genera el archivo .hex que se cargar en el microcontrolador. Estos archivos sern diferentes ya que depende del tipo del microcontrolador as como del propsito de la compilacin. Por esta razn es necesario ajustar algunos parmetros de proyectos utilizando la ventana Project Settings.Device (dispositivo): Al seleccionar el tipo del microcontrolador a utilizar permite al compilador extraer el archivo de definicin asociado. El archivo de definicin de un microcontrolador contiene la informacin especfica de sus registros SFR, de sus direcciones de memoria y algunas variables de programacin especficas a ese tipo del microcontrolador. Es obligatorio crear un archivo .hex compatible.Oscillator (oscilador): Se debe especificar la velocidad de operacin del microcontrolador. Por supuesto, este valor depende del oscilador utilizado. El compilador la necesita para compilar rutinas, lo que requiere informacin del tiempo (por ejemplo, la funcin Delay_ms). Ms tarde, el programador necesitar esta informacin tambin. La velocidad de operacin se configura de modo que permita al oscilador interno del microcontrolador funcionar a una frecuencia seleccionada.Build/Debugger Type: Todo el proceso de compilar (building) est compuesto por anlisis sintctico (parsing), compilar, enlazar (linking) y generar los archivos .hex. El tipo de compilacin le permite ajustar el modo de compilacin. Dependiendo del modo seleccionado, difieren los archivos generados a cargar en el microcontrolador.Build type - release: Al elegir esta opcin, el compilador no puede afectar ms a la ejecucin de programa despus de la compilacin. El programa a cargar en el microcontrolador no ser modificado de ninguna manera.Build type - ICD debug: El archivo .hex generado contiene los datos adicionales que permiten el funcionamiento del depurador. Una vez completado el proceso de la compilacin y cargado el programa en la memoria del microcontrolador, el compilador se queda conectado al microcontrolador por medio del cable USB y el programador, y todava puede afectar a su funcionamiento. Una herramienta denominada mikroICD (Depurador en circuito - In Circuit Debugger) permite ejecutar el programa paso a paso y proporcionar un acceso al contenido actual de todos los registros del microcontrolador.El simulador software se puede utilizar en ambos modos de compilacin para el propsito de depurar. Le permite simular su programa al reproducir el comportamiento del microcontrolador. El simulador no utiliza los dispositivos reales para simular el funcionamiento del microcontrolador, as que algunas operaciones no pueden ser reproducidas (por ejemplo, interrupcin). De todos modos, resulta ms rpido depurar un programa por medio de un simulador. Adems, no se requiere ningn dispositivo destino. Note que es posible modificar cualquier configuracin en cualquier momento mientras se edita el programa. No se olvide de recompilar y reprogramar su dispositivo despus de modificar una configuracin.EDITAR Y COMPILAR PROGRAMASCODE EDITOR (Editor de cdigo)El proceso de escribir y editar programas se debe realizar dentro de la ventana principal del IDE denominada Code Editor. Un gran nmero de opciones utilizadas para configurar sus funciones y el diseo se encuentran en el men Tools/Options [F12]. Al escribir el programa no se olvide de los comentarios. Los comentarios son muy importantes para depurar y mejorar el programa. Adems, aunque el compilador no tenga las restricciones de formateo, siempre debe seguir a las mismas reglas de editar (como en los ejemplos proporcionados en este libro). Como no hay limitaciones de extensin, no vacile en utilizar los espacios en blanco para hacer su cdigo ms legible.

Al escribir un programa, compile su cdigo de forma regular con el propsito de corregir cunto ms errores de sintaxis. Asimismo usted puede compilar su programa cada vez que se complete la redaccin de una nueva funcin as como probar su comportamiento al utilizar modo de depuracin. De este modo, resulta ms fcil solucionar los errores de programa. De lo contrario, usted tendr que editar el programa entero.COMPILAR Y SOLUCIONAR ERRORESPara compilar su cdigo, pulse sobre la opcin Build en el men Project. En realidad, el proyecto entero se ha compilado, y si la compilacin se ha realizado con xito, se generarn los archivos de salida (asm, .hex etc.). Una compilacin se ha realizado con xito si no se ha encontrado ningn error. Durante el proceso de compilacin se generan muchos mensajes que se visualizan en la ventana Messages. Estos mensajes consisten en informacin, advertencia y errores. Cada error encontrado se asocia con su lnea de programa y su descripcin. Como un error en su cdigo puede generar mucho ms errores, simplemente debe intentar solucionar el primer error en la lista y despus recompile su programa. En otras palabras, es recomendable solucionar los errores uno a uno.

En el ejemplo anterior el programa informa de un error de sintaxis en la lnea 80. La compilacin le permite corregir su programa por medio de solucionar todos los errores en mikroBasic. Cuando todos los errores se solucionen, su programa est listo para ser cargado en el microcontrolador. De todas formas, su tarea todava no est terminada, porque an no sabe si su programa se comporta como se esperaba o no.DEPURAR EL PROGRAMAComo ya hemos visto, hay dos modos de depurar: un depurador software que simula el funcionamiento del microcontrolador (modo por defecto) y depurador hardware (mikroICD) que lee directamente el contenido de la memoria del microcontrolador. El procedimiento de depuracin es el mismo sin reparar en el modo elegido. En caso de elegir la opcin ICD debug, hay que cargar el programa en el microcontrolador antes de depurarlo. La depuracin es un paso muy importante ya que permite probar el programa despus de una compilacin realizada con xito, o solucionar los errores descubiertos mientras se ejecuta el programa.Para iniciar la depuracin, pulse sobre la opcin Start debugger del men Run. El editor del cdigo ser ligeramente modificado automticamente y aparecer una ventana denominada Watch Values. El principio de depuracin se basa en ejecutar el programa paso a paso y monitorear el contenido de los registros y los valores de las variables. De este modo, es posible comprobar el resultado de un clculo y ver si algo inesperado ha ocurrido. Al ejecutar el programa paso a paso, podr localizar los problemas con facilidad. Durante una depuracin el programa ser modificado, por lo que usted siempre debe recompilar el programa despus de cada correccin, y reiniciar el depurador para comprobar qu ha sido modificado.SIMULADOR SOFTWARESi quiere ser un programador y dedicarse a programar los microcontroladores, tenga en cuenta de que los programas nunca funcionan al primer intento. Por eso, empiece a funcionar un simulador. El simulador es una parte integral del compilador utilizado para simular el funcionamiento del microcontrolador.

Antes de empezar a utilizar el simulador, seleccione el modo de funcionamiento en la ventana Project Settings (Build type - release), compile el programa y pulse sobre la opcin Run /Start Debugger. El compilador se pone automticamente en el modo de simulacin. En este modo se monitorea el estado de todos los bits de registros y se le permite ejecutar el programa paso a paso durante el monitoreo del funcionamiento del microcontrolador en la pantalla. Hay varios iconos, utilizados para el funcionamiento del simulador, que aparecern en la barra de herramientas cuando el compilador entre en este modo.

Estos iconos tienen el siguiente significado: Step Into: Ejecuta una sola instruccin. Cuando la instruccin es una llamada a una subrutina, el depurador har un salto a la subrutina y se detendr despus de ejecutar la primera instruccin dentro de la subrutina. Step Over: Se ejecuta una sola instruccin. Cuando la instruccin es una llamada a una subrutina, el depurador no har un salto a la subrutina, sino que se ejecutar toda la subrutina. El depurador se detiene a la primera instruccin despus de la llamada a la subrutina. Parece como si se saltara una lnea de programa aunque se ha ejecutado toda la subrutina. El estado de todos los registros ser cambiado. Este comando se ejecuta cuando es necesario acelerar la ejecucin de los bucles de programa largos. Run To Cursor: El programa se ejecuta hasta la lnea en la que se encuentre el cursor. Step out: Se ejecutan las dems instrucciones dentro de la rutina. El depurador se detiene inmediatamente al salir de la subrutina.Los puntos de ruptura hacen el proceso de depurar los programas de una manera ms eficiente, puesto que permiten ejecutar el programa a toda velocidad y detenerlo automticamente en una lnea especfica (punto de ruptura). Eso resulta muy til, permitindole comprobar slo las partes crticas del programa y no perder el tiempo probando todo el programa lnea a lnea. Para aadir o quitar un punto de ruptura basta con pulsar sobre la lnea apropiada en el lado izquierdo del editor del cdigo, o presionar [F5]. Una pequea ventana denominada Breakpoints muestra dnde estn los puntos de ruptura. Note que las lneas designadas como puntos de ruptura estn marcadas en rojo.

La lnea que se est ejecutando actualmente est marcada en azul. Es posible leer el contenido de registros y variables seleccionados en la ventana Watch Values en cualquier momento. Para saltar directamente a los puntos de ruptura, utilice el comando Run/Pause Debugger.VENTANA WATCH VALUES

El depurador software y hardware tienen la misma funcin de monitorear el estado de los registros durante la ejecucin del programa. La diferencia es que el depurador software simula ejecucin de programa en una PC, mientras que el depurador ICD (depurador hardware) utiliza el microcontrolador. Cualquier cambio de estado lgico de los pines se indica en el registro (puerto) apropiado. Como la ventana Watch Values permite monitorear el estado de todos los registros, resulta fcil comprobar si un pin est a cero o a uno. La ltima modificacin est marcada en rojo en la ventana Watch Values. Esto le permite localizar la modificacin en el archivo list durante el proceso de la depuracin. Para visualizar esta ventana es necesario seleccionar la opcin View/Windows/Watch Values. Entonces usted puede hacer una lista de re-gistros/variables que quiere monitorear.STOPWATCH (Cronmetro)

Si quiere saber cunto tiempo tarda un microcontrolador en ejecutar una parte del programa, seleccione la opcin Run/View Stopwatch. Aparecer una ventana como se muestra en la figura a la derecha.Cmo funciona un cronmetro? Eso es pan comido...El tiempo que tarda un comando (step into, step over, run/pause etc.) en ejecutarse por el depurador se mide automticamente y se visualiza en la ventana Stopwatch. Por ejemplo, se mide tiempo para ejecutar un programa, tiempo para ejecutar el ltimo paso etc.DEPURADOR EN CIRCUITOLa otra forma de comprobar la ejecucin de programa es al utilizar el depurador mikroICD (depurador en circuito). El mikroICD (depurador en circuito) es una parte integral del programador PICflash. Se utiliza con el propsito de probar y depurar los programas. El proceso de probar y depurar se realiza al monitorizar los estados de todos los registros dentro del microcontrolador durante su funcionamiento en entorno real. Para habilitar la depuracin, es necesario seleccionar las opciones Build Type-ICD Debug y Debugger-mikroICD antes de cargar el programa en el microcontrolador. Tan pronto como se inicie el depurador mikroICD, aparecer una ventana como se muestra en la siguiente Figura. El depurador mikroICD se comunica con el microcontrolador PIC por sus pines utilizados para la programacin. Por eso no se pueden utilizar como pines de E/S durante la ejecucin de la depuracin de programa. Durante la operacin del depurador mikroICD, el programador y la PC deben estar conectados al utilizar un cable USB.

Opciones del depurador mikroICD: Start Debugger [F9] Run/Pause Debugger [F6] Stop Debugger [Ctrl+F2] Step Into [F7] Step Over [F8] Step Out [Ctrl+F8] Toggle Breakpoint [F5] Show/Hide Breakpoints [Shift+F4] Clear Breakpoints [Ctrl+Shift+F4]Cada de estos comandos se activa por medio de los atajos de teclado o al pulsar sobre el icono apropiado en la ventana Watch Values.El depurador mikroICD tambin ofrece funciones tales como ejecutar el programa paso a paso, detener la ejecucin de programa para monitorear el estado de los registros actualmente activos por medio de los puntos de ruptura, monitorear los valores de algunas variables etc. El siguiente ejemplo muestra una ejecucin de programa paso a paso utilizando el comando Step Over.

Paso1:

En este ejemplo la lnea de programa 31 est marcada por el azul, lo que quiere decir que es la siguiente en ser ejecutada. El estado actual de todos los registros dentro del microcontrolador se puede visualizar en la ventana Watch Values del mikroICD.Paso 2:

Despus de ejecutar el comando Step Over [F8] el microcontrolador ejecutar la lnea de programa 31. La siguiente lnea en ser ejecutada (32) est marcada por el azul. El estado de los registros cambiados durante la ejecucin de esta instruccin se puede visualizar en la ventana Watch Values.CARGAR EL PROGRAMA EN EL MICROCONTROLADORSi ha solucionado todos los errores en su cdigo y cree que su programa est listo para ser utilizado, el siguiente paso es cargarlo en el microcontrolador. El programador PICflash se utiliza para este propsito. Es una herramienta diseada para programar todos los tipos de microcontroladores PIC. Est compuesto por dos partes: La parte hardware se utiliza para poner en el bfer un cdigo hexadecimal (el programa a ser cargado en el microcontrolador) y para programar el microcontrolador por medio de niveles de voltaje especficos. Durante el proceso de la programacin, un nuevo programa se escribe en la memoria flash del microcontrolador, mientras que el programa anterior se borra automticamente. La parte de software se encarga de enviar el programa (archivo .hex) a la parte hardware del programador por medio de un cable USB. Se activa al pulsar sobre la opcin mE_Programmer del men Tools o al pulsar [F11]. Por consiguiente, es posible modificar algunas configuraciones del programador y controlar el funcionamiento de la parte hardware (Cargar, Escribir, Verificar...).

Se puede reprogramar el microcontrolador tantas veces como se necesite.HERRAMIENTAS DEL COMPILADOREl compilador mikroBasic PRO for PIC proporciona herramientas que en gran medida simplifican el proceso de escribir el programa. Todas estas herramientas se encuentran en el men Tools. En la siguiente seccin vamos a darle una breve descripcin de todas ellas.TERMINAL USART

El terminal USART representa una sustitucin para la estndar Windows Hyper Terminal. Se puede utilizar para controlar el funcionamiento del microcontrolador que utiliza la comunicacin USART. Tales microcontroladores estn incorporados en un dispositivo destino y conectados al conector RS232 de la PC por medio de un cable serial. La ventana USART terminal dispone de opciones para configurar la comunicacin serial y visualizar los datos enviados/recibidos.EDITOR EEPROM

Al seleccionar la opcin EEPROM Editor del men Tools, aparecer una ventana como se muestra en la siguiente figura. As es cmo funciona la memoria EEPROM del microcontrolador. Si quiere cambiar de su contenido despus de cargar el programa en el microcontrolador, sta es la forma correcta de hacerlo. El nuevo contenido es un dato de un tipo especfico (char, int o double), primero debe seleccionarlo, introducir el valor en el campo Edit Value y pulsar sobre Edit. Luego, pulse sobre el botn Save para guardarlo como un documento con extensin .hex. Si la opcin Use EEPROM in Project est activa, los datos se cargarn automticamente en el microcontrolador durante el proceso de la programacin.VENTANA ASCII CHARTSi necesita representar numricamente un carcter ASCII, seleccione la opcin ASCII chart del men Tools. Aparecer una tabla, como se muestra en la figura que est a continuacin.

Usted probablemente sabe que cada tecla de teclado est asociada con un cdigo (cdigo ASCII). Como se puede ver, los caracteres que representan los nmeros tienen valores diferentes. Por esta razn, la instruccin de programa para visualizar el nmero 7 en un LCD no visualizar este nmero, sino el equivalente a la instruccin BEL. Si enva el mismo nmero en forma de un carcter a un LCD, obtendr el resultado esperado - nmero 7. Por consiguiente, si quiere visualizar un nmero sin convertirlo en un carcter apropiado, es necesario aadir el nmero 48 a cada dgito en el que consiste el nmero a visualizar.EDITOR DE SIETE SEGMENTOSUn editor de siete segmentos le permite determinar con facilidad el nmero a poner en un puerto de salida con el propsito de visualizar un smbolo deseado. Por supuesto, se da por entendido que los pines del puerto deben estar conectados a los segmentos del visualizador de manera apropiada. Basta con colocar el cursor en cualquier segmento del visualizador y pulsar sobre l. Se visualizar inmediatamente el nmero a introducir en el programa.

LCD CUSTOM CHARACTER (Caracteres LCD definidos por el usuario)Adems de los caracteres estndar, el microcontrolador tambin puede visualizar los caracteres creados por el programador. Al seleccionar la herramienta LCD custom character, se evitar un pesado trabajo de crear funciones para enviar un cdigo apropiado a un visualizador. Para crear un smbolo, pulse sobre los cuadros pequeos en la ventana LCD custom character, luego seleccione la posicin y la fila y pulse sobre el botn generate. El cdigo apropiado aparece en otra ventana. No es necesita pulsar ms. Copy to Clipboard (copiar al portapapeles) - Paste (pegar)...

GENERADOR DE MAPA DE BITS PARA UN LCD GRFICOEl generador de mapa de bits para un LCD grfico es una herramienta insustituible en caso de que el programa que escribe utilice el visualizador LCD (GLCD). Esta herramienta le permite visualizar un mapa de bits con facilidad. Seleccione la opcin Tools/Glcd Bitmap Editor aparecer la ventana apropiada. Para utilizarlo, seleccione el tipo de visualizador a utilizar y cargue un mapa de bits. El mapa de bits debe ser monocromtico y tener la resolucin apropiada del visualizador (128 x 64 pxeles en este ejemplo). El procedimiento a seguir es igual que en el ejemplo anterior: Copy to Clipboard...

Un cdigo generado que utiliza herramientas para controlar los visualizadores LCD y GLCD contiene funciones de la librera Lcd. Si las utiliza en el programa, no se olvide de marcar la caja de chequeo junto a esta librera en la ventana Library Manager. As el compilador ser capaz de reconocer estas funciones correctamente.LIBRARAS

Uno de los elementos ms importantes del compilador mikroBasic PRO for PIC es Library Manager, que por supuesto merece nuestra atencin. Para que una funcin o un procedimiento realice una cierta tarea al escribir un programa, basta con encontrarla/encontrarlo en una de las libreras incluidas en el compilador y utilizarla. Una librera representa un archivo llamado cabecera. Contiene un conjunto de variables y constantes escritas en mikroBasic. Cada librera tiene un propsito especfico. Por ejemplo, para que un procedimiento genere una seal de audio, abra la librera Sound en la ventana Library Manager y pulse dos veces sobre el procedimiento apropiado Sound_Play. Una descripcin detallada de este procedimiento aparece en la pantalla. Copelo en su programa y ajuste los parmetros apropiados. Al marcar esta librera, sus funciones estarn disponibles y no ser necesario utilizar la librera include.

El mikroBasic PRO for PIC incluye las libreras miscelneas y las libreras para el hardware.LIBRERAS MISCELNEASLas libreras miscelneas contienen algunas funciones de propsito general:LibraraDescripcin

Button LibraryEliminar la influencia del rebote de contacto

Conversions LibraryRutinas para conversiones de nmeros en cadenas y BCD/decimal

C Type LibraryProbar y convertir los caracteres

String LibraryAutomatizar las tareas relacionadas con las cadenas

Time LibraryRutinas para calcular el tiempo en el formato de tiempo UNIX

Trigon LibraryFunciones trigonomtricas

LIBRARIES LIBRERAS PARA EL HARDWARELas libreras para el hardware incluyen las funciones utilizadas para controlar el funcionamiento de los mdulos hardware:LibraraDescripcin

ADC LibraryUtilizada para el funcionamiento del convertidor A/D

CAN LibraryUtilizada para las operaciones con el mdulo CAN

CANSPI LibraryUtilizada para las operaciones con el mdulo CAN externo (MCP2515 o MCP2510)

Compact Flash LibraryUtilizada para las operaciones con las tarjetas de memoria Compact Flash

EEPROM LibraryUtilizada para las operaciones con la memoria EEPROM incorporada

Ethernet PIC18FxxJ60 LibraryUtilizada para las operaciones con el mdulo Ethernet incorporado

Flash Memory LibraryUtilizada para las operaciones con la memoria Flash incorporada

Graphic Lcd LibraryUtilizada para las operaciones con el mdulo LCD grfico con resolucin 128x64

IC LibraryUtilizada para las operaciones con el mdulo de comunicacin serial I2C incorporado

Keypad LibraryUtilizada para las operaciones con el teclado (botones de presin 4x4)

Lcd LibraryUtilizada para las operaciones con el LCD (de 2x16 caracteres)

Manchester Code LibraryUtilizada para la comunicacin utilizando el cdigo Manchester

Multi Media Card libraryUtilizada para las operaciones con las tarjetas multimedia MMC flash

OneWire LibraryUtilizada para las operaciones con los circuitos utilizando la comunicacin serial One Wire

Port Expander LibraryUtilizada para las operaciones con el extensor de puertos MCP23S17

PS/2 LibraryUtilizada para las operaciones con el teclado estndar PS/2

PWM LibraryUtilizada para las operaciones con el mdulo PWM incorporado

RS-485 LibraryUtilizada para las operaciones con los mdulos utilizando la comunicacin serial RS485

Software IC LibraryUtilizada para simular la comunicacin I2C con software

Software SPI LibraryUtilizada para simular la comunicacin SPI con software

Software UART LibraryUtilizada para simular la comunicacin UART con software

Sound LibraryUtilizada para generar las seales de audio

SPI LibraryUtilizada para las operaciones con el mdulo SPI incorporado

SPI Ethernet LibraryUtilizada para la comunicacin SPI con el mdulo ETHERNET (ENC28J60)

SPI Graphic Lcd LibraryUtilizada para la comunicacin SPI de 4 bits con el LCD grfico

SPI Lcd LibraryUtilizada para la comunicacin SPI de 4 bits con el LCD (de 2x16 caracteres)

SPI Lcd8 LibraryUtilizada para la comunicacin SPI de 8 bits con el LCD

SPI T6963C Graphic Lcd LibraryUtilizada para la comunicacin SPI con el LCD grfico

UART LibraryUtilizada para las operaciones con el mdulo UART incorporado

USB HID LibraryUtilizada para las operaciones con el mdulo USB incorporado