Top Banner
MICROCONTROLADORES CURSO DE MICROCONTROLADORES EL MPLAB (I) Francisco Javier Tortosa Martínez Ingeniero de Sistemas Indytel Sistemas S.L. www.microladder.com Fernando Remiro Domínguez Profesor de Sistemas Electrónicos IES. Juan de la Cierva www.terra.es/personal/fremiro CURSO DE MICROCONTROLADORES EL MPLAB (I) En el número 178 , ya publicamos un manual de usuario del MPLAB en su versión de 16 bits, pero la verdad que en podo o mejor dicho en casi nada se parece a esta versión de 32 bits con la que estamos trabajando ahora. Por lo tanto antes de seguir analizando otros microcontroladores de Microchip, nos hemos propuesto publicar este manual de usuario del MPLAB IDE, tanto para los nuevos usuarios de los estos microcontroladores, como para algunos que son más expertos, y no le sacan todo su posible potencial de uso. 36 RESISTOR Foto 1.- Logotipo del MPLAB COMO OBTENER EL PROGRAMA Lo primero que debemos hacer es obtener el programa que es de libre disposición y que nos lo ofrece la empresa Microbio en su web www.microchip.com y ya en la página principal en el apartado de design encontramos un enlace al MPLAB IDE, pulsamos sobre él y al final de esta nueva página encon- tramos un enlace de descarga en el que pone MPLAB IDE v8.02 Inte- rim Release Zipped Installation, pul- sando con el botón auxiliar del ratón lo guardamos en un subdirectorio de nuestro disco duro. Como el archivo que hemos descargado está compri- mido en formato Zip, lo extraemos en un subdirectorio y se ejecuta el archivo MP802_Install. El MPLAB IDE está desarrolla- do bajo el sistema operativo Win- dows. Es un entrono para el diseño de los microcontroladores PIC y dsPIC. Con el MPLAB se puede: Crear y revisar código fuente a través de su editor. Ensambla, compila y linkar el código fuente. Depuración siguiendo el flujo del programa en el simulador o emulando en el circuito en tiempo real. Cronometra el tiempo de ejecu- ción en el simulador o en el emu- lador Visualiza las variables en la ven- tana del reloj Permite programar el firmware utilizando diversos programado- res. COMENZANDO CON EL MPLAB IDE Una vez instalado el programa, se recomienda seguir los siguientes pasos. 1. Como el path o camino absoluto de los ficheros de trabajo del MPLAB no deben exceder de 62 36 Microcontrolador 11/3/08 09:48 Página 36
30

CURSO DE MICROCONTROLADORES EL MPLAB

Jul 03, 2015

Download

Documents

ESTE ES EL COMPLEMENTO DEL CURSO DE MICROCONTROLADORES PIC16F87X
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: CURSO DE MICROCONTROLADORES EL MPLAB

MICR

OCON

TROL

ADOR

ESCURSO DE MICROCONTROLADORES

EL MPLAB (I)Francisco Javier Tortosa MartínezIngeniero de SistemasIndytel Sistemas S.L.www.microladder.com

Fernando Remiro DomínguezProfesor de Sistemas Electrónicos

IES. Juan de la Ciervawww.terra.es/personal/fremiro

CURSO DE MICROCONTROLADORES EL MPLAB (I)

En el número 178 , yapublicamos un manual deusuario del MPLAB en suversión de 16 bits, pero laverdad que en podo o mejordicho en casi nada se parecea esta versión de 32 bits conla que estamos trabajandoahora. Por lo tanto antes deseguir analizando otrosmicrocontroladores deMicrochip, nos hemospropuesto publicar estemanual de usuario delMPLAB IDE, tanto para losnuevos usuarios de los estosmicrocontroladores, comopara algunos que son másexpertos, y no le sacan todosu posible potencial de uso.

36RESISTOR

Foto 1.- Logotipo del MPLAB

COMO OBTENER ELPROGRAMA

Lo primero que debemos haceres obtener el programa que es delibre disposición y que nos lo ofrecela empresa Microbio en su webwww.microchip.com y ya en lapágina principal en el apartado dedesign encontramos un enlace alMPLAB IDE, pulsamos sobre él yal final de esta nueva página encon-tramos un enlace de descarga en elque pone MPLAB IDE v8.02 Inte-rim Release Zipped Installation, pul-sando con el botón auxiliar del ratónlo guardamos en un subdirectorio denuestro disco duro. Como el archivo

que hemos descargado está compri-mido en formato Zip, lo extraemosen un subdirectorio y se ejecuta elarchivo MP802_Install.

El MPLAB IDE está desarrolla-do bajo el sistema operativo Win-dows. Es un entrono para el diseñode los microcontroladores PIC ydsPIC. Con el MPLAB se puede: • Crear y revisar código fuente a

través de su editor. • Ensambla, compila y linkar el

código fuente. • Depuración siguiendo el flujo del

programa en el simulador oemulando en el circuito en tiemporeal.

• Cronometra el tiempo de ejecu-ción en el simulador o en el emu-lador

• Visualiza las variables en la ven-tana del reloj

• Permite programar el firmwareutilizando diversos programado-res.

COMENZANDO CON ELMPLAB IDE

Una vez instalado el programa,se recomienda seguir los siguientespasos.1. Como el path o camino absoluto

de los ficheros de trabajo delMPLAB no deben exceder de 62

36 Microcontrolador 11/3/08 09:48 Página 36

Page 2: CURSO DE MICROCONTROLADORES EL MPLAB

caracteres, se recomienda crearuna carpeta en el directorio raizde nuestro disco duro, en mi casoyo tengo creada una carpeta que

denomino Trabajo y dentro deella, una carpeta con cada micro-controlador o gran proyecto reali-zado con los microcontroladores

PIC, por ejemplo C:Trabajo/Pic16F876A.

2. Para empezar a trabajar con elMPLAB IDE, hacer doble clic

MICR

OCON

TROL

ADOR

ES

37RESISTOR

Figura 1.- Programas que aparecen al abrir el archivo zip de la carpeta MP802.

Figura 2.- Pantalla que aparece al ejecutar por primera vez el MPLAB IDE

36 Microcontrolador 11/3/08 09:48 Página 37

Page 3: CURSO DE MICROCONTROLADORES EL MPLAB

en el icono que aparece despuésde la autoinstalación o Start>Pro-g rams>Mic roch ip>MPLABselecto IDE vx.xx>MPLAB IDE.Aparecerá una pantalla desplega-ble como la de la figura 2.

3. Seguidamente seleccionaremos eldispositivo con el que vamos atrabajar, para ello se debe selec-cionar en la barra de herramientasel menú Configure>Select Devicey seleccionar el microcontroladorque aparece en la lista de disposi-tivos, con el que se desea trabajar,en nuestro caso el PIC16F876A.Los "Leds" indican que elemen-

tosIDE del MPLAB dan soporte aldispositivo. • El Led verde indica soporte total.• Una luz amarilla indica el apoyo

preliminar es decir que solo permi-te hacer algunas cosas en particu-lar para el MPLAB IDE con estaherramienta y este dispositivo. Sedebe entender que a menudo unaluz amarilla en lugar de verde setoma para los nuevos dispositivosque necesitan rápidamente un apo-yo y no da tiempo a desarrollartodas las funciones.

• Un LED rojo indica que el disposi-tivo no tiene apoyo para este ele-mento. El apoyo puede desarrollar-se posteriormente o ser impropiopara la herramienta, por ejemplo,los dsPIC que no pueden apoyarseMPLAB ICE 2000.

4. Para empezar a escribir nuestroprimer programa, debemos selec-cionar en la barra de menú File>New o seleccionar el icono conla misma función.

5. Seguidamente escribimos nuestroprograma, que en este caso con-siste en leer unos interruptoresque conectamos en el PORTA(líneas RA0:RA5) y muestrasobre las líneas RB0:RB5 el valorleído. El programa puede serel que seguidamente se muestray que hemos denominadoEjem_1.asm.

Para salvar el fichero fuente seselecciona File>Save As…. Apareceun cuadro de diálogo como el que semuestra en la figura 6, en el que se

MICR

OCON

TROL

ADOR

ES

38RESISTOR

Figura 3 .-Cuadro de diálogo de selección de dispositivo.

Figura 4.- Pantalla para la selección del menú de un nuevo archivo.

36 Microcontrolador 11/3/08 09:48 Página 38

Page 4: CURSO DE MICROCONTROLADORES EL MPLAB

solicita el nombre del archivo,que nosotros hemos llamadoEjemp1.asm.

Al salvar el programa, el usuarioverá como cambia el color del textodel fichero fuente, los comentarios

se ven en verde, las instrucciones enazul las etiquetas y nombres deregistro en rojo tejo.

MICR

OCON

TROL

ADOR

ES

39RESISTOR

;********************************************************************************************;Ejem_1.asm;Ejemplo para simulación Entradas/Salidas en el entrenador;Sencillo ejemplo de E/S con los PIC 16F87XA;Leer el estado de los 5 interruptores conectados en las líneas(RA4-RA0) y reflejar el nivel;lógico de los mismos sobre los leds RB4-RB0 conectados a la puerta B;ESTE PROGRAMA UTILIZA EL BOOTLOADER COMO PROGRAMA DE CARGA A TRAVÉS DEL PUERETOSERIE DEL PC;********************************************************************************************

List p=16F876A ;Tipo de procesadorinclude "P16F876A.INC" ;Definiciones de registros internos

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF &_LVP_OFF & _DEBUG_OFF & _CPD_OFF

org 0x00 ;Vector de Resetgoto Inicio

org 0x05 ;Salva el vector de interrupciónx

Inicio bsf STATUS,RP0 ;Selecciona banco 1movlw b'00000110'movwf ADCON1 ;Puerta A E/S digitalesclrf TRISB ;Puerta B se configura como salidamovlw b'00111111'movwf TRISA ;Puerta A se configura como entradabcf STATUS,RP0 ;Selecciona banco 0

Bucle movf PORTA,W ;Leer las entradas RA0-RA4movwf PORTB ;Reflejar en las salidasgoto Bucle ;Bucle sin fin

end

Figura 5.- Circuito sobre el quese puede probar el programaEjem1.asm

36 Microcontrolador 11/3/08 09:48 Página 39

Page 5: CURSO DE MICROCONTROLADORES EL MPLAB

6. A la hora de trabajar con elMPLAB en la escritura de un pro-grama fuente, no puede ser útilconfigurar algunas de las propie-dades del editor, para lo cualseleccionamos en la barra deherramientas Edit>Properties…en este cuadro de diálogo se reco-mienda seleccionar la pestaña de‘ASM’File Types y seleccionarlas opciones que se muestran enla Figura 7.

En la pestaña de Text se puedeelegir el tipo de letra que al usuariole parezca más interesante, en dichapestaña se pueden observar las

MICR

OCON

TROL

ADOR

ES

40RESISTOR

Figura 6.- Cuadro de diálogo para guardar el archivo fuente.

Figura 7.- Cuadro de diálogo dela pestaña ASM File Types deeditor de opciones del MPLAB

36 Microcontrolador 11/3/08 09:48 Página 40

Page 6: CURSO DE MICROCONTROLADORES EL MPLAB

opciones del cuadro de diálogo de lafigura 8.

En dicho cuadro se aprecia comose puede modificar el tipo y tamaño

de texto, así como los colores que losparámetros que indica dicho texto.7. Seguidamente se puede ensam-

blar el programa y simular su

funcionamiento, tal y como ire-mos viendo en los próximonúmeros de la revista.

Figura 8.- Cuadro de diálogo de las opciones de texto y fuentes

36 Microcontrolador 11/3/08 09:48 Página 41

Page 7: CURSO DE MICROCONTROLADORES EL MPLAB

36 Microcontrolador 11/3/08 09:48 Página 42

Page 8: CURSO DE MICROCONTROLADORES EL MPLAB

MICR

OCON

TROL

ADOR

ES Francisco Javier Tortosa MartínezIngeniero de SistemasIndytel Sistemas S.L.www.microladder.com

Fernando Remiro DomínguezProfesor de Sistemas Electrónicos

IES. Juan de la Ciervawww.terra.es/personal/fremiro

CURSO DE MICROCONTROLADORESEL MPLAB (II)

Esta es la segunda entrega del manual del entorno de desarrollo MPLAB IDE, que comose puede ir comprobando, además de permitirnos escribir el programa en lenguajeensamblador o con un compilador de alto nivel, permite realizar la depuración delprograma ya sea utilizando el simulador que lleva incorporado o herramientas comoson el MPLAB ICD2 o los emuladores MPLAB 2000 yMPLAB 4000.

42RESISTOR

CREANDO UN NUEVOPROYECTO

Dos de las características delMPLAB IDE son los proyectos y losescenarios (workspaces).

Un proyecto contiene los archivosnecesitaron para diseñar o construir

una aplicación (el código fuente, ellinkador, etc.) así como varias herra-mientas de construcción (build).

El workspace contiene la informa-ción sobre el dispositivo selecciona-do, herramientas de puesta a puntodel programador, además se pueden

abrir ventanas para ver y configurarotros escenarios del IDE.

La manera mejor manera de pre-parar un proyecto y su escenario(workspace) asociado es usando elProject Wizard. No obstante cuandose trabaja con una aplicación de un

Foto 1.- Placas de desarrollo realizadas en el laboratorio de Desarrollo de Productos Electrónicos del IES Juande la Cierva de Madrid.

42-49 Microcontroladores:Maqueta Resistor 13/6/08 09:13 Página 42

Page 9: CURSO DE MICROCONTROLADORES EL MPLAB

único archivo en ensamblador, sepuede usar Quickbuild (Project>Quickbuild), es decir, ensamblar elcódigo con el ensamblador MPSM yno crear un proyecto. Sin embargoutilizando un workspace se puedenguardar todos los escenarios y salvarlas configuraciones.

CREAR UN PROYECTO CONEL WIZARD

Para crear un nuevo proyecto conelWizard una vez que tenemos escri-to nuestro programa en ensamblador,debemos de seguir los siguientespasos:• Seleccionamos Project/ProjectWizard, lo que hará aparecer la pan-talla de la bienvenida de laFigura 1.

• Pulsamos sobre Siguiente y en lapantalla de diálogo nos solicita elmicrocontrolador con el que quere-mos trabajar. En este caso seleccio-namos el PIC16F876A.

• Cuando pulsamos Siguiente, apare-ce la ventana de selección de laherramienta de trabajo. Se puedeseleccionar una herramienta deMicrochip o de terceras partes. Enla ventana de Active Tollsuite soloaparece la suite de herramientas delos lenguajes que trabajan con eldispositivo previamente selecciona-do. Para ver el resto de herramien-tas instaladas pulsar sobre la flechade Active Toolsuite, apareciendo lapantalla de la figura 3.

Si aún no aparece la herramientadeseada, pulsar sobre el botón “HelpMy Suite Isn´t Listed!” y apareceráun listado de herramientas con una“X” en rojo indicará si es el caso queno se ha realizado la instalación oque el camino ejecutable no es cono-cido por el MPLAB IDE, para asig-nar o verificar asignaciones de herra-mientas a los archivos ejecutables,pulsar sobre el botón en la herra-mienta para mostrar el camino delarchivo ejecutable.• Pulsar sobre Siguiente y apareceráuna nueva ventana de diálogo como

la de la figura 4, pulsando sobreBrowse… elegimos el nombre ycamino de nuestro proyecto.

Una vez seleccionado el caminode nuestro proyecto que tiene laextensión *.mcp pulsamos sobresiguiente y aparece una ventanacomo la de la figura 5, en la que nossolicitan que seleccionemos losficheros que integran nuestro proyec-to, en nuestro caso ejem_1.asm , pul-samos sobre Add>> para añadir elarchivo y volvemos a pulsar sobressiguiente, apareciendo la pantalla dela figura 6.

Si no se abre la ventan del pro-yecto, seleccionar View>Project , taly como se muestra en la figura 7,donde se puede apreciar en la partesuperior de la pantalla que aparece elnombre del Proyecto, en nuestro casoejem_1.mcw.

En estos momentos se abrirá unapantalla con forma de árbol como lade mostrada en la figura 8, en la queen la raíz aparece el nombre del pro-

MICR

OCON

TROL

ADOR

ES

43RESISTOR

Figura 1.- Pantalla de bienvenidadel Project Wizard.

Figura 3.-pantalla de selección dela herramienta de programación. Figura 5.- Pantalla de selección

de los archivos que integran elproyecto.

Figura 6.- Pantalla de finali-zación del asistente de creación deproyectos.

Figura 4Figura 2.- Selección de micro-controlador del proyecto.

42-49 Microcontroladores:Maqueta Resistor 13/6/08 09:13 Página 43

Page 10: CURSO DE MICROCONTROLADORES EL MPLAB

yecto y los ficheros que se han añadi-do posteriormente.• Si se pulsa sobre uno de los archi-vos del árbol, este se abrirá automá-ticamente.

• Si dentro de esta pantalla se pulsa elbotón de la derecha del ratón, apare-ce la opción de Add Files que acti-vándola permite agregar más fiche-ros fuente al proyecto.

• Si se pulsa el botón derecho sobreun archivo, aparece la opción deRemove, que nos permitirá eliminararchivos del proyecto.

• Otra de las opciones que aparece esla de Build Options… que no usare-mos en esta guía didáctica y la porultimo aparece la opción de Editque al activarla nos presenta elarchivo seleccionado para visuali-zarlo y que además podremos modi-ficarlo.

MONTAR O CONSTRUIREL PROYECTO:

Ahora estamos en condiciones deconstruir el proyecto pulsando elbotón de la barra de herramientaso seleccionando Project>Build All .

Durante la construcción del pro-yecto aparecer una barra de progre-so como la de la figura 9, que secerrará cuando haya terminado elproceso de montaje, si todo ha idobien, la barra será de color verde yaparecerá un color rojo en caso con-trario. También se abrirá la ventanade salida (Output) como la de lafigura 10.

Si al final de esta pantalla apare-ce la frase “BUILD SUCCEDED” seconfirma que el ensamblado se haproducido con éxito. Por tanto, ya seestá en condiciones de pasar a lasimulación. En esta pantalla puedenaparecer algunos mensajes de avisoMessage, que llaman la atenciónsobre situaciones a tener en cuenta yque podrían ocasionar un error en elprograma pero que no impiden el

MICR

OCON

TROL

ADOR

ES

44RESISTOR

Figura 7.- Solicitud de apertura del fichero a editar.

Figura 8.- Ventana de visualiza-ción del proyecto

Figura 10.- Ventana del registro de salida.

Figura 9.- Barra de progreso delmontaje o ensamblado del pro-grama

42-49 Microcontroladores:Maqueta Resistor 13/6/08 09:13 Página 44

Page 11: CURSO DE MICROCONTROLADORES EL MPLAB

correcto ensamblado. En la figura10 se aprecian los mensajes de laslíneas 21, 22 y 24 en las que se uti-lizan respectivamente los registrosADCON1, TRISB y TRISA, que seencuentran en el banco 1, este men-saje nos indica que estos registrosno se encuentran en el banco 0, paraque lo comprobemos, ya que encaso contrario tendríamos proble-mas en el funcionamiento de nues-tro programa.

Si al final de la pantalla delregistro de salida, aparece el mensa-je “BUILD FAILED”, nos indica

que ha ocurrido un error en el pro-ceso de ensamblado del programa yveremos que se ha generado unfichero de errores que describencada uno de ellos. Si hacemos undoble clic sobre la línea que mues-tra el error, el cursor saltará directa-mente a la línea de código donde seencuentra éste. Una vez subsanadoslos errores, volveremos a repetir elproceso de ensamblado del ficherofuente para obtener el fichero conextensión .hex que en nuestro casoserá ejem_1.hex. Este fichero conextensión *.hex, es el que cargare-mos en nuestro microprocesadorutilizando la herramienta de graba-ción de la que dispongamos.

Para ver el fichero ejem_1.hex,bastará con seleccionar el meniFile>Open y dentro de los tipos dearchivos seleccionar All Files [*.*] yseleccionamos el archivo ejem_1. hex.

Cuando abrimos el archivo sepuede ver que únicamente continecódigos hexadecimales y que seránlos que se graven posteriormente enel microcontrolador

SELECCIÓNDE LAHERRAMIENTADEDEPURACIÓN

Para poner a punto los programas,el MPLAB al pulsar en Debug-ger>Select Toll nos permite elegirentre las siguientes opciones, tal ycomo se puede ver en la figura 13:• El simulador MPLAB SIM.Simula el funcionamiento de

MICR

OCON

TROL

ADOR

ES

45RESISTOR

Figura 11.- Pantalla de selección de archivo.

Figura 13,. Ventana de selección de la herramienta de depuración

Figura 12.- Contenido del archivo hexadecimal.

42-49 Microcontroladores:Maqueta Resistor 13/6/08 09:13 Página 45

Page 12: CURSO DE MICROCONTROLADORES EL MPLAB

MICR

OCON

TROL

ADOR

ES

46RESISTOR

microcontrolador con el softwareque se le introduce.

• El MPLAB ICD2 depuración encircuito. Permite correr el códigoen el circuito donde tenemosconectado nuestro microcontrola-dor, con todos los periféricos queutilice y permite realizar BreackPoint en el programa y ver el esta-do de los registros utilizando elentorno del MPLAB.

• El emulador en circuito MPLABICE 4000.Emula las grandesmemorias de los PIC18 y losdsPIC en el hardware.

El emulador en circuito ICE2000. Emula un gran número demicrocontroladores y permite el acce-so a las distintas partes de memoria.Comprobar en el directorio IDE lalista de dispositivos que lo soportan.Una vez elegida la herramienta dedepuración por ejemplo el simuladoraparece una nueva barra de herra-mientas como la que se muestra enla figura 14.

VENTANAS DEVISUALIZACIÓNUna vez ensamblado el programa, yseleccionada la herramienta dedepuración, en este caso la de simu-lación, podemos visualizar las dis-tintas ventanas que nos darán infor-mación sobre el estado del micro-procesador y sus memorias. Paraello hacer clic con el ratón sobreView en la barra de herramientas,aparece el cuadro de diálogo de lafigura 15.Las opciones activas son:• Disassemby Listing• EEPROM

• Fille Registers• Hardware Stack• Locals• Program Memory• Special Registers• Watch• Memori Usage Gauge• Simulator Trace• Simulator Analiczer

VENTANA DISASSEMBLYLISTING:Nos presenta el código máquina y elarchivo fuente, para entrar en ellahay que pulsar en View> Disas-sembly Linsting y se aparece una

Figura14.-Barradeherramientasdela herramienta de depuración

Rum: Comienza la ejecución del programa a toda velocidad. En este caso, simulador ejecuta el programaa toda velocidad hasta que se detenga haciendo clic en el icono de abajo.

Halt: Detiene la ejecución del programa. El programa de ejecución puede seguir paso a paso, a velocidadopcional o a toda velocidad de nuevo.

Animate: Comienza la ejecución del programa a velocidad opcional. La velocidad de ejecución se fija enel cuadro de diálogo Debugger/Stettings../Amimations/ Realtime Update.

Step Into: Comienza paso a paso la ejecución del programa. Las instrucciones son ejecutadas una tras otra.Por otra parte, haciendo clic en este icono permite ejecutar las subrutinas y macros paso a paso.

Step Over: Este icono al igual que el anterior permite realizar la ejecución de las instrucciones de una enuna, pero las subrutinas las ejecuta de golpe, como si fuera un única instrucción.

Step Out: Cuando estamos dentro de una subrutina al pulsar este icono, el programa corre de golpe hastaque sale de ella y se para poder seguir con la ejecución paso a paso.

Reset: Restablece microcontrolador. Al hacer clic en este icono, el contador de programa se posiciona alprincipio del programa y la simulación puede comenzar.

Figura 15.-Cuadro de diálogo de las ventanas de visualización delMPLAB.

42-49 Microcontroladores:Maqueta Resistor 13/6/08 09:13 Página 46

Page 13: CURSO DE MICROCONTROLADORES EL MPLAB

ventan como la de la figura 16, en laque podemos ver que aparece deizquierda a derecha la posición dememoria de programa, el código dehexadecimal de la instrucción, elcódigo de la instrucción en ensam-blador, el número de línea de nues-

tro programa fuente y el programafuente que escribimos nosotros.Además nos muestra en el caso deestar simulando el funcionamientocon una flecha de color verde laposición en la de memoria a la queapunta el contador de programa en

este momento y con una letra Bencerrada en un circulo rojo lospuntos del ruptura (Breakpoints)que hemos marcado en la simula-ción haciendo un doble clic con elratón sobre la línea en la que quere-mos el Breakpoints.

Pulsando sobre el botón contrac-tual del ratón, aparece una ventancon las siguientes opciones:• Set/Remove Breakpoint: nos per-mite poner o quitar un punto deruptura a la línea actualmenteseleccionada.

• Enable/Disable Break: Activa odesactiva un punto de ruptura en lalínea actualmente seleccionada.

• Breakpoints: deshabilita, habiliteo borra todos los puntos deruptura.

• Run To Cursor: Ejecute el pro-grama de situación del cursoractual hasta aquí.

Figura 16.- Ventana de visualizaciónDisassembly Listing,

42-49 Microcontroladores:Maqueta Resistor 13/6/08 09:13 Página 47

Page 14: CURSO DE MICROCONTROLADORES EL MPLAB

MICR

OCON

TROL

ADOR

ES• Set PC at Cursor: Ponga al Con-tador del Programa (PC) en la enel valor de la posición que se indi-ca con el cursor.

• Copy: copia el texto seleccionadoal portapapeles. El texto se selec-ciona pulsando el botón de laizquierda del ratón y arrastrandohasta donde nos interese y en esemomento soltamos el botón.

• Select All: Selecciona todo el tex-to de la ventana.

• Output to File: Guarda el conte-nido de la ventana en un archivode texto que podemos indicar des-de aquí.

• Print: Para imprimir el archivo• Properties: Despliega un cuadrode diálogo de cómo queremos queaparezcan escritos los datos de laventana de desensamblado.

VENTANA EEPROM:Seleccionando View>EEPROM apa-rece una ventana como la que semuestra en la figura 17, en la que seve el contenido de la memoriaE2PROM de usuario del microcon-trolador con el que estemostrabajando.

En esta ventana se muestran losdatos de las columnas de la direc-ción hexadecimal de los datos, elcontenido de las distintas posicio-nes de memoria y la representaciónen código ASCII de la línea dedatos correspondiente.Pulsando sobre el botón contractualdel ratón aparece un menú que nospermite:• Close: Cerrar esta ventana• Find: Buscar en esta ventana eltexto indicado en el cuadro dialo-go de esta opción.

• Find Next: Encontrar en estaventana la próxima coincidenciadel texto indicado en el cuadro dediálogo anterior. Con <F3> buscahacia delante en la ventana y con<Shift>+ <F3> busca hacia atrásen la ventana.

• Go To: Va a la dirección dememoria indicada en el cuadro dediálogo.

• Import Table: abre el cuadro dediálogo para importar una tabla de

valores a la E2PROM desde laposición que se indique.

• Export Table: Abre el cuadro dediálogo para exportar el contenidode la las posiciones de memoriaE2PROM a un archivo de exten-sión *.MCH.

• Fill Memory: Abre el cuadro dediálogo que nos permite llenardesde una posición a otra dememoria E2PROM con un valorconstante, datos que vayan incre-mentado o datos aleatorios.

• Output to File: abre un cuadro dediálogo para guardar el contenidodel bloque de posiciones dememoria que se indique.

• Print: Para imprimir el contenidode la ventana.

• Refresh: Refresca los datos deesta ventana.

• Properties: Despliega un cuadrode diálogo de cómo queremos queaparezcan escritos los datos deesta ventana.

VENTANA FILE REGISTERS:Para visualizar esta ventana se acti-va View>File Registers. Muestra elcontenido de todas las posiciones dela memoria RAM del dispositivoseleccionado, cuando el simuladorejecuta una instrucción, compruebael valor del registro correspondien-te y si lo modifica, la ventana seactualiza.

En el formato hexadecimal, quecorresponde con la mostrada en lafigura 18, se pueden ver las siguien-tes columnas de información:• Parte alta de la dirección Hexade-cimal de la memoria, la parte baja

MICR

OCON

TROL

ADOR

ES

48RESISTOR

Figura 17,. Venta del contenido de lamemoriaE2PROMdeusuario.

Figura 18.- Ventana quemuestra el contenido de lamemoriaRAMdedatos enformato hexadecimal.

42-49 Microcontroladores:Maqueta Resistor 13/6/08 09:13 Página 48

Page 15: CURSO DE MICROCONTROLADORES EL MPLAB

se indica en la cabecera de cadauna de as columnas.

• La representación ASCCII de lalínea de datos correspondiente.

En el formato simbólico quecorresponde a la figura 19, presentalos registros representados con sunombre simbólicos y el contenido delos mismos en formato hexadecimal,decimal, binario y ASCII.

Pulsando sobre el botón contrac-tual del ratón aparece un menú quenos permite:• Close: Cerrar esta ventana• Full Memory Update: La actualiza-ción de los registros de esta ventanse actualizan después de una paradasolo si se habilitó. Por defecto estaopción esta habilitada. Si la ventanaestá abierta, solo los datos visibles seactualizan, si la ventana está cerradano se actualiza ningún dato.

• Find: Buscar en esta ventana el tex-to indicado en el cuadro dialogo deesta opción.

• Find Next: Encontrar en esta venta-na la próxima coincidencia del textoindicado en el cuadro de diálogoanterior. Con <F3> busca haciadelante en la ventana y con <Shift>+<F3> busca hacia atrás en la venta-na.

• Go To: Va a la dirección de memo-ria indicada en el cuadro de diálogo.

• Import Table: abre el cuadro dediálogo para importar una tabla devalores a la memoria RAM desdela posición que se indique.

• Export Table: Abre el cuadro dediálogo para exportar el contenido

de la las posiciones de memoriaRAM a un archivo de extensión*.MCH.

• Fill Memory: Abre el cuadro dediálogo que nos permite llenardesde una posición a otra dememoria RAM con un valor cons-tante, datos que vayan incrementa-do o datos aleatorios.

• Output to File: abre un cuadro dediálogo para guardar el contenidodel bloque de posiciones dememoria que se indique.

• Print: Para imprimir el contenidode la ventana.

• Refresh: Refresca los datos deesta ventana.

• Properties: Despliega un cuadrode diálogo de cómo queremos queaparezcan escritos los datos deesta ventana.

VENTANA HARDWARESTACK:Para visualizar esta ventana se acti-va View>Hardware Stack . Nosmuestra el contenido de la Pila

Hardware y el número de nivelesdisponibles y los utilizados por elpunto en el que se encuentra lasimulación del programa.

En la venta se muestra:• TOS: la parte alta de la pila(TOS)

• Stack Level: Es el número total deniveles de pila del dispositivo.

• Stack Return Address. Indica ladirección a la que retorna el pro-grama cuando el Contador de Pro-grama cargue le valor de vuelta desubrutina o de interrupción. Enesta ventan los valores usados per-manecen sin variar cuando semueve el puntero de la Pila haciaarriba.

• Location: Informa sobre la posi-ción relativa de una función

Estando en esta venta si se pulsasobre el botón contractual del ratón,se despliega una ventana que nospermite:• Close: Cerrar la ventana• Pop Snack: Carga la parte alta dela Pila en el Contador de Progra-ma

• Set Top-of-Stack: Pone en la par-te alta de la Pila la dirección en laque se encuentra el cursor.

• Output to File: abre un cuadro dediálogo para guardar el contenidodel bloque de posiciones dememoria que se indique.

• Print: Para imprimir el contenidode la ventana.

• Refresh: Refresca los datos deesta ventana.

• Properties: Despliega un cuadrode diálogo de cómo queremos queaparezcan escritos los datos deesta ventana.

MICR

OCON

TROL

ADOR

ES

49RESISTOR

Figura 19 Ventan que muestra el contenido de la memora RAM enformato simbólico.

Figura 20.- venta de la Pila Hardware.

42-49 Microcontroladores:Maqueta Resistor 13/6/08 09:13 Página 49

Page 16: CURSO DE MICROCONTROLADORES EL MPLAB

MICR

OCON

TROL

ADOR

ES Francisco Javier Tortosa MartínezIngeniero de SistemasIndytel Sistemas S.L.www.microladder.com

Fernando Remiro DomínguezProfesor de Sistemas Electrónicos

IES. Juan de la Ciervawww.terra.es/personal/fremiro

CURSO DE MICROCONTROLADORESEL MPLAB (III)

Esta es la tercera entrega de este manual sobre el funcionamiento del MPLAB IDE. Enestos momentosMicrochip ha sacado la versión 8.14 de este programa, por lo que yaanticipamos que todas las referencias que hagamos para el próximo número deResistor, se harán sobre esta nueva versión, que puede obtenerse de forma totalmentegratuita de lawebwww.microchip.com

50RESISTOR

VENTANA PROGRAMMEMORYEn esta ventana se pueden ver las

posiciones de memoria que ocupa cadauna de las instrucciones, el código deoperación de cada instrucción y la direc-ción de memoria de programa que se ha

asignado a cada etiqueta. Se visualizaactivando View>ProgramMemory.Pulsando sobre el botón contrac-

tual del ratón, aparece una ventan conlas siguientes opciones:• Close: Cerrar esta ventana• Set/Remove Breakpoint (Machi-

ne/Symbolic Only): Poner o quitarun punto de ruptura a la líneaactualmente seleccionada.• Enable/Disable Break (Machi-ne/Symbolic Only): Habilita o des-habilita un punto de ruptura en lalínea seleccionada actualmente.

Foto 1.- Placas de desarrollo realizadas en el laboratorio de Desarrollo de Productos Electrónicos del IES Juande la Cierva de Madrid.

50-57 Microcontroladores:Maqueta Resistor 22/7/08 09:15 Página 50

Page 17: CURSO DE MICROCONTROLADORES EL MPLAB

• Breakpoints: Habilita o deshabilitatodos los puntos de ruptura• Run To Cursor: Ejecuta el progra-ma a la situación actual del cursor.• Set PC at Cursor: Pone el Conta-dor de Programa (PC) en la posi-ción actual del cursor.• Center Debug Location: Indicaposición actual del PC actual en laventana• Cursor Tracks Debug Location:Rastrea el flujo del cursor paradepurar la dirección.• Find: Busca en esta ventana el tex-to indicado en el cuadro dialogo deesta opción.• Find Next: Encuentra en esta ven-tana la próxima coincidencia deltexto indicado en el cuadro de diá-logo anterior. Con <F3> buscahacia delante en la ventana y con<Shift>+ <F3> busca hacia atrás enla ventana.• Go To:Va a la dirección de memoriaindicada en el cuadro de diálogo.• Import Table: abre el cuadro de diá-logo para importar una tabla de valo-res a partir de la posición de memo-ria de programa que se indique.• Export Table: Abre el cuadro dediálogo para exportar el contenidode la las posiciones de memoria deprograma a un archivo de exten-sión *.MCH.• Fill Memory: Abre el cuadro dediálogo que nos permite llenar des-de una posición a otra de memoriade programa con un valor constan-te, datos que vayan incrementado odatos aleatorios.

• Output to File: abre un cuadro dediálogo para guardar el contenidodel bloque de posiciones de memo-ria que se indique.• Print: Para imprimir el contenidode la ventana.• Refresh: Refresca los datos de estaventana.• Properties: Despliega un cuadro de

diálogo de cómo queremos queaparezcan escritos los datos de estaventana.

VENTANA DE SPECIALREGISTERSEsta ventana presenta todos los

registros Especiales SRF indicándonosla posición que ocupa el registro dentro

MICR

OCON

TROL

ADOR

ES

51RESISTOR

Figura 1.- Ventana de la Memoria de Programa

Figura 2.- Venta de los Registros Especiales.

50-57 Microcontroladores:Maqueta Resistor 22/7/08 09:15 Página 51

Page 18: CURSO DE MICROCONTROLADORES EL MPLAB

de la memoria, el nombre del registro ysu contenido en binario, hexadecimal yASCII. Se visualiza en View>SpecialFunction Registers.Para modificar manualmente uno de

estos registros se debe hacer un dobleclic en la fila del registro correspondien-te y modificarlo. Esto no es válido paralos puertos que actuen como entrada, encuyo caso hay que ir dentro del menú ,Debugger, la opción Stimulus Controlercomo se verá más adelante.Pulsando sobre el botón contractual

del ratón, aparece una ventan con lassiguientes opciones:•Go To:Va a la dirección de memoriaindicada en el cuadro de diálogo.• Import Table: abre el cuadro de diálo-go para importar una tabla de valoresa partir de la posición de memoria deprograma que se indique.•Export Table:Abre el cuadro de diá-logo para exportar el contenido de lalas posiciones de memoria deprograma a un archivo de extensión*.MCH.•Fill Registers:Abre el cuadro de diá-logo que nos permite llenar desde unregistro hasta otro con un valor cons-tante, datos que vayan incrementado odatos aleatorios.

•Output to File: abre un cuadro de diá-logo para guardar el contenido del blo-que de registros, desde el registro quese indique.• Print: Para imprimir el contenido de laventana.

•Refresh: Refresca los datos de estaventana.• Properties: Despliega un cuadro dediálogo de cómo el que se muestra enla Figura 3. En esta ventana se puedemodificar la posición de las columnas

que hemos indicado al principio deeste epígrafe, de manera que si quere-mos que aparezca la columna Binaryinmediatamente después de SFRName, debemos de posicionarnossobre el epígrafe Binary del cuadro de

MICR

OCON

TROL

ADOR

ES

52RESISTOR

Figura 3.- Cuadro de diálogo de las propiedades de los Registros defunciones especales.

Figura 4.- Ventana de visualización de Watch.

50-57 Microcontroladores:Maqueta Resistor 22/7/08 09:15 Página 52

Page 19: CURSO DE MICROCONTROLADORES EL MPLAB

diálogo y pulsando obre Move Up oMove Down poner dicha columna enla posición que nos interese. Si pulsa-mos el botón Hide, la columna desa-parece de la ventana.

VENTANAWATCHEsta ventan permite supervisar los

registros de usuario o FSR que haya-mos seleccionado previamente mien-tras corre el programa, en esta ventanase pueden abrir cuatro subventanasdiferentes. Se visualiza en View>Watch.Pulsando sobre el botón contractual

del ratón, aparece una ventan con lassiguientes opciones:• Close: Cerrar esta ventana•Find: Buscar en esta ventana el textoindicado en el cuadro dialogo de estaopción.•Find Next: Encontrar en esta ventanala próxima coincidencia del texto indi-cado en el cuadro de diálogo anterior.Con <F3> busca hacia delante en laventana y con <Shift>+ <F3> buscahacia atrás en la ventana.•Add: Al activar esta opción apareceun cuadro de diálogo como el de lafigura 5, que nos permite añadir unSRF o un símbolo alWatch.

•Delete: Borra del Watch el iten quetengamos seleccionado• Save Watch Tab:Guarda los registrosy símbolos de la subventana seleccio-nada en un archivo.• Load Watch Tab: carga los registros ysímbolos de un archivo en la subven-tana seleccionada.•Add Watch Tab: añade una nuevasubventana alWarch, se pueden tenerhasta 16.•Rename Watch Tab: Permite dar unnombre a cada una de las subventas• Import Table:Abre el cuadro de diá-logo para importar el contenido de lalos registros o símbolos.•Export Table:Abre el cuadro de diá-logo para exportar el contenido de lalas posiciones de memoria de progra-ma a un archivo.•Output to File: abre un cuadro de diá-logo para guardar el contenido delbloque de posiciones de memoria quese indique.• Print: Para imprimir el contenido dela ventana.•Refresh: Refresca los datos de estaventana.• Properties: Despliega un cuadro dediálogo de cómo queremos que apa-rezcan escritos los datos de esta ven-tana.

VENTANA MEMORI USAGEGAUGEEsta ventana indica la cantidad de

memoria de programa y dememoria de

datos se usan actualmente en el proyec-to. Se visualiza en View>Memori Usa-ge Gauge, pero para poder visualizarlos datos se debe lindar el programa porejemplo en nuestro en el caso que esta-mos simulado (el programa ejem1) quetrabaja con el PIC16F876A, se puedeañadir al proyecto el archivoC:\Archivos de programa\Microchip\MPASM Suite\LKR\16F876a.lkr.

VENTANA SIMULATORTRACEEsta ventana nos ayuda a la simula-

ción del programa. El simulate Tracetoma una “instantánea” de la ejecucióndel programa. En el simulador el bufferde traza o de memoria de traza es útilpara visualizar un registro a lo largo dela ejecución del programa, de maneraque se pueda registrar por donde pasa elprograma y después analizarlo. Elsimulador toma datos desde la últimavez que se pulsó Rum o Animate hastaque se detiene la simulación del progra-ma, que normalmente será con un Bre-akpoint. El buffer de traza es comparti-do con el logic analyzer.Para visualizar la ventana de

memoria de traza hay que seleccionarel menú View>Simulate Trace. Elsimulador muestra una ventana deno-minada Trace en la se puede ver cual-quier variación sobre los registros alejecutarse el código de instrucción. Estaventana tiene las columnas de informa-ción siguiente:

MICR

OCON

TROL

ADOR

ES

53RESISTOR

Figura 5.- Cuadro de diálogopara añadir nuevos símbolos alWatch.

Figura 6.- Representación de la memoria utilizada en un programa queno corresponde al ejem1.

50-57 Microcontroladores:Maqueta Resistor 22/7/08 09:15 Página 53

Page 20: CURSO DE MICROCONTROLADORES EL MPLAB

MICR

OCON

TROL

ADOR

ES

54RESISTOR

• Line: Número de líneas ejecutadasdesde que se pulsó Rum por últimavez.•Addr: Dirección de la memoria deprograma donde se encuentra la ins-trucción•Op:Código de operación numérico dela instrucción.• Label: Etiqueta de la instrucción si latuviera.• Instruction: Instrucción ejecutada.• SA: Dirección numérica del registrofuente• SD:Dato del registro fuente•DA: Dirección numerica del registrodestino•DD:Dato del registro Destino•Cycles:Ciclos máquinas transcurridos.

Pulsando sobre el botón contractualdel ratón, aparece una ventan con lassiguientes opciones:• Close: Cerrar esta ventana•Find: Buscar en esta ventana el texto

indicado en el cuadro dialogo de estaopción.•Find Next: Encontrar en esta ventanala próxima coincidencia del texto indi-cado en el cuadro de diálogo anterior.Con <F3> busca hacia delante en laventana y con <Shift>+ <F3> buscahacia atrás en la ventana.•Go To: Salte al la opción especificada:• Trigger. Salte a la situación delTrigger.• Top. Salta a la parte alta de la venta-na.•Bottom. Salte al final de la ventana.•Go To Trace Line. Vaya a la líneade la traza especificada en el cuadrode diálogo.•Go To Source Line.Abra la ventanadelArchivo y va a la línea de códi-go de fuente que corresponde a lalínea del rastro seleccionada.

• Show Source:Habilita o deshabilita laventan con el código fuente que apare-ce debajo de la memoria de traza.

•Reload: Recarga la memoria de trazacon los valores que contiene el buffer.•Reset Tie Stamp: Inicializa la imagende tiempo condicional del prosecesa-dor.•Display Time: En el ventana aparecela información del número de ciclosen segundos o en formato científico.• Symboloc Disassembly: En lugar de ladirección numérica para SFRs y sím-bolos, despliega los nombres de losmismos.•Output to File: abre un cuadro de diá-logo para guardar el contenido del blo-que de posiciones de memoria que seindique.• Print: Para imprimir el contenido de laventana.•Refresh: Refresca los datos de estaventana.• Properties: Despliega un cuadro dediálogo de cómo queremos que apa-rezcan escritos los datos de esta venta-na.

Figura 7.- Ventana de Traza de memoria

50-57 Microcontroladores:Maqueta Resistor 22/7/08 09:15 Página 54

Page 21: CURSO DE MICROCONTROLADORES EL MPLAB

VENTANA SIMULATORANALIZERLa ventana de la figura 8 corresponde aun analizador lógico, sobre el que sepueden visualizar todos los pines del

microcontrolador seleccionados duran-te un período de tiempo. Los datos songuardados junto con la memoria de tra-za y están sincronizados. Para visualizarla ventana del analizado lógico hay que

seleccionar el menú View> LogicAnalyzer. Y en este caso para compro-bar el funcionamiento del analizadorejecutaremos en el simulador el siguien-te código:

;********************************************************************************************;Contador_binario.asm;Cuenta en binario, incrementado el PORTB cada 5 us;********************************************************************************************List p=16F876A ;Tipo de procesadorinclude "P16F876A.INC" ;Definiciones de registros internos__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF &_LVP_OFF & _DEBUG_OFF & _CPD_OFFCBLOCK 0x20

ENDCORG 0x00 ;Vector de ResetInicio bsf STATUS,RP0 ;Selecciona banco 1clrf TRISB ;Puerta B se configura como salidabcf STATUS,RP0 ;Selecciona banco 0clrf PORTBBucle incf PORTB,Fnopnopgoto Bucleend

50-57 Microcontroladores:Maqueta Resistor 22/7/08 09:16 Página 55

Page 22: CURSO DE MICROCONTROLADORES EL MPLAB

MICR

OCON

TROL

ADOR

ES

Para utilizar el analizador lógico hayque seleccionar los canales que se dese-an visualizar, para ello pulsar sobre elbotón de Channels que despliega unaventana como la de la figura 9, y quedependiendo del microcontrolador pue-de mostrarnos hasta 64 canales, sobrelos que podremos ver los “0” y “1” ylos cambios de estados de la simula-ción.Para el ejemplo que nos ocupa

seleccionamos todas las líneas delPORTB, para ello con el ratón seleccio-namos RB0 y manteniendo pulsado latecla de mayúsculas, seleccionamosRB7. Seguidamente pulsamos el botónAdd y pasarán los pines seleccionados ala ventana Selected Signal(s), si se quie-re eliminar algún canal, solo habrá queseleccionarlo y pulsar el botón deRemove.

Los Controles de esta ventana• Trigger Position: Dispone de tresbotones circulares que permiten espe-cificar donde ocurrirá el disparo: alinicio de la captura (Star), en el centrode captura (Center), o al final de lacaptura (End).•Active PC = :Hay dos métodos deactivar la captura de los datos.• Trigger PC = value. El valor intro-ducido en la caja de texto es elvalor de disparo.

• Trigger Now: Activando estebotón, el valor actual del PC sepone en la caja de texto.

• Trigger Clear: Limpia el valor de dis-paro y los buffer de datos para unanueva captura. Los buffers de datostambién se borran si se cierra la venta-na del analizador lógico.• Time Base: La base de tiempos sepuede seleccionar entre ciclos de

máquina, segundos, milisegundos,microsegundos y nanosegundos.•Mode: Indica el modo de disparoseleccionado, es decir, simple o com-plejo.En la barra de herramientas se pue-

den seleccionar las siguientes:• Scroll Axes: Permite deslizarse en eleje vertical del analizador lógico.• Zoom Axes: Realiza un Zoom dezona seleccionada.• Zoom ItAll Axes:Realiza un amplia-ción del la zona de la ventan• Zoom Out All Axes: Reduce el tama-ño del contenido de la ventana• Zom Boox: Activando esta opción,con ratón se puede marcar un área dela ventan del analizador lógico paraampliarla.•Cursor:Activando el cursor, se puedemover arrastrándole con el ratón ocon las teclas de las flechas o con lasteclas de avance y retroceso de pagi-na.•Copy to Clipboard: Copia la imagenal portapapeles.• Save to File: Guarda la pantalla delanalizador como una imagen.• Print: imprime la pantalla como ungrafico.• Preview: Es una vista previa deldocumento que se va a imprimir.

MICR

OCON

TROL

ADOR

ES

56RESISTOR

Figura 9.- Ventana de diálogo de la selección de canales del analizadorlógico.

Figura 9.- Ventana de diálogo de la selección de canales del analizadorlógico.

50-57 Microcontroladores:Maqueta Resistor 22/7/08 09:16 Página 56

Page 23: CURSO DE MICROCONTROLADORES EL MPLAB

MICR

OCON

TROL

ADOR

ES Francisco Javier Tortosa MartínezIngeniero de SistemasIndytel Sistemas S.L.www.microladder.com

Fernando Remiro DomínguezProfesor de Sistemas Electrónicos

IES. Juan de la Ciervawww.terra.es/personal/fremiro

CURSO DE MICROCONTROLADORESEL MPLAB (IV)

En esta ocasión nos vamos a centrar en la integración del programa Proteus deLabcenter Electrónica con el MPLAB. Como podemos ver el programa nos permitirárealizar la simulación que veníamos realzando con el MPLAB a la vez que generamoso visualizamos externas al programa del microcontrolador.

50RESISTOR

Foto 1.- Foto de robot“Zapatones”, realizado en elLaboratorio del C.G.S. deDesarrollo de ProductosElectrónicos del IES Juan dela Cierva de Madrid.

50-57 Microcontroladores:Maqueta Resistor 17/10/08 11:35 Página 50

Page 24: CURSO DE MICROCONTROLADORES EL MPLAB

VENTANAS DE DEBUGGERPara depurar los programas el

MPLAB dispone de una serie de herra-mientas que se despliegan dentro de labarra de herramientas de Debug-ger>Select Tool, tal y como se muestraen la figura 1.

El debugger por ProteusVSM soloaparecerá si tienes instalado en su orde-nador la versión 7.1 de este programa,que se va haciendo cada vez más popu-lar en las universidades, centros de for-mación profesional e ingenierías, por loque nos parece interesante recalcarcomo funciona en su integración con elMPLAB. Para ello vamos a ilustrar conun ejemplo de como se trabajaría coneste entorno. Pero antes de nada debe-mos decir que Proteus es un programade Labcenter Electronics, cuya web eshttp://www.labcenter.co.uk/index.cfm,en España este producto está comer-cializado por la empresa IngenieríaEléctrica Electrónica, cuya pagina webes http://www.ieeproteus.com/ .

Ejemplo de aplicación: Se trata decomprobar como funciona el TMR0del PIC16F877A como contador deeventos externos que le llegan a travésde la línea RA4 y para ver el estado delTMR0 presenta el valor de este en elPORTB. Para ello en nuestro programaconfiguraremos la línea RA4 comoentrada y todo el PORTB como salida yen el registro OPTION_REG el bitT0SC=1 para indicar que los impulsosde TMR0 llegarán a través de la líneaRA4, T0SE=1 para que se incrementeen los flancos de bajada y el PSA=1para asignar el preescaler al WDT yque por lo tanto el TMR0 se incremen-te directamente en cada flanco, que lle-

51RESISTOR

Figura 1.- ventana de Debugger

Foosc/4

Bus de datos

El bit T0IF sepone a 1 si hayoverflow

T0SE

RA4/T0CKIpin

Sincronizacióncon el reloj

internoTMR0

8

0

11

0

T0CS

PreescalerProgramable

PS2,PS1,PS0 PSA

3

PSout

PSout

(Retardo de 2 ciclos)

Figura 1.- Diagrama de bloques del TMR0

REGISTRO OPTION u OPTION_REG (Dirección 81h,181h)

El Registro de OPTION_REG es un registro que puede ser leído o escrito y que

contiene varios bits de control para configurar la asignación del preescaler al TMR0 o

al WDT, la interrupción externa, el TMR0 y las resistencias de pull-up del PORTB.

Nota.- Asignar el preescaler como 1: 1 al registro TMR0, asigna el preescaler al

Watchdog.

R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1

RBPU INTED T0CS T0SE PSA PS2 PS1 PS0

Bit 7 Bit 0

Bit 7: #RBPU: Resistencia de Pull-up en, el PORTB

1=Resistencia de Pull-up desactivada

0= Resistencia de Pull-up activada

bit6 1:INTEDG:, Flanco, de control de interrupciones

1:Interrupción por flanco ascendente en el pin RB0/INT,

0:Interrupción por flanco: descendente en el pin RB0/INT

bit 5: T0SC. Selección del tipo de Reloj para TMR0

1 = Los pulsos se introducen a través del, pin RA4/TOCK1

0 = Los Pulsos de reloj internos- Fosc/4

bit 4: T0SE: Tipo de flanco para TMR0

1 = Incremento de TMR0 en cada flanco, descendente por el pin RA4/TOCKI

0 = Incremento de TMR0 en cada flanco ascendente :por el pin RA4/TOCKI

bit 3: PSA:, Asignación del Preescaler

1 = El preescaler se le asigna al WDT

0 = El preescaler se le asigna al TMR0

bit 2-0: PS2:PS0: Rango de actuación del preescaler

PS2 PS1 PS0 Divisor de TMR0 Divisor de WDT

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1

1:2

1:4

1:8

1:16

1:32

1:64

1:128

1:256

1:1

1:2

1:4

1:8

1:16

1:32

1:64

1:128

50-57 Microcontroladores:Maqueta Resistor 17/10/08 11:36 Página 51

Page 25: CURSO DE MICROCONTROLADORES EL MPLAB

gan a la línea RA4. , para ello configu-ramos el TMR0 como contador deeventos externos, para que el preescalersea de 1:1, se asigna el preescaler alWDT .Por lo tanto el programa puedeser el que hemos denominadoTimer0_02.asm.

Lo primero que vamos a hacer esdibujar el circuito que queremos simu-lar en el programa ISIS (“IntelligentSchematic Input System”) de Proteus,que es programa que realiza la capturade esquemas. En nuestro caso obtendre-mos un circuito como el que se muestraen la Figura 3.

Las características de la señal dereloj que se conecta a la línea RA4 sonlas que se muestran en la figura 4, l.además para que la simulación no de

MICR

OCON

TROL

ADOR

ES

52RESISTOR

;***********************************************************************************;Programa...........:Timer0_02;Plataforma Hardware :Monibot PIC16F877A;Fecha..............:Septiembre 2008;Descripción........:Este programa comprueba el funcionamiento del Timer 0 como;contador de los impulsos aplicados a la línea RA4/T0CKI, donde se ha conectado;un pulsador. Cada vez que se pulse se incrementa un contador que se visualiza;los 8 diodos LEDS conectados en las líneas RB0:RB7.; Como es un incremento por cada impulso aplicado al pin TOCKI no es necesario asignarle; divisor de frecuencia al TMR0. Por tanto el Prescaler se asigna al Watchdog.;; ZONADE DATOS **********************************************************************List p=16F877A ;Tipo de procesadorinclude "P16F877A.INC" ;Definiciones de registros internos

CBLOCK 0x20ENDC

__config _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _XT_OSC &_WDT_OFF; ZONADE CÓDIGOS ********************************************************************org 0x00 ;Vector de Resetgoto Inicio

org 0x05Inicio bsf STATUS,RP0 ;Selecciona banco 1movlw b'00000110'movwf ADCON1 ;Puerta A E/S digitalesbsf TRISA,4 ;Configura RA4 como entradaclrf TRISB ;Configura el PORTB como Salidamovlw b'00111000' ; TMR0 como contador por flanco descendente demovwf OPTION_REG ; RA4/T0CKI. Prescaler asignado al Watchdog.bcf STATUS,RP0clrf TMR0 ; Inicializa contador.; La sección "Principal" es de mantenimiento. Solo se dedica a visualizar el Timer 0.Principal movf TMR0,W ; Lee el Timer 0.movwf PORTBgoto Principal

end

Figura 3.- Circuito de prueba para el programa TMR0_02.asm.

50-57 Microcontroladores:Maqueta Resistor 17/10/08 11:36 Página 52

Page 26: CURSO DE MICROCONTROLADORES EL MPLAB

problemas, el interruptor de conectadoa la línea RA4 debe permanecer abier-to, como se ve en el circuito. Como sepuede apreciar el microcontrolador nohace falta ni conectarle el circuito dereloj, es decir cristal de cuarzo de la fre-cuencia de oscilación y condensadoreso una red R-C, ni conectar la señal dereset a nivel alto para evitar un reset delmicrocontrolador, no obstante al editarlas propiedades del PIC16F877Adebe-mos de indicar la frecuencia a la quedeseamos trabaje el microcontrolador yno le vamos a asignar ningún archivode simulación, ya que luego en la inte-gración con el MPLAB lo tomará. Porlo tanto, la ventan de propiedades delmicrocontrolador queda como se mues-tra en la figura 5.

Por último en la barra de herra-mientas seleccionamos Debug y activa-mos la opción Use Remote DebugMonitor, tal y como se muestra en lafigura 6. Por ultimo salvamos el archi-vo con el nombre “Entrenador BasicoPIC16F877A“ y cerramos el programaISIS de Proteus.

Seguidamente abrimos el entornodel MPLAB y creamos un proyectocon el nombre Timer0_02 siguiendo lospasos que hemos indicado a lo largo delos artículos anteriores.Y para compro-bar el funcionamiento del mismo,seleccionamos la opción Debug-ger>Proteus VSM, esto provoca la

MICR

OCON

TROL

ADOR

ES

53RESISTOR

Figura 4.- Edición de la señal de reloj que inyectamos por la línea RA4.

Figura 5.- Ventan de edición del microcontrolador PIC16F877A.

Figura 7.- Pantalla del visor del Proteus VSM en el entorno MPLAB.Figura 6.-selección del UseRemote Debug Monitor delMPLAB

50-57 Microcontroladores:Maqueta Resistor 17/10/08 11:36 Página 53

Page 27: CURSO DE MICROCONTROLADORES EL MPLAB

MICR

OCON

TROL

ADOR

ES

54RESISTOR

apertura de una ventana como la que semuestra en la figura 7.

Seguidamente, se abre el diseño quepreviamente habíamos guardado paraprobar el funcionamiento de nuestrosoftware. Esto provoca dos cosas, la pri-mera es que se abra el esquema del cir-cuito que habíamos diseñado y lasegunda es que aparezca en la barra deherramientas un botón como verde cuyafunción es la de inicio de simulación(start simulations) y otro en video inver-so, tal y como puede verse en lafigura 8.

Al pulsar sobre el punto verde, labarra de herramientas toma el aspectoque se muestra en la figura 9, donde

ahora en vide inverso aparece el botónque antes era verde y aparece un botónrojo que al activarlo genera la parada dela simulación ( stop simularon).Ademásaparecen activos los iconos de Rum yAnimate. Pues bien, si pulsamos sobreel botón de Rum, podemos observarcomo al correr el programa sobre el cir-cuito, se modifican el estado de los dio-dos LEDS conectados al PORTB deacuerdo a un contador de 8 bits binariosa la frecuencia de 1 Hz. Lo que estamosviendo es como reacciona nuestro cir-cuito y nuestro programa cuando le lle-ga una señal externa, sin necesidad dehabilitar la opción de Debug-ger>Estimulus y generar a mano los dis-

tintos o con un fichero el momento decambio de las señales externas del cir-cuito.

Si ahora activamos el botón rojo deStop Simulation y volvemos al progra-ma Proteus y volvemos a abrir nuestrocircuito, podemos modificar este, porejemplo se sugiere modificar la frecuen-cia de la señal de reloj a una frecuenciade 100 KHz., salvamos el archivo conel mismo nombre y al volver alMPLABveremos que el archivo se ha modifica-do, si ahora abrimos una venta enView>Watch y añadimos los registroWREG, PORTAy PORTB, podemos irejecutando el programa enmodo anima-te o en modo paso a paso (step) y anali-

Figura 8.- nueva barra de herramientas después de abrir el esquema de nuestro circuito denominado“Entrenador Basico para PIC16F877A”.

Figura 9.- Aspecto de la barra de herramientas durante la simulación del funcionamiento del circuito.

Figura 10.- Visualización de los registros internos del microcontrolador, al mismo tiempo que corre el programay le llegan señales externas.

50-57 Microcontroladores:Maqueta Resistor 17/10/08 11:36 Página 54

Page 28: CURSO DE MICROCONTROLADORES EL MPLAB

55RESISTOR

zar como van variando los distintosregistros según corre el programa princi-pal y según van cambiando las señalesexternas, tal y como se muestra en lafigura 10.

Ejemplo de aplicación: En elsiguiente ejemplo vamos a hacer que elmicrocontrolador utilice su módulocomparador para generar una señal enforma de diente de sierra escalonada ypara visualizarlo podremos utilizar elosciloscopio virtual que incluye Proteus.

El programa se configura el registroCVRCON para que la tensión del móduloCVREF se obtenga también por la líneaRA2 del microcontrolador y para que elrango del escalón sea CVRRSRC/24,de acuerdo con los parámetros de esteregistro.

En la figura 11 se muestra el diagra-ma de bloques del módulo generador detensión de referencia CVREF. Básica-mente consta de una red resistiva de 16etapas.

El bit CVREN habilita o no el módu-lo CVREF desconectándolo de la alimen-tación. El bit CVRR modifica la redresistiva lo que permite obtener 2 ran-gos diferentes.

Mediante los bits CVR3:CVR0 secontrola un multiplexor que permitedeterminar la tensión de salida (CVREF)según la etapa seleccionada.

Cuando se produce un Reset en eldispositivo, el módulo CVREF quedadesconectado (CVREN=0). Tambiénqueda desconectada la salida de la ten-sión CVREF por la línea RA2 (CVROE=0)y se selecciona el rango alto (CVRR=0).

En el modo Sep de bajo consumo,el módulo CVREF sigue activado y elregistro CVRCON permanece inalterable.

Multiplexor Analogico 16:1

RA2/AN2/VREF-/CVREF

EntradaCom paradorCVREF

CVROE

8R R R R R

16 Estados

8R

VDD

CVREN

CVRR

CVR3CVR2CVR1CVR0

Registro CVRCON (dirección 0x9D)

R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0

CVREN CVEOE CVRR -- CVR3 CVR2 CVR1 CVR0

Bit 7 Bit 0

bit 7: CVREN: Activación del módulo CVref

1 = Alimentación para el módulo CVref en ON

0 = Alimentación para el módulo CVref en OFF

bit 6: CVROE: Salida de la tensión de referencia CVref

1 = La tensión del módulo CVREF se obtiene también por el pin

RA2/AN2/VREF-

0 = La tensión del módulo CVREF se se desconecta del pin RA2/AN2/VREF-

bit 5: CVRR: Selección de rango

1 = Rango bajo de 0 a 0,75CVRSRC con pasos de CVRSRC/24

0 = Rango alto de 0 a 0,75CVRSRC con pasos de CVRSRC/32

bit 4: No implementado

bit 3-0: CVR3:CVR0: Selección de la tensión CVREF de salida 0 VR2:VR0 15

Si CVRR=1

CVREF = ((CR<3:0>)/24)*CVRSRC

Si CVRR=0

CVREF = * (CVRSRC) +(VR3:VR0/32)*(CVRSRC)

La tensión de referencia del módulo es la Vdd y Vss general del sistema. La tensión

de salida se puede ajustar en dos rangos de 16 etapas cada uno. El rango se selecciona

mediante el bit CVRR y las etapas mediante un valor de 4 bits (entre 0 y 15) que se

aplican a los bits CVR3:CVR0. La ecuación para calcular la tensión de salida CVREF

es la siguiente:

• Si CVRR=1 (rango bajo) CVREF = ((CR<3:0>)/24)*CVRSRC

• Si CVRR=0 (rango alto) CVREF = * (CVRSRC) +(VR3:VR0/32)*(CVRSRC)

Si la tensión fuente de referencia CVREF = 5V, en rango de baja resolución es de

0.20833V por cada etapa o paso (1/24)*5. La tensión de salida está comprendida entre

0 y unos 3.124V. En el rango de alta resolución es de 0.150 por cada etapa o paso. La

tensión CVREF de salida está comprendida ahora entre 1,25V y 3.59V.

Figura 11.-Diagrama de bloques del módulo generado de CVREF

50-57 Microcontroladores:Maqueta Resistor 17/10/08 11:36 Página 55

Page 29: CURSO DE MICROCONTROLADORES EL MPLAB

MICR

OCON

TROL

ADOR

ESMI

CROC

ONTR

OLAD

ORES

56RESISTOR

;***********************************************************************************************;Programa: Diente_Sierra_02.asm;Plataforma Hardware :Monibot PIC16F877A;Fecha..............:Octubre 2008;Descripción:Utilizando el módulo generador CVREF, obtenemos una tensión analógica en diente de sierra;de 16 escalones.La tensión de salida se obtiene por la patilla RA2/CVREF;***********************************************************************************************List p=16F877A ;Tipo de procesadorinclude "P16F877A.INC" ;Incluir definiciones de los registros internosCBLOCK 0X20Valor ;Valor para el D/A de salidaENDC

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF &_LVP_OFF & _DEBUG_OFF & _CPD_OFForg 0x00

Inicio bsf STATUS,RP0movlw b'00001000' ;Configuta el TMR0 como temporizador y preescaler 1:1movwf OPTION_REGbcf STATUS,RP0Bucle movlw b'00001111'andwf Valor,W ;Lee el valor para salidaiorlw b'11100000' ;CVREF en ON, CVREF --> RA2,rango bajo,bsf STATUS,RP0movwf CVRCON ;Tensión fuente (CVRSRC)=Vdd-Vss, Valor --> CVR3:CVR0bcf STATUS,RP0incf Valor,F ;Siguiente valor o etapa de la rampa del diente de sierracall Retardo_200micros ;Retardo_1msgoto Bucle;**********************************************************************************;Subrrutina de temporización de 200uS utilizando el TMR0Retardo_200microsbcf INTCON,INTF ;Flag de desbordamoento de TMR0 = 0movlw .66 ;Valor experimental que hay que cargar en TMR0movwf TMR0 ;para que la subrruina dure 200 uSEspera btfss INTCON,T0IF ;Se ha desbordado el TMR0?goto Espera ;si no se ha desbordado esperareturn ;Si se ha desbordado retorno subrruitna

end ;Fin del programa fuente

Figura 12.- Circuito para comprobar el funcionamiento del programa diente_sierra_02.asm

50-57 Microcontroladores:Maqueta Resistor 17/10/08 11:36 Página 56

Page 30: CURSO DE MICROCONTROLADORES EL MPLAB

Si se desea reducir el consumo en elmodo Sep será necesario desconectar elmódulo CVREF poniendo a “0” elbit CVREN, lo que desconecta a la redresistiva.

Este módulo generador de tensiónde referencia CVREF puede trabajar deforma totalmente independiente delmódulo amparador. Esa tensión de refe-rencia se puede obtener por la patillaRA2/ CVREF siempre que se active el bitCVROE. Es este caso la línea RA2 se pue-de considerar como señal de salida deun convertidor D/A de 4 bits (16 eta-pas). Por lo tanto el programa será elque hemos denominadoDiente_Sierra_02.asm.

El circuito que capturaremos en Pro-teus es el que semuestra en la figura 12.

Si seguimos los pasos indicados enel ejemplo anterior, al simular el funcio-namiento del programa, aparecerá unapantalla de osciloscopio como la que semuestra en la figura 13, en la que sepuede ver perfectamente el funciona-miento del programa. Figura 13.- Señal obtenida en el osciloscopio virtual de Protesus

50-57 Microcontroladores:Maqueta Resistor 17/10/08 11:36 Página 57