Curso de MPLAB
Curso de MPLAB
Curso de MPLAB
es/personal/fremiro/
EL MPLAB
El MPLAB es un software que junto con un emulador y un programador de los mltiples que existen en el mercado, forman un conjunto de herramientas de desarrollo muy completo para el trabajo y/o el diseo con los microcontroladores PIC desarrollados y fabricados por la empresa Arizona Microchip Technology (AMT). El MPLAB incorpora todas las utilidades necesarias para la realizacin de cualquier proyecto y, para los que no dispongan de un emulador, el programa permite editar el archivo fuente en lenguaje ensamblador de nuestro proyecto, adems de ensamblarlo y simularlo en pantalla, pudiendo ejecutarlo posteriormente en modo paso a paso y ver como evolucionaran de forma real tanto sus registros internos, la memoria RAM y/o EEPROM de usuario como la memoria de programa, segn se fueran ejecutando las instrucciones. Adems el entorno que se utiliza es el mismo que si se estuviera utilizando un emulador. En las siguientes lneas se pretende ayudar a todos aquellos que se enfrentan por primera vez a este programa, tanto en su instalacin como en la utilizacin de esta potente herramienta que nos proporciona Arizona Microchip Tecnology. En el CD-ROM que se adjunta con este curso se encuentran las versiones 4.12.00 y la 4.99.07 del programa, estas versiones y las nuevas que van saliendo cada poco tiempo y que incorporan nuevos tipos de microcontroladores, se pueden obtener de forma gratuita en la pgina web www.microchip.com, el la cual se encuentra una amplia informacin sobre todos los dispositivos que fabrica AMT. De las dos versiones, nosotros vamos a centrarnos en la V.12.00, por
MPLAB
ser esta la que menos recursos de software y harware necesita para trabajar con ella, adems est pensada para trabajar con las herramientas de desarrollo MPLAB-ICD y el PICSTART que se encuentras ya muy difundidas, mientras que la versin V.99.07 est pensada para trabajar con el MPLAB-ICE 2000 soportado en NT, esta versin presenta algunas modificaciones en las ventanas de configuracin del programa respecto a la anterior, adems para su correcto funcionamiento es necesario disponer de la gama alta de los sistemas operativos que se indican en el siguiente apartado adems del hardware ms potente. INSTALACIN DEL PROGRAMA Los requerimientos mnimos para la instalacin de los programas son: Procesador 386, 486 o Pentium* Windows 3.1/ 95/ 98, Windows NT 3.51/4.0, Windows 2000 ,MACOS 7.0, o Unix compatible OS 16 MB de memoria RAM para sistema con Windows 95. 24 MB de RAM para Windows NT systems. 32 MB para sistemas con Windows 2000. Unidad de CD-ROM. Navegador (3.0 HTML) Se recomienda por AMT: Procesador Pentium 32 MB de memoria RAM El CD-ROM de Microchip requiere para su navegacin de un programa HTML. Para los equipos con Windows 95/98/NT se recomienda utilizar Internet Explorer versin 5.0 o el Netscape Navigator versin 4.0, adems har falta para la lectura de los numerosos documentos en formato pdf el programa Adobe Acrobat Reader versin 3.0 o 4.0. Estos programas pueden obtenerse gratuitamente en las correspondientes web:
Capitulo 1 Pgina 1
Microsoft Netscape
www.netscape.com
Internet
Explorer
www.microsoft.comm
Adobe
www.adobe.com
Winzip: http://www.pkware.com o en http://www.winzip.com Al introducir el CD-ROM en la unidad correspondiente en los sistemas que tengan instalado Windows 95/98, Windows 20000 o NT y que tenga habilitada la opcin autorun, aparece en pantalla el mensaje de la Figura 1, activaremos el botn de Yes.
En caso de que no aparezca este mensaje al arrancar el CD-ROM, buscar con el explorador de Windows el archivo \indextxt.htm para el formato de texto o el \index.htm para el formato grfico, al ejecutar este archivo aparecer una pantalla como la que se muestra en la Figura 2, que es similar a la tiene Microchip en su pgina web.
MPLAB
Capitulo 1 Pgina 2
Seguidamente, activamos el botn de Development Tools, seleccionamos en la siguiente pantalla la opcin MPLABIDE y al final de la pgina a la que nos lleva este vinculo, encontramos el en lace MPLAB Version 4.12.00 que nos lleva a la pgina de descarga del programa MPLAB (Disks 1 to 7) (o los 7 discos individualmente) y que descargaremos sobre un directorio de nuestro disco duro que por ejemplo habremos llamado C:\KK. Hemos seguido estos pasos ya que son los mismos que deberemos seguir para descargar las nuevas versiones desde la web de Microchip, pero de una forma ms directa, podramos haber copiado directamente sobre el directorio C:\KK los archivos que estn en el CD-ROM en el directorio \download\Tools\PICmicro\DevEnv\M PLABi\Software\v412. Estos archivos estn comprimidos con las utilidades WinZIP. Debern descomprimirse dichos archivos utilizando las herramientas WinZIP.
Activamos el botn de Next y el programa responde con una nueva pantalla como la que se muestra en la Figura 5, con el men de todos los mdulos del programa que podemos instalar.
Figura 3 .- Archivos en C:\KK\ obtenidos del CD y una vez descomprimidos con las utilidades WinZIP. Ejecutar MP412000.exe
Una vez que finalicemos la instalacin del programa podremos borrar por completo el subdirectorio C:\KK para dejar espacio en el disco duro. Para instalar el programa se ejecuta el archivo mp41200.exe, cuando esto ocurre aparece la pantalla de la Figura 4.
En principio, si no se dispone de emulador, podemos ahorrar espacio en el disco duro y no instalar estos mdulos, para ello, se desactivan dichos campos tal y como se muestra en la Figura 5, se activa el botn de Next, para pasar a la siguiente pantalla. Igualmente pulsamos el botn de Next en la pantalla de Select Language Components en donde dejaremos activos todos los campos. Aparece la pantalla de la Figura 6 en la que se debe seleccionar el directorio donde queremos que se instale el programa, por defecto lo hace en el directorio C:\Archivos de programas\MPLAB.
MPLAB
Capitulo 1 Pgina 3
Una vez finalizada la instalacin que puede tardar unos minutos, se puede pasar a ejecutar el programa MPLAB, es recomendable que si se va a utilizar mucho este programa, lo cual esperamos, se haga un acceso directo a dicho programa con lo que tendremos en el escritorio de Windows un icono como el de la Figura 7.
Antes de seguir adelante, recomendamos crear una carpeta con el explotador de Windows por ejemplo C:\Archivos de programas\MPLAB\Trabajo, dentro de la cual posteriormente iremos creando todos nuestro proyectos. COMO EMPEZAR. Cuando se pulsa el icono del MPLAB aparece una pantalla como la que se muestra en la Figura 8.
Lo primero que haremos es seleccionar el modo de trabajo como simulador y el tipo de microcontrolador con el que queremos trabajar. Para ello se selecciona el botn de Options de la barra del control que aparece en el escritorio y del men desplegable la opcin Developement Mode, con lo que aparece la pantalla de la Figura 9 en la que se activa el modo MPLAB-SIM simulator y el microcontrolador con el que se desea trabajar, que en nuestro caso ser el PIC16F84, por ltimo, pulsamos el botn de Reset para aceptar los cambios.
Los iconos que aparecen en la barra de herramientas, son funciones que se encuentran incluidas en el men de control, pero como en todos los programas de Windows se incluyen para manejar de forma ms cmoda el programa. Seguidamente comentaremos
MPLAB Fernando Remiro Domnguez Capitulo 1 Pgina 4
que significa cada uno de los iconos de la barra de herramientas que aparece en esta pantalla, mas adelante veremos que
NUESTRO PRIMER PROYECTO Bueno, pues ya estamos en condiciones de crear nuestro primer proyecto, para ello comenzamos por activar en el men de control la opcin File>New o bien activamos el icono de crear nuevo documento en la barra de herramientas. El programa contestar con el cuadro de dilogo de la Figura 11.
Figura 11.- No hay ningn proyecto abierto Quiere crear un nuevo proyecto?
MPLAB
Capitulo 1 Pgina 5
Activamos el botn de Yes y aparece un cuadro de dialogo como el de la Figura 12 en el que se nos pide el nombre del proyecto que tendr extensin *.pjt , como este es nuestro primer proyecto le llamaremos ejer1.pjt y lo guardaremos en la carpeta de trabajo que habamos creado anteriormente.
Figura 14.- Apertura del documento para comenzar a escribir nuestro proyecto
EL EDITOR
Figura 12.- Creacin de un nuevo proyecto
Activamos el botn de OK y estamos en condiciones de empezar a escribir nuestro primer proyecto al aparecer una pantalla como la de la Figura 14
Comencemos por lo tanto a escribir en lenguaje ensamblador nuestro primer programa que llamaremos ejer1.asm y que se muestra en la Figura 15. El programa realiza la suma en binario de dos nmeros (7+8 =15) y para escribirlo usamos el editor de textos. La extensin *.asm es la que deben llevar todos los programas escritos en ensamblador. Deberemos de tener en cuenta que la primera columna del editor est reservada para las etiquetas que son expresiones alfanumricas escogidas por el usuario que definen valores de posiciones de memoria. Estas deben empezar siempre por una letra. Adems se debe de tener en cuenta que no pueden usarse expresiones que ya utiliza el ensamblador tales como: Instrucciones Directivas del propio ensamblador Nombres de registros especiales (SFR) Nombre de cada uno de los bit de los registros especiales. En las siguientes columnas, se puede comenzar a escribir el nemnico de la instruccin o las directivas del ensamblador. Por ltimo hay que decir que se pueden y se deben aadir comentarios que son elementos indispensables en muchos casos para seguir el razonamiento de los programas sin perderse,
Capitulo 1 Pgina 6
MPLAB
para ello cuando el MPLAB encuentra un ;(punto y coma) no se genera cdigo mquina. En todos estos campos los espacios en blanco no son significativos y las lneas en blanco tampoco. Para una mejor legibilidad del programa, se recomienda acceder a cada campo utilizando el tabulador. El uso de maysculas y minsculas en los programas obedece a una serie de reglas o normas de estilo, comunes entre los programadores en ensamblador, que si bien no son obligatorias, facilitan la
lectura del cdigo fuente. Estas reglas son: Las directivas del ensamblador se escriben en maysculas Los nombres de las variables se escriben en maysculas. Los nemnicos de las instrucciones se escriben en minsculas El programa se escribe utilizando los tabuladores para definir las distintas columnas, tales como etiquetas, comienzo de lneas de programa y columna donde empiezan los comentarios separados por un ; (punto y coma).
MPLAB
Capitulo 1 Pgina 7
Cuando terminemos de escribir el programa seleccionamos File>Save con lo que aparece el cuadro de dilogo de la Figura 16, donde le damos el nombre a nuestro programa ejer1.asm , dentro de nuestra carpeta Trabajo.
Pulsamos sobre ejer1[.hex], y se activa el botn de Node Properties, que hasta el momento apareca de color gris, si lo activamos aparece el cuadro de dilogo de la Figura 19,donde estn reflejadas todas las propiedades del nodo actual. Sin modificar ninguna de estas propiedades se pulsa el botn de OK para continuar, lo que nos lleva de nuevo a la pantalla de la Figura 17. Ahora seleccionamos el botn Add Node (aadir elementos al nodo), lo que provoca que aparezca un nuevo cuadro de dilogo como el de la Figura 18, en el que seleccionaremos el archivo ejer1.asm
El siguiente paso ser volver a editar nuestro proyecto seleccionando en el men de control project>edit project , lo que provoca que aparezca el men de la Figura 17.
MPLAB
Capitulo 1 Pgina 8
Figura 19.- Propiedades del nodo de nuestro proyecto donde se seleccionan los ficheros y formatos que se obtendrn al ensamblar el programa.
Pulsamos el botn de Aceptar y se vuelve a la pantalla de la Figura 17 en la que ha aparecido el fichero ejer1[.asm] junto al fichero ejer1[.hex] que apareca antes en el campo de Project files. Seguidamente pulsamos el botn de OK, lo que nos llevar de vuelta a la pantalla de la Figura 15. Para ensamblar el programa seleccionamos en el men de control la opcin Project>Build All (tambin podramos haber pulsado el botn correspondiente de la barra de herramientas del simulador , como luego veremos ), y si no se han cometido errores al introducir los cdigos, aparece una pantalla como la de la Figura 20, lo que nos indica que el programa se ha ensamblado con xito y ya estamos en condiciones de iniciar la simulacin del programa. Si por el contrario, se han detectado errores, en dicha pantalla ser mostrado el error; si se hace doble clic sobre la lnea que muestra el error, el cursor saltar directamente a la lnea de cdigo donde se encuentra el error. Una vez subsanados los errores habr que volver a compilar el programa.
Figura 20.- Pantalla del MPLAB una vez ensamblado correctamente el programa fuente
LA BARRA DE MENS Seguidamente analizaremos las distintas posibilidades de la barra de men del MPLAB, si bien ya hemos utilizado algunas de las posibles opciones que presenta la barra de herramientas, ahora analizaremos estas una por una.
MPLAB
Capitulo 1 Pgina 9
1.- Windows: Al activar esta opcin de la barra de men, aparece el men desplegable de la Figura 21.
Si hacemos clic sobre la barra de men del sistema, activando el icono que hay en la parte superior izquierda de esta ventana, aparece el men desplegable de la Figura 23, en el que se puede seleccionar entre tres formas de ver la memoria de programa:
Figura 21.- Men desplegado de la opcin Windows de la barra de herramientas.
1.1.- Program Memory : Al seleccionar esta opcin aparece la pantalla de la Figura 22 en la que se puede apreciar las posiciones de memoria que ocupa cada una de las instrucciones, el cdigo de operacin de cada instruccin y la posicin de memoria que se le ha dado a cada etiqueta.
Hex Code Display: representa la memoria de programa con los datos en hexadecimal. Esta opcin es muy til al usar el programador del dispositivo y comprobar si se grabaron bien los datos. La pantalla que se obtiene es la que se muestra en la Figura 24.
MPLAB
Capitulo 1 Pgina 10
Machine Code Dispaly: esta opcin presenta el cdigo mquina ensamblado tal y como se ve en la Figura 22. Con la informacin de las etiquetas y . direcciones de memoria que tienen asignadas. Disassembly Display: despliega el cdigo hexadecimal desensamblado con los smbolos. Cuando la ventana est en la opcin Machine Code o Disassembly Display, la instruccin a la que apunta el contador de programa, est resaltada. 1.2.- Trace Memory : La ventana de memoria de traza toma una instantnea de la ejecucin del programa,
cuando este est corriendo en tiempo real. Para emuladores que tienen un buffer de traza, que se utiliza cuando el programa corre en tiempo real y este no se puede detener en algunas aplicaciones, nos muestra los puntos por los que pasa el programa. Algunos problemas slo aparecer cuando la aplicacin est corriendo, es decir, estos no dan la cara cuando se ejecuta en modo paso a paso. La memoria de traza es una herramienta de depuracin para probar tales aplicaciones. Para ms informacin es recomendable mirar en la gua de usuario del emulador que se est utilizando. En el simulador, el buffer de traza o memoria de traza, es til para visualizar un registro a lo largo de la ejecucin del programa, de manera, que se puede registrar por donde pasa el programa y despus analizarlo. El simulador toma datos de forma un poco distinta que el buffer del emulador. Antes de activar la opcin Trace Memory, para poder obtener los datos en la memoria de traza en el simulador, es necesario marcar con el ratn las lneas de cdigo de programa de las cuales queremos obtener los datos al ejecutarse el programa, estas pueden estar en un bloque de instrucciones o bien colocadas en el programa de forma discontinua. Seguidamente, se pulsa el botn de la derecha del ratn, de manera que aparece el men desplegable de la Figura 25.
MPLAB
Capitulo 1 Pgina 11
Figura 25.- Seleccin de las lneas de programa para cargar el buffer de traza.
Al seleccionar la opcin Trace Point(s) aparecen resaltadas las lneas en color verde. Seguidamente se activa el icono (Run), lo que del semforo verde har ejecutar la simulacin en tiempo real( no olvidemos que en el simulador emula el funcionamiento del microcontrolador y es mucho ms lento que este), y despus de unos segundos, si activa-
mos el icono del semforo rojo Halt the processor, se detiene la ejecucin del programa. Si ahora se activa dentro de la opcin Windos>Trace Memory, se pueden ver la traza obtenida, que en nuestro caso en la que se muestra en la Figura 26.
Figura 26.- Traza de memoria obtenida en el programa con los valores marcados en la Figura 25
El simulador muestra en esta ventana el valor del tiempo que tarda en ejecutar cada lnea de programa y tambin cualquier variacin sobre los registros al ejecutarse el cdigo de instruccin. 1.3.- EEPROM Memory: Si el dispositivo emulado tiene EEPROM o memoria
MPLAB
Flash, como es el caso del PIC16C84 o el 16F84 respectivamente, el contenido de la memoria EEPROM puede verse seleccionando la opcin Window>EEPROM. La memoria de EEPROM no puede modificarse a travs de esta ventana. Para ello hay que utilizar el men de dialogo al que se accede selecionando
Capitulo 1 Pgina 12
Window>Modify..., que se describe ms adelante. 1.4.- Absolute Listing: La Ventana de Listado de Programa, realmente nos presenta el archivo de nuestro proyecto con extensin *.lst, donde se puede ver
el archivo generado por el ensamblador o compilador. El listado muestra el cdigo fuente en modo absoluto con el cdigo objeto generado, tal y como se puede ver en la Figura 27.
Adems al final de este archivo aparece la informacin de las etiquetas utilizadas en el programa, en que lnea de programa se encuentran, la memoria utilizada, la memoria libre adems de los errores, warnings y mensajes reportados por el ensamblador. 1.5.- Stack: El contenido de la pila puede verse al seleccionar la opcin Window>Stack. Los contenido de la pila puede mostrarse con o sin nmero de lnea. El formato de presentacin se selecciona a travs del men del sistema. Si la Pila se desborda, el MPLAB indica con su rebosamiento con el mensaje underflow. Al men del sistema se accede pulsando el botn de la esquina de la ventana.
Figura 28.- Ventana de la Pila
1.6.- File Registers : La lista de registros de propsito general (GPR) del microcontrolador, que son de memoria SRAM, se pueden ver seleccionando la opcin Window>File. Esta ventana al desplegarse presenta una lista con todos los registros de proposito general del dispositivo emulado, tal y como se muestra en la Figura 29.
MPLAB
Capitulo 1 Pgina 13
Este listado de registros pueden visualizarse de tres maneras. El formato deseado se elige a travs del men del sistema.
Hex Display.- Esta opcin presenta los registros con datos en hexadecimal, tal y como se ve en la Figura 29. Symbolic Display.- Este formato presenta un archivo con los registros de propsito general con sus etiquetas si las tienen y su contenido en hexadecimal, decimal, binario y formato carcter tal y como se puede ver en la Figura 30.
Figura 30.- Formato Simbolic Display del listado de registros de propsito general
ASCII Display . Esta opcin presenta un listado de los registros de propsito general con el contenido de los datos en cdigo ASCII. Se puede modificar el contenido de uno o varios registro en esta ventana. Par ello se pone el puntero del ratn sobre el primer registro que se quiere modificar y pulsando el botn izquierdo se marca el bloque de los registros que se quieren alterar, si slo se quiere modificar, bastar con ponerse encima de l, seguidamente se pulsa el botn de la derecha y se activa la opcin Fill Register(s), lo que har aparecer la ventana de la Figura 40, en la que se puede ver como aparece la direccin del registro a modificar, una lneas mas adelante se analizan las posibilidades de esta opcin. 1.7.- Special Function Registers (SFRs): El contenido de los registros de funciones especiales (FSR) pueden verse seleccionando Window>Special Function Registers. El formato proporcionado por esta ventana es ms til para analizar el estado de los FSRs en cada momento, adems como puede verse en la Figura 31 se muestra cada uno de los registros
MPLAB
con el nombre que tiene asignado adems de su contenido en distintos cdigos: hexadecimal, decimal, binario y formato carcter o ASCII.
Para modificar un SFR, hacer doble clic sobre el nombre del registro, esta accin har aparecer el cuadro de
Capitulo 1 Pgina 14
dialogo de la opcin Modify (Figura 40) en la que aparecer ya la direccin del registro seleccionado. 1.8.- Show Symbol List : Esta ventana muestra un listado de los smbolos, es decir variables y etiquetas, utilizadas en el cdigo fuente del programa. Estos smbolos estn en el archivo *.COD de nuestro proyecto. En la Figura 32 se muestra el listado de smbolos de nuestro programa.
1.9.- Stopwatch and Clock Frecuency : Para calcular el tiempo de ejecucin de nuestro programa o de una subrutina, podemos contar el nmero de instrucciones que se realizan y multiplicarlo por 4 veces la frecuencia de la seal de reloj (tiempo de un ciclo mquina) o por 8 en el caso de que las instrucciones sean de salto. Esto en algunas ocasiones es engorroso, pero el MPLAB con esta opcin de cronmetro nos permite medir tiempo de ejecucin de las instrucciones de nuestro programa sin equivocaciones. El cronmetro calcula el tiempo basndose en la frecuencia del reloj del microcontrolador PIC que estamos simulando, para ello previamente debemos fijar la frecuencia del oscilador empleado. Esto se realiza haciendo los siguientes pasos: Activamos desde el men Options>Processor Setup>Clock frequency tal y como se muestra en la Figura 33
Figura 32.- Ventada del listado de smbolos utilizados en nuestro programa fuente.
Setup>Clock frequency Inmediatamente se abre un cuadro de dialogo como3la de3la Figura 34, donde se fija3la frecuencia del reloj.
MPLAB Fernando Remiro Domnguez Capitulo 1 Pgina 15
Despus se activa la opcin Windows>StopWatch, con esto conseguimos tener siempre abierta la ventana que muestra el tiempo transcurrido y los ciclos mquina empleados en la ejecucin de cada instruccin, como puede verse en la Figura 35.
1.11.- Watch Windows : MPLAB permite supervisar los contenidos de los registros del archivo a travs de una ventana temporal. Para abrir una ventana temporal, se selecciona Window>Watch Windows. El programa responde con un cuadro de dilogo como el de la Figura.37
Figura 35.- Cronometro para contar el tiempo que tarda en ejecutarse un programa o parte de l.
1.10.- Project Windows : La Ventana del Proyecto slo est disponible cuando hay un proyecto abierto. Presenta la lista de archivos que actualmente hay en dicho proyecto. Si el proyecto se ha ensamblado o compilado la ventana del proyecto muestra una lista de todos los archivos incluidos en el proyecto. Por otra parte, la ventana del Proyecto slo presenta el archivo del proyecto principal. Un doble clic en cualquier archivo resaltado en la ventana
Para agregar los registros a visualizar, poner el ratn encima de uno de ellos pulsar el botn de la izquierda, seguidamente activar el botn de Add. Tambin se pueden anular los smbolos poniendose sobre ellos y pulsando el botn izquierdo del ratn y seguidamente el botn de Delete. Cuando estn todos los registros seleccionados pulsar el botn de Close y aparecer una ventana, en este primer caso, Watch_1, como puede
Capitulo 1 Pgina 16
MPLAB
verse en la Figura 38, en la que se ven los smbolos (etiquetas y variables) seleccionados
hexadecimal, decimal, binario, ASCII o float. Byte Order.- Determina el orden de visualizacin de cada byte, disponible slo para los nmeros de 16 bits. Display Bits.- Determina en qu momento se visualiza el bit seleccionado al activarse. 1.12.- Modify: Al activar la opcin Window>Modify aparece el cuadro de dilogo Modify como el que se muestra en la Figura 40. En este cuadro se permite leer y escribir una posicin de memoria o el rango de una posicin de memoria. Modify puede trabajar en las reas de memoria siguientes: Data Stack Program EEPROM (Si tiene)
Para ver y cambiar las propiedades de un smbolo, hay que pulsar el botn de propiedades que aparece en el cuadro de dilogo de la Figura 37, al hacerlo aparece un nuevo cuadro de dilogo como el de la Figura 39
Figura 39.- Cuadro de dilogo de las propiedades de los datos de las ventanas temporales
El contenido de la ventana del reloj puede desplegarse mostrando o sin mostrar los nmeros de la lnea. Para elegir el formato deseado se hace a travs del men del sistema (pulsando el icono de la parte superior izquierda de la ventana).El men del sistema tambin se usa para revisar la informacin en la ventana temporal. La ventana de dilogo permite seleccionar el formato en que el se presentan los smbolos: Format.- Determina qu tipo de numeracin se desea visualizar. Size.- Determina cuntos bytes sern incluidos en la visualizacin del nmero:
Como resumen a todo lo que hemos contado hasta el este momento, podemos decir que el comando Windows, puede presentar una visin de todos los registros del microcontrolador en cada momento y podemos tener al final una pantalla en la que visualicemos segn nos interese las ventanas mas adecuadas para el seguimiento de nuestra aplicacin, como puede ser la de la Figura 41.
MPLAB
Capitulo 1 Pgina 17
MPLAB
Capitulo 1 Pgina 18
2.- Debug: Antes de continuar debemos decir que todos los comentarios que se hacen sobre la visualizacin de pantallas, estn referidos a la configuracin de la Figura 41, a no ser que se especifique lo contrario. Cuando activamos esta opcin de la barra de men, aparece el men desplegable de la Figura 42.
2.1.- Run: Cuando se selecciona Run aparece el men desplegable de la Figura 43 con las opciones: Run Reset Halt Halt Trace Animate Step Step Over Update All Registers Change Program Counter
MPLAB
Capitulo 2 Pgina 1
2.1.1.-Debug>Run>Reset: Esta opcin inicializa el sistema. El Contador de Programa (PC), que es la direccin de memoria donde se encuentra la primera instruccin que ejecuta el microcontrolador cuando se realiza un Reset en el sistema; se pone a cero, a esta direccin de memoria se le denomina vector de Reset. La lnea del cdigo fuente de esta direccin queda resaltada con una barra en vdeo inverso, adems se puede comprobar que el PC se pone a 0x00 Para activar esta accin tambin se puede activar la tecla [F6] o el siguiente icono de la barra de herramientas 2.1.2.-. Debug>Run>Step: Esta accin ejecuta la instruccin cuya direccin de memoria coincida con el valor al que apunta el PC antes de activarla. Para comprobar su funcionamiento en nuestro programa ejemplo si, despus de haber realizado un Reset, se ejecuta la opcin Step podemos ver como el PC pasa a valer 0x05, que es lo que esperamos despus de realizar la instruccin goto INICIO, donde INICIO = 05h, utilizamos esta posicin para salvar el vector de Interrupcin que est en la posicin de memoria 04h, adems podemos ver como se resalta en vdeo inverso esta direccin de memoria. Si algn registro ms se hubiera modificado este quedara resaltado en color rojo como lo han hecho los registros pcl y t0pre del SFR. Si se pulsa la tecla [F7] o se activa el siguiente icono de la barra de herramientas el efecto es exactamente el mismo. Si volvemos a ejecutar la opcin Step (paso) veremos que al ejecutar la instruccin movlw 0x07 se alteran los siguientes registros W=07, pcl= 06 y
MPLAB
Capitulo 2 Pgina 2
t0pre=03, que es justamente lo que esperaramos de la ejecucin de esta instruccin cargar el literal 07 en el registro W, el PC se incrementa en uno apuntando a la siguiente instruccin a realizar y el timer0 tambin se incrementa en uno. Como puede apreciarse esta opcin nos permite comprobar paso a paso como se ejecuta nuestro programa, y de esta forma, ver si hace lo que nosotros queremos o por el contrario si nos hemos equivocado al escribir el programa y donde no est haciendo lo que nosotros esperbamos que hiciera. Esta opcin es especialmente interesante cuando se comienza a estudiar el ensamblador del microcontrolador y queremos comprobar el set de instrucciones del mismo o bien para depurar los programas. 2.1.3.-. Debug>Run>Animate: Esta opcin es similar a la anterior solo que en este caso en lugar de ejecutar de forma controlada el programa, este se ejecuta de forma automtica desde la direccin que indique en el instante de activarla el PC hasta que finaliza, en nuestro caso con la instruccin Sleep, aunque podemos comprobar como, estando en el modo dormido el contador t0pre se sigue incrementando por si se quiere despertar por desbordamiento del perro guardin, en el caso de estar habilitado, que no es el nuestro. Se puede notar que cuando se est trabajando en el modo Animate la lnea de estados, que est en la parte mas baja de la pantalla, tiene el fondo de color amarillo. Tambin se puede activar esta opcin pulsando simultneamente las teclas [Control]+[F9]. Para parar la ejecucin se activa la opcin Halt. Cuando se quiere ejecutar el programa y que cuando se ejecute una instruccin determinada este se detenga, para poder de esta forma analizar que es lo que ha pasado hasta este momento en el programa, debemos utilizar un Break Point o Punto de Ruptura. La forma ms sencilla de introducir un Break Point, es ponerse con el ratn en la lnea de programa donde queremos colocar le y pulsar el botn de la derecha de ratn, esta accin hace que se despliegue una cuadro de acciones como el de la Figura 44, seguidamente se selecciona la opcin Break Point y en la pantalla queda resaltada en rojo lnea de programa donde queremos que el programa se detenga cuando se est ejecutado en modo Animate o Run.
MPLAB
Capitulo 2 Pgina 3
Para comprobar esto vamos a seguir los pasos siguientes: Hacemos un Reset en el programa de simulacin. Activamos la ejecucin del programa en cualquiera de los dos modos continuos, es decir, en modo Animate o Run Verificamos que al llegar a la lnea donde hemos puesto el Break Point, el programa se para. Si lo que nos interesa es ver como evoluciona el microcontrolador al ejecutar una determinada instruccin, lo que tenemos que hacer es una Traza, es decir, anotar el valor que van tomando los registros que modifica la instruccin cada vez que se pasa por ella en el programa. Para ello antes de empezar la simulacin de la ejecucin del programa, activaremos la opcin Trace Point en el men que aparece en la pantalla de la Figura 44. Esta accin resalta en color verde la lnea de programa seleccionada, En este caso, para ver la evolucin del contenido de los registros a los que afecta esta instruccin, debemos abrir la ventana Windows>Memory Trace. Para comprobar el funcionamiento de este nuevo comando: Ejecutar el programa en el modo Animate o Run. Verificar que el programa sigue ejecutndose pero que en la ventana de Memoria de Traza, quedan registrados los cambios que se producen en el microcontrolador cuando se ejecuta la instruccin y el instante de tiempo de su ejecucin.
MPLAB
Capitulo 2 Pgina 4
2.1.4.-. Debug>Run>Halt: Esta accin detiene el programa que se est ejecutando en este momento, tal y como se ha indicado en el apartado anterior. Tambin se puede activar pulsando la tecla [F5] o el icono del semforo rojo
.
vuelve a poner de color blanco y se actualizan los registros con los valores correspondientes a la ltima instruccin ejecutada. Esta opcin hace lo mismo cuando se est ejecutando el programa en el modo Debug>Run>Run. 2.1.5.-. Debug>Run>Run: Al activarse esta opcin el programa se ejecuta a toda velocidad modo tiempo real, no obstante, no hay que olvidar que se trata de una simulacin por ordenador de la ejecucin del programa y que, por lo tanto, es mucho ms lenta. Otra forma de activar esta accin es pulsar la tecla [F9] o el icono del semforo verde Cuando esto
ocurre, el fondo de la barra de estado se pone de color amarillo y no se actualizan los registros. Para parar la ejecucin se pulsa la opcin Debug>Run>Halt. 2.1.6.-. Debug>Run>Step Over: Esta opcin ejecuta paso a paso las instrucciones de igual forma que lo hace la opcin Debug>Run>Step, pero cuando llega a la ejecucin de una subrutina (instruccin call) sta se ejecuta de igual forma que si fuera una sola instruccin, si es una subrutina larga como puede ser por ejemplo una temporizacin, lgicamente esta tardar ms tiempo en ejecutarse que una sola instruccin. Para activar esta opcin, tambin se puede pulsar la tecla [F8] o bien activando con el ratn el siguiente icono
.
2.1.7.-. Debug>Run>Chagr Program Counter..: Cuando se activa esta opcin aparece un cuadro de dilogo como el de la Figura 45
En el campo de PC, podemos poner cualquier posicin de memoria o bien, si se activa la flecha, se despliega un men con todas las etiquetas que tenga nuestro programa. Seguidamente se activa el botn de Change. Esta opcin, que nos permite realizar saltos, puede ser utilizada en la depuracin de programas cuantas veces se desee. Con ello se evitar entrar en bucles del programa de los cuales es muy difcil salir si no se cumplen determinadas condiciones o tardan mucho tiempo en ejecutarse como pueden ser las temporizaciones. Otra forma de activar esta accin es pulsar el icono de la barra de herramientas
.
MPLAB
Capitulo 2 Pgina 5
2.1.8.-. Debug>Run>Hall Trace: Permite al emulador cargar el buffer de memoria con los datos de los registros en los puntos marcados con un Trace Poins(s). Para ms informacin ver la documentacin del emulador que se est utilizando. 2.1.9.-. Debug>Run>Update All Registers: Actualiza el contenido de los registros despus de haber ejecutado una instruccin. Como podemos apreciar, los registros se actualizan cuando se est ejecutando el programa en modo paso a paso, pero si queremos dejar registrada una traza del programa y tenemos abierta la ventana de memoria de traza Windows>Trce Memoy cuando se ejecuta la instruccin en la que se quiere registrar la traza, esta no se actualiza al no ser que se active la opcin Debug>Run>Update All Registers.
2.2.- Execute Esta opcin del men permite controlar el estado de los registros durante la ejecucin y el firmware del procesador designado. Al activarla se despliega el men de la Figura 46.
2.2.1.- Execute an Opcode: activando Debug>Execute>Execute an Opcode se ejecuta una sola instruccin o una serie de instrucciones sin modificar el programa cdigo objeto de la memoria. Despus de ejecutar la instruccin, se puede seguir ejecutando el programa desde el estado de actual de la memoria de programa. Al activar esta opcin aparece el cuadro de dilogo de la Figura 47.
MPLAB
Capitulo 2 Pgina 6
Opcode: Introducir la instruccin en hexadecimal o ms cmodamente en ensamblador (movlw 0x025). Haciendo clic en la flecha que hay junto al campo de Opcode, se despliega una ventana que contiene las ocho ltimas ordenes que se ha introducido del modo anteriormente expuesto (si se han ejecutado dos instrucciones iguales solo guarda una de ellas).
Execute, Al activar este botn se ejecuta la instruccin pero no se modifica el PC ni los temporizadores.
2.2.2.- Conditional Break: Fija un punto de ruptura condicional, el MPLAB se detiene cuando el valor de un registro especfico alcanza un valor o una condicin prefijada de antemano. Si se activa la opcin Debug>Execute>Condicional Break, se despliega un cuadro de dilogo como el que se muestra en la Figura 48. Se puede ejecutar parte del programa de forma automatizada. La ejecucin comienza al pulsar el botn de Start y se ejecuta hasta que se de la condicin de parada o se active el botn de Halt del cuadro de dilogo.
Veamos el significado de cada uno de los campos de este cuadro de dilogo: Conditions: (Condiciones): el MPLAB se detendr en un Break Point si en el cuadro de dilogo se activaron alguna de las siguientes condiciones:
MPLAB
Capitulo 2 Pgina 7
Halt: Se ejecuta el programa hasta que se active el botn Halt en el cuadro de dilogo de Conditional Break o se d la condicin de Parada.
Multiple Cycles: Al activar esta opcin, se activa el botn Break Setting que hasta este instante estaba deshabilitado. Cuando se pulsa este botn aparece el cuadro de dilogo de la Figura 49, en el que se puede indicar el numero de veces que queremos que se repita una instruccin o la condicin que queremos que cumpla el Break Point. Se detiene la ejecucin despus de que el microcontrolador ejecute el nmero especificado de ciclos.
Logic Condition satisfied: Se detiene la ejecucin cuando se cumple una Condicin Lgica
Trace Data: La Traza de Datos permite rastrear el valor de los registros en el cuadro de dilogo de los puntos de ruptura condicionales. Single Cycle: El modo de Ciclo nico del MPLAB ejecuta las instrucciones del microcontrolador hasta que se cumple la condicin de parada. Multiple Cycles En el modo de Ciclos Mltiples se cumple que: Conditional Break ejecuta las instrucciones en tiempo real (en el emulador), el usuario selecciona los puntos de parada, se verifica la condicin especificada y el microcontrolador contina ejecutando las instrucciones hasta que encuentre la condicin especificada.
MPLAB
Capitulo 2 Pgina 8
Los valores que deben tomar los registros para que se produzca el Break point se especifican en el cuadro de dilogo de Conditional Break. Para comprobar todo lo dicho hasta el momento vamos a simular el funcionamiento del
programa Pendulo.asm, el programa consiste en la realizacin de una secuencia de datos en el PortB que simula el movimiento de un pndulo de diodos LEDs, adems se puede comprobar el funcionamiento de programa utilizando el mdulo 01 y 02 que han sido publicados en las Revistas nmeros 162 y 163 o bien se puede montar sobre una placa de insercin rpida el circuito de la Figura 51.
;*********************************************************************************** ; Programa Pendulo.asm Fecha : 7 - Enero - 98 ; Este programa genera una secuencia de Led que simula el movimiento de ; un pndulo de los diodos LED conectados al PORTB ; Revisin : 0.0 Programa para PIC16F84 ; Velocidad del Reloj: 4 MHz Reloj Instruccin: 1 MHz = 1 uS ; Perro Guardin: deshabilitado Tipo de Reloj: XT ; Proteccin del cdigo: OFF ;************************************************************************************ ;******************************IGUALDADES ***************************************** ; ; ********** Igualdades que designa los destinos ************************************ w EQU 0 ;El resultado se guarda en w f EQU 1 ;El resultado se guarda en el registro ;*****************Igualdades que designan los registros SFR************************** LIST p=16F84 ;Tipo de procesador PORTA EQU 05h ;PortA PORTB EQU 06h ;PortB TRISA EQU 05h ;Registro Direccionamiento PortA TRISB EQU 06h ;Registro Direccionamiento PortB STATUS EQU 03h ;Registro Status RP0 EQU 05h ;Bit RP0 del registro de STATUS C EQU 00h ;Bit Flag C del registro de STATUS ;*********************** Igualdades de registros auxiliares************************ CONTA1 EQU 0Ch ;Registro utilizado en la temporizacin CONTA2 EQU 0Dh ;Registro utilizado en el temporizacin ;***********************Cdigo en Reset ************************************** ORG 00h ;Direccin del vector de Reset goto INICIO ;Comienza el programa despus ;del vector de interrupcin ORG 05h ;Una posicin detrs vector de Interrupcin ;************************* Seccin Inicializa ********************************** INICIO bsf STATUS,RP0 ;Selecciona la pgina 1 de la memoria poniendo ;a 1 el bit RPO por que el registro TRISB esta ;en la pgina 1 ;Coloca la Puerto B como salida ;borrando TRIS B ;Vuelve a la pgina 0 ;Apaga los LEDs borrando la PortB ;Inicializa CONTA1 ;Inicializa CONTA2
MPLAB
Capitulo 2 Pgina 9
Pendulo.asm
Tempo
01-->PORTB 0 --> C
CONTA1-1-->CONTA1
TEMPO NO
CONTA1=0?
SI
CONTA2-1-->CONTA2
PB7=0? NO SI
0-->C
TEMPO
PB0=0? SI NO
MPLAB
Capitulo 2 Pgina 11
VCC=5V
R9 10K
R10 10K
R11 10K
R12 10K
R13 10K
RA2 RA3
RA4
IC1 R15 100 S1 RESET 1 2 3 4 5 6 7 8 9 RA2 RA1 RA3 RA0 RA4/T0CKI OSC1/CLKIN MCLR OSC2/CLKOUT Vss Vdd RB0/INT RB7 RB1 RB6 RB2 RB5 RB3 RB4 18 17 16 15 14 13 12 11 10 C1
4 Mhz Cristal
22pF C2
16F84
22pF
R1 330
R2 330
R3 330
R4 330
R5 330
R6 330
R6 330
R7 330
D?
D?
D?
D?
D?
D?
D?
D?
Figura 51.- Circuito para la ejecucin de programas con los microcontroladores PIC16F84 y 16C84
En primer lugar comentaremos que en el programa Pendulo.asm adems de las instrucciones propias del lenguaje ensamblador de los microcontroladores PIC presenta una serie de Directivas propias del MPLAB y que permiten mejorar la escritura de los programas. A lo largo de los comentarios que haremos sobre los programas que se presentan en esta serie de artculos iremos describiendo lo que hace cada una de estas Directivas.
MPLAB
Capitulo 2 Pgina 12
Directiva ORG : Sintaxis: [<etiqueta> ORG <expr> Descripcin: Esta directiva especificada en <expr> la direccin de memoria a partir de la que se colocar el cdigo generado. Si se especifica una <etiqueta> se le da el valor de <exp>. Si no hay ningn ORG especificado, la generacin del cdigo comienza en la direccin cero. Directiva EQU Define una constante para el ensamblador Sintaxis: <etiqueta> Descripcin: Esta directiva permite asignar el valor de <expr> a un identificador <etiqueta>. El resultado puede ser el resultado de una expresin compuesta por otros identificadores y tan compleja como se desee. Generalmente, el identificador es un nombre que describe el valor de manera ms significativa para el programador. Suele utilizarse para definir constantes y direcciones de memoria. As, es ms fcil recordar SEG_POR_HORA que recordar el valor 3600 o en el caso de una direccin de memoria TRISA que 0x05. Directiva END Sintaxis: END Descripcin: Esta directiva indica el final del programa y es obligatoria. Si se detecta el fin de fichero y no se ha encontrado la directiva END se produce error. Todas las lneas posteriores a la lnea en la que se encuentra esta directiva, se ignoran y no se ensamblan. Directiva LIST Sintaxis: LIST [<lis_option>,,<lis_option> Descripcin: Esta directiva es nica, es decir, solo puede utilizarse una vez en cada programa y tiene efecto solo sobre el archivo de extensin *.lst , que es un fichero listable. Adems puede ir EQU <expr>
MPLAB
Capitulo 2 Pgina 13
acompaada de las siguientes opciones, que controlan la estructura del proceso de ensamblado o del archivo *.lst:
Opcin b=nnn c=nnn f=<format> Por defecto 8 132 INHX8M Espacios de tabulacin Fija la anchura de las columnas Fija el fichero hexadecimal de salida . <format> puede ser INHX8M, o INHX8S. Free Fixed Mm=on/off n=nnn P=<tipe> R=<radix> St=ON/OFF t=ON/OFF w=0|1|2 x=ON/OFF FIXED FIXED On 60 Ningn tipo hex On Off 0 On Usa el analizador de formato libre. Suministra la compatibilidad hacia atrs Usa el analizador de formato fijo Imprime el mapa de memoria en un fichero tipo listado. Fija las lneas por pgina. Fija el tipo de procesador; por ejemplo , PIC16F84 Pone por defecto el RADIX: hex, dec, oct Imprime la tabla de smbolos en un fichero tipo listado Corta las lneas de listado (oculta ) Fija el nivel de mensaje. Ver ERRORLEVEL (nivel de error) Activa o desactiva la expansin de macro INHX32, Descripcin
Directiva #INCLUDE Sintaxis: INCLUDE <<include_file>> INCLUDE <include_file> Descripcin: El archivo especificado se lee en como cdigo fuente. El efecto es igual que si el texto entero del archivo INCLUDE se pusiera aqu. Al final del archivo, el cdigo fuente al ensamblar asumir el archivo fuente original. Se permiten seis niveles de anidamiento. El < include_file> puede escribirse entre comillas o entre los smbolos de mayor que y menor que (< >). Si se especifica totalmente el camino del fichero include, slo se buscar en dicho. Si no se indica camino, el orden de la bsqueda es: el directorio activo actual, el directorio de archivo fuente, el directorio ejecutable de MPASM. Ejemplo INCLUDE <p16f84.inc> INCLUDE p16f84.inc INCLUDE c:\sys\system.inc INCLUDE <regs.h> ;define el archivo donde estn definidos todos los ; registros del PIC16F84 ; tambin se puede definir de esta forma ; define system con su camino ;define regs.h
MPLAB
Capitulo 2 Pgina 14
La directiva INCLUDE no se utiliza en este programa, pero si en los siguiente, para comprobar como acta, se recomienda sustituir las lneas comprendidas entre los asteriscos que indican las Igualdades que designa los destinos y las Igualdades que designan los registros SFR por la lnea INCLUDE P16F84.INC y volver a ensamblar el programa, comprobando que no se produce ningn error, para ver este fichero podemos buscarlo en el MPLAB activado File>Open , lo que har que aparezca el cuadro de dilogo de la Figura 52, sobre el seleccionamos la carpeta C:\Archiv~1\MPLAB y en Mostrar archivos del tipo: *.h y *.inc. Por ltimo, seleccionamos el archivo p16f84.inc. Estas acciones abrirn el archivo que hemos insertado mediante la directiva INCLUDE, y como puede verse presenta las definiciones de todos los registros y bit que componen estos.
En primer lugar creamos un nuevo proyecto que llamaremos Pendulo.pjt. Una vez que hayamos escrito el cdigo del programa ser necesario ensamblarlo y compilarlo. Si se ha cometido algn error en la escritura en MPLAB lo indicar. Si as fuera, bastar con hacer doble clip sobre la lnea que muestra el error para que nos lleve directamente a la lnea de cdigo donde lo hemos cometido. Seguidamente abrimos en el escritorio las siguientes ventanas: La del programa ensamblado Fille>Open>pendulo.asm La de los registros especiales Windows>Special Function Registers.o activando el icono
.
MPLAB
Capitulo 2 Pgina 15
Ahora utilizando los Break Points podemos medir por ejemplo el tiempo que tarda en ejecutarse la subrutina TEMPO, para ello ponemos un Break Point en la primera lnea de la subrutina TEMPO clrf CONTA1, posicionando el ratn sobre ella, pulsando el botn de la derecha y seleccionando la opcin Break Point, lo mismo hacemos sobre la instruccin Return, unas lneas mas abajo. Seguidamente pasamos a simular el funcionamiento del programa, para ello hacemos primero un Reset y despus seleccionamos Debug>Rum>Rum, y cuando llegue al programa encuentre el primer Breack Point se parar, ahora ponemos a Zero el reloj del sistema Stop Watch y volvemos a ejecutar el programa con Debug>Rum>Rum. Esta opcin har que el programa corra sin refrescar el display, pero veremos como el contador de ciclos del sistema se va incrementando, al llegar al siguiente Break Point, la simulacin se detendr y el reloj indicar el tiempo que ha tardado en ejecutarse el programa, que en este caso es de 197,12 ms o 197.121 ciclos de reloj. Ver la Figura 53.
MPLAB
Capitulo 2 Pgina 16
MPLAB
Capitulo 2 Pgina 17
Como hemos podido comprobar el tiempo que el MPLAB ha tardado en simula la temporizacin es muy largo, una vez que hemos comprobado esto, podemos simular el funcionamiento del programa pero disminuyendo el tiempo de la subrutina TEMPO. Para ello, despus de la etiqueta TEMPO ponemos directamente la instruccin return y volvemos a ensamblar el programa, esto provocar que cada vez que saltamos a TEMPO en el siguiente ciclo mquina se ejecute la instruccin de retorno de subrutina y siga ejecutando el programa principal. Manejaremos ahora los Break condicionales, se trata de hacer que la simulacin se detenga cuando el PortB tenga el valor binario 0001000 = 10 h y llegue a la etiqueta TEMPO, para ello seleccionamos Debug>Execute>Conditional Break y se abre un cuadro de dilogo como el de la Figura 48, en primer lugar seleccionamos las opciones Multiple Cycles y Update Display de la parte superior y en la ventana de condiciones buscaremos la de igualdad. Despus buscaremos en la de registros, el registro PORTB y ponemos el valor deseamos para l, en este caso 0x10. Seguidamente activamos el switch de Trace Data, buscamos el registro PORTB y pulsamos sobre Add. De esta forma hemos elegido el registro que deseamos ir viendo en la ventana segn vaya evolucionando la ejecucin del programa. Nos falta fijar el punto donde queremos que el programa se pare cuando el registro PORTB llegue al valor 0x10, para lo cual pulsamos el botn de Break Settings. La ventana que aparece es la de la Figura 49 que es la correspondiente a Break Point Settings, en ella buscamos la etiqueta TEMPO en Start y hacemos lo mismo en el campo End. Seguidamente pulsamos sobre para habilitar los break points y cerraremos esta ventana pulsado el botn de Close. Para iniciar la ejecucin activamos el botn de Start, y podemos ver como aparecen los distintos valores que toma el registro PORTB hasta que llega al valor 0x10 que se detiene. En la Figura 54, se presenta la secuencia de pantallas que se acaban de describir.
MPLAB
Capitulo 2 Pgina 18
2.3.- Simulator Stimulus La Funcin de simulacin de estmulos simula la generacin de seales de entrada en las patillas del microcontrolador. Los cuales se pueden poner a nivel alto o bajo, adems de inyectar los valores directamente en los registros. Hay cuatro modos de generar los estmulos tal y como se aprecia en la Figura 55 y cuyas acciones de forma abreviada son las siguientes:
Figura 55.- Cuadro de dilogo con las opciones de simulacin de seales de entrada.
MPLAB
Capitulo 2 Pgina 19
Asynchronous stimulus (Estmulo Asncrono): Abre un cuadro de dilogo interactivo para controlar las seales de entrada en los pines de entrada del microcontrolador. Stimulus Pin File (Archivo de estmulos en los pines): Mediante un archivo del texto se describen las seales de entrada en los pines. Stimulus Register File (Archivo de Registro de Estmulos): Se usa el contenido de un archivo de texto para poner directamente a uno o cero cada uno de los 8 bits de un registro.
Clock Stimulus: (Seales de reloj). Genera una seal cuadrada programable. Veamos las opciones que presentan cada una de los modos de generar estmulos.
2.3.1.-Debug>Simulator Estimulus>Asynchronous Stimulus: Al activar esta opcin emerge un cuadro como el de la Figura 56 en el que aparecen doce botones que son el nmero de lneas que tienen los dos puertos del 16F84, es decir, las 8 lneas del PORTB y las 5 lneas del PORTA.
Si activamos, con el botn de la derecha del ratn, cualquiera de los botones de estmulos, por ejemplo Stim 1(P), aparece una ventana como la de la Figura 57.
Seguidamente si seleccionamos Assign Pin.. aparece un men como el de la Figura 58 en el que hay un listado con de todos los pines de entrada del microcontrolador.
MPLAB
Capitulo 2 Pgina 20
Realizando los pasos anteriores se pueden asignar el resto de los pines. La siguiente accin ser indicar al simulador el tipo de seal de entrada que vamos a producir cada vez que se pulse en el botn correspondiente. Para ello en el men de la Figura 57 se selecciona cualquiera de las siguientes posibilidades: Pulse : un solo impulso Low : un nivel bajo High :un nivel alto Toggle :cada vez que se pulsa cambia de estado y permanece en ese valor hasta que se vuelve a pulsar, entonces genera una seal contraria, es decir si tenia +5V pasa a 0V y viceversa. Para comprobar lo dicho hasta este momento, proponemos un nuevo programa que consiste en leer el valor de las entradas del PORTA y mostrar dicho valor en el PORTB. El programa en lenguaje ensamblador es el siguiente. Como en el caso anterior puede ejecutarse utilizando los mdulo 01 y 02 o bien utilizando el circuito de la Figura 51.
MPLAB
Capitulo 2 Pgina 21
;************************************************************************************* ; Programa PortA_B.ASM Fecha : 16 - Noviembre - 99 ; Este programa lee el estado de los 5 conmutadores de RA4 - RA0 y refleja ; el nivel lgico de los mismos sobre los leds RB4-RB0 conectados a la Port B ; Revisin : 0.0 ; Velocidad del Reloj: 4 MHz ; Perro Guardin: deshabilitado ; Proteccin del cdigo: OFF ;************************************************************************************** List p=16F84 ;Tipo de procesador ;Definiciones de registros internos ;Vector de Reset Programa para PIC16C84 y PIC16F84 Reloj Instruccin: 1 MHz = 1 S Tipo de Reloj : XT
include "P16F84.INC" ORG goto ORG Inicio clrf bsf clrf 0x00 Inicio 0x05 PORTB STATUS,RP0 TRISB
;Salva el vector de interrupcin ;Borra los latch de salida ;Selecciona banco 1 ;El PortB se configura como salida
movlw b'00011111' movwf TRISA bcf Bucle movf STATUS,RP0 PORTA,W ;El PortA se configura como entrada ;Selecciona el banco 0 ;Leer las entradas RA0-RA4 ;Reflejar en las salidas ;Bucle sin fin ;Fin del programa fuente
En primer lugar crearemos un nuevo proyecto como ya se ha descrito en esta publicacin, en este caso lo llamaremos PortA_B.pjt. Una vez que hayamos escrito el cdigo del programa ser necesario ensamblarlo y compilarlo. Seguidamente seleccionamos la opcin Debug>Simulator Estimulus>Asynchronous Stimulus donde asignaremos los pines RA0 (T), RA1(T),RA2(T), RA3(T) y RA4(T) a los cinco primeros Stim y el tipo de seal Toggle y habilitamos la ventana de los registros SFR, tal y como se muestra en la Figura 59.
MPLAB
Capitulo 2 Pgina 22
MPLAB
Capitulo 2 Pgina 23
Si ahora seleccionamos la opcin Debug>Run>Animate o la combinacin de teclas [Control]+[F9], el programa se ejecutar y veremos como se van actualizando los registros del microcontrolador. Si se pulsa el botn que hemos asignado como RA0 se ver como primero cambia el contenido del PortA, independientemente de la instruccin que se est ejecutando (si no se puede apreciar en el modo Animate, hacerlo en el modo Step). Cuando se ejecuta la instruccin movf PORTA,W el registro W toma el valor 00000001 y al ejecutarse la instruccin movwf PORTB se puede comprobar que el PortB toma el valor 00000001 que coincide con el valor que tiene en ese momento el PortA. Si se activa cualquiera de las otras lneas de entrada se aprecia que las salidas del PortB van cambiando tambin de acuerdo con el valor de las entradas del PortA.
2.3.2.- Debug>Simulator Stimulus>Pin Stimulus: Un archivo de estmulo de pines consiste en columnas de unos y ceros de entrada que sern aplicados a los pines correspondientes cuando la columna del Ciclo coincida con el valor en el cronmetro de CICLO de la simulacin del programa. Para comprobar como funciona de esta opcin del simulador activar File>New File y teclear el siguiente texto, no hace falta escribir el texto que hay despus del ; y ! ya que estos signos delimitan los comentarios.
CYCLE 20 41 52 55 60 65 76 RA1 0 1 0 1 0 1 0 RA0 0 0 1 1 0 0 1
; aplica 1 en el bit1 del PortA ; aplica 1 en el bit 0 del Port A y un cero en el bit 0 del PortA
Utilizar la opcin File>Save As... para guardar el archivo con el nombre PortA_B.sti. Despus de la palabra CICLO en la primera lnea del archivo se escriben los nombres con que se han designado los pines del microcontrolador que recibirn los estmulos de entrada, niveles altos y bajos. En este el ejemplo hemos fijado RA1 y RA0 como dos entradas del PortA. En este archivo, la segunda columna contiene valores que se aplicarn a RA1 (bit 1 del PORTA) y en la tercera columna los valores para RB0 (bit 0 del PORTB). stos nombres deben coincidir con los que se han fijado para el microcontrolador que se va a simular. Se
MPLAB
Capitulo 2 Pgina 24
puede ver un listado de todos los pines en el men desplegable que aparece en la Figura 58 para los estmulos asncronos. Para realizar la simulacin es aconsejable visualizar tambin el reloj que se obtiene activando Windows>Stopwatch, de manera que, adems del reloj, podamos visualizar en la misma pantalla el archivo de estmulos, el programa escrito en ensamblador y los FSR tal y como se puede ver en la Figura 61. Antes de realizar la simulacin deberemos de activar la opcin Debug>Simulator Stimulus>Pin Stimulus>Enable, el programa presenta entonces un cuadro de dilogo como el de la Figura 60 en el que debemos de seleccionar el archivo de estmulos *.sti, en nuestro caso PortA_B.sti
Durante la simulacin, cada vez que se pone a cero el reloj el archivo de estmulos tambin se reinicializa comenzando desde el primer ciclo de reloj.
MPLAB
Capitulo 2 Pgina 25
Figura 61.-Pantalla de simulacin con las ventanas del programa en ensamblador, el archivo de impulsos, SFR y reloj del sistema
MPLAB
Capitulo 2 Pgina 26
2.3.3.- Debug>Simulator Stimulus>Register Stimulus: Un archivo de estmulo de registros consiste en una sola columna de valores que se enviarn a un registro cuando la direccin de memoria de programa alcance la situacin del cuadro de dilogo del Registro de Estmulos. Esto es til para simular el funcionamiento por ejemplo de un convertidor A/D. Para crear este archivo abrir un nuevo archivo con File>New File y teclear el siguiente listado de valores: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 00
Salvar el archivo con File>Save as... y nombre de PortA_B.reg. Este archivo se usar para inyectar estos valores secuencialmente en un registro. Seguidamente seleccionar la opcin Simulator Stimulus> Register
Stimulus>Enable..., aparece un cuadro de dilogo como el de la Figura 62, en el cual se define el registro en el que queremos que vayan cargndose los datos del fichero PortA_B.reg, por ejemplo la posicin de memoria RAM 0x0d, y cuando queremos que esto ocurra, por ejemplo cada vez que se pase por la posicin de memoria que corresponde con la etiqueta Bucle.
MPLAB
Capitulo 2 Pgina 27
Seguidamente se carga el archivo para lo cual se selecciona el botn de Browse.. , aparezca un cuadro de dilogo como el de la Figura 63, donde seleccionamos el archivo PortA_B.reg.
Para comprobar el funcionamiento de lo dicho hasta el momento 1. Presentar una pantalla en el escritorio del MPLAB en el que se visualicen como se muestra en la Figura 64 las siguientes ventanas: El programa en ensamblador El archivo *.reg Los registros SFR La memoria RAM El reloj
2. Seguidamente activar Debug>Run>Step y ejecutar paso a paso el programa comprobando como el registro 0x0d se va cargando con los valores 0x01, 0x02, 0x03, 0x04,, cada vez que el programa ejecuta la instruccin que se encuentra en la direccin de memoria Bucle.
MPLAB
Capitulo 2 Pgina 28
Figura 64.- Pantalla de simulacin en la que se pueden ver las ventanas del programa en ensamblador, la memoria RAM, los SFR, el reloj y el fichero de estmulos de registros portA_B
MPLAB
Capitulo 2 Pgina 29
2.3.4.- Debug>Simulator Stimulus>Clock Stimulus Clock stimulus genera un tren de impulsos peridico en un determinado pin con un ciclo de trabajo referido a los ciclos de trabajo del microcontrolador. Si se selecciona la opcin Debug>Simulator Stimulus>Clock Stimulus... aparece un cuadro dilogo como el de la Figura 65 donde se pueden introducir varias entradas de estmulos. Si se hace la simulacin en modo Step o en modo Animate usando las de la Figura 65, RA3 estar a nivel alto durante 4 ciclos del reloj, posteriormente estar a nivel bajo durante 6 ciclos del reloj. RA4 estar a nivel alto durante 8 ciclos del reloj y a nivel bajo durante 8 ciclos del reloj. Las dos secuencias se repiten hasta que se termine la ejecucin en el MPLAB o se anule este modo de generar los estmulos de entrada.
Figura 65.- Cuadro de dilogo para introducir trenes de impulsos por las lneas del microcontrolador.
Seguidamente activar el botn de Apply , si ahora se selecciona la ejecucin del programa en modo paso a paso (Step) o en modo continuo (Animate), podemos apreciar como se van introduciendo los impulsos que se han determinado en el cuadro de dilogo de la Figura 65. 2.4.- Center Debug Location La opcin Seleccione Debug > Center Debug Location pone en el centro de la pantalla de depuracin del programa la posicin de memoria que indica el PC . Esta funcin trabaja solo con las Ventanas de: Cdigo de Fuente del programa La de Programa de Memoria La de Absolute Listing.
MPLAB
Capitulo 2 Pgina 30
2.5.- Break Settings Seleccione Select Debug > Break Settings para desplegar un cuadro de dilogo de Breack Point como el de la Figura 66 en el que se pueden definir hasta 16 rangos de nombre para los Breack Point
Point
Despus de introducir en un nombre de Breack Point, la direccin de inicio y la de fin, hacer clic en
]o pulsar botn de Enter para aceptar la definicin del mismo. Esto har
resaltar las lneas comprendida entre las dos posiciones de memoria (la de inicio y la de fin) en rojo, de manera que cuando se est simulando el programa este se pare en dichas lneas. Esta opcin tambin activarse pulsando la tecla [F2].
2.6.- Trace Settings Esta opcin es similar a la anterior pero en este caso, en lugar de Breack Point se activan las direcciones de memoria de Traza que se quiere rastrear posteriormente.
2.7.- Clear All Points Al selecciona Debug > Clear All Points se eliminan todos los Breack Point, trazas y puntos de disparo seleccionados cuando se activa el botn de aparece como el de la Figura 67.
]Yes
MPLAB
Capitulo 2 Pgina 31
2.8.- Clear Program Memory (Ctrl+Shift+F2) Si seleccionamos Debug > Clear Program Memory se limpia la memoria de programa ponindola a 0x3FF. Esta funcin pone todos los bits de memoria de programa a unos, cuando se activa el botn de ]Yes del cuadro de dilogo que aparece como el de la Figura 68
Figura 68.- Cuadro de seleccin de limpiar todas las posiciones de memoria de programa ponindola toda a unos.
2.9.- System Reset (Ctrl+Shift+F3) Seleccionando Debug > System Reset se inicializa el emulador sistema incluido el hardware del emulador de MPLAB-ICE (si est conectado), el software y el microcontrolador. System Reset realiza la misma operacin que cuando se inicializa el MPLAB. Para realizar un Reset (MCLR), seleccionar Debug>Run>Reset.
2.10.- Power-On Reset (Ctrl+Shift+F5) Seleccionando Select Debug > Power-On-Reset se despliegar el cuadro de dilogo PowerOn-Reset de la Figura 69 si se activa el botn Power On Reset aparece una nueva configuracin. Como puede verse la memoria RAM y los registros SFR se cargan con valores
MPLAB
Capitulo 2 Pgina 32
aleatorios, tal y como hara el microcontrolador al realizar un Reset por aplicarle alimentacin. La ventana de la memoria RAM puede presentar por ejemplo el aspecto de la Figura 69.
Adems, si se visualizan los registros especiales de la misma manera que en la Figura 70, se puede comprobar que quedan de acuerdo con la siguiente tabla
Valor del registro 0000h 0001 1XXX ---0 0000 0000 000X 1111 1111 ---1 1111 1111 1111 ---0 X000
MPLAB
Capitulo 2 Pgina 33
Ejercicios Propuestos: Llegado a este punto vamos a proponer una serie de ejercicios para que nos permitirn fijar los conocimientos sobre el funcionamiento del programa MPLAB y la programacin del microcontrolador PIC16F84. Ejercicio 1 (Para simular en el MPLAB).- El siguiente programa realiza la suma de dos nmeros de 16 bits que previamente cargaremos en cuatro registros (posiciones de memoria), NUMEROA_L , NUMEROA_H para el primer sumando y NUMEROB_L , NUMEROB_H para el segundo sumando, dejando el resultado en REAUL_L y REUL_H. En este programa es interesante como se resuelve el problema de no existir en el set de instrucciones la operacin de suma con acarreo. En primer lugar se comprueba si se produce acarreo en la suma de las partes bajas de los nmeros, consultando el flag C del registro de STATUS y si es 1, se incrementa en una unidad el registro W antes sumar la parte alta de los nmeros a sumar. El organigrama del programa es el que se muestra en la Figura 71.
MPLAB
Capitulo 2 Pgina 34
Suma16.asm
NUMEROA_L-->W
NUMEROB_L+W-->W
W --> RESUL_L
NUMEROA_H --> W
SI C=1
NO W+1 --> W
NUMEROB_H --> W
W-->RESUL_H
FIN
MPLAB
Capitulo 2 Pgina 35
;********************************************************************************* ; Programa: Suma16.ASM Fecha: 24 - Abril - 2000 ; Este programa realiza la suma de doble precisin, es decir de operandos de operandos de 16 bits ; cada uno, NUMEROA_L,NUMEROA_H con NUMEROB_L,NUMEROB_H que se ; encuentran en las posiciones de memoria 0x10, 0x11 y 0x12, 0x13 respectivamente y ; el resultado se guarda en la posicin de memoria 0x14, 0x15 que denominamos RESUL_L ; y RESUL_H respectivamente. ; Los datos en estas posiciones se incluirn durante la simulacin del programa ; Revisin : 0.0 Programa para PIC16C84 y PIC16F84 ; Velocidad del Reloj: 4 MHz Reloj Instruccin: 1 MHz = 1 uS ; Perro Guardin: deshabilitado Tipo de Reloj: XT ; Proteccin del cdigo: OFF ;********************************************************************************* List p=16F84 ;Tipo de procesador STATUS C W F NUMEROA_L NUMEROA_H NUMEROB_L NUMEROB_H RESUL_L RESUL_H equ equ equ equ equ equ equ equ equ equ ORG goto ORG INICIO movf addwf movwf movf btfsc addlw addwf movwf sleep END 0x03 0x0 0 1 0x10 0x11 0x12 0x13 0x14 0x15 0x00 INICIO 0x05 NUMEROA_L,W NUMEROB_L,W RESUL_L NUMEROA_H,W STATUS,C 1 NUMEROB_H,W RESUL_H ; Registro de STATUS ; bit de Carry del registro de STATUS
;Define la posicin del numero A (bajo) ;Define la posicin del numero A (alto) ;Define la posicin del numero B (bajo) ;Define la posicin del numero B (alto) ;Define la posicin del resultado (bajo) ;Define la posicin del resultado (alto) ;Vector de Reset
;Salva el vector de interrupcin ;Carga menos peso del numero A ;Suma menos peso del numero B ;Almacena el resultado ;Carga ms peso del numero A ;Hubo acarreo en la suma anterior ? ;Si, suma 1 al acumulador ;Suma ms peso del numero B ;Almacena el resultado ;dormir ;Fin del programa fuente
En este ejercicio si por ejemplo los datos que se introducen el los registros RAM son los siguiente: 0x10 = 1010 1010 = AA h 0X11 = 1010 1010 = AA h 0x12 = 1111 1111 = FF h 0x13 = 0000 0000 = 00 h al simular la suma en el MPLAB, el resultado que se debe obtener es: 0x14 = 1010 1001 = A9h 0x15= 1010 1011 = AB h
MPLAB
Capitulo 2 Pgina 36
Ejercicio 2.- Con este ejercicio se pretende comprobar como el microcontrolador hace comparaciones de datos, utilizando la operacin de resta y el valor que en cada caso toman los flags del registro de STATUS. El programa compara el valor del NUMERO_A con el del NUMERO_B que se introducirn por el usuario, realizando la siguiente operacin dependiendo del resultado de la comparacin: Si NUMERO_A>NUMERO_B entonces REUL = NUMERO_A + NUMERO_B. Si NUMERO_A=NUMERO_B entonces REUL = 00h Si NUMERO_A<NUMERO_B entonces REUL = NUMERO_A - NUMERO_B. El organigrama del programa es el que se muestra en la Figura 72. Recordemos que la instruccin SUBWF f,d realiza la resta en complemento a 2 del contenido del registro f menos el contenido del registro W y deja el resultado en W si d=0 y en el registro f su d=1. Si el resultado es negativo el flag C del registro de STATUS se pone a 0.
Compara.asm
NUMERO_A-->W
W-NUMERO_B-->W
SI Z=1? 00-->RESUL
NO SI C=0? NUMERO_A-->W
NO W+NUMERO_B-->W
W-->RESUL
FIN
MPLAB
Capitulo 2 Pgina 37
List p=16F84 include "P16F84.INC" NUMERO_A NUMERO_B RESUL equ equ equ org goto org INICIO movf subwf btfsc goto btfsc goto movf addwf movwf goto 0x10 0x11 0x12 0x00 INICIO 0x05 NUMERO_B,W NUMERO_A,W STATUS,Z A_IGUAL_B STATUS,C A_MAYOR_B
;Tipo de procesador ;Definiciones de registros internos ;Variable del NUMERO_A ;Variable del NUMERO_B ;Variable para el resultado ;Vector de Reset
;Salva el vector de interrupcin ;Carga el NUMERO_B ;Resta/compara con NUMERO_A ;Son iguales (Z=1)?? ;Si ;No. A MAYOR que B (C=0)?? ;Si
A_MENOR_B
NUMERO_A,W ;No, A es MENOR que B NUMERO_B,W ;Suma A ms B RESUL ;Guarda W en RESUL STOP ;Guarda W en RESUL
A_MAYOR_B movwf RESUL goto STOP A_IGUAL_B STOP clrf sleep END RESUL
;Pone a 0 el resultado ;Poner break point de parada ;Fin del programa fuente
MPLAB
Capitulo 2 Pgina 38
En este ejercicio si por ejemplo los datos que se introducen el los registros RAM son los siguiente: 0x10 = 1010 1010 = AA h 0X11 = 1010 1010 = AA h 0x12 = 1111 1111 = FF h 0x13 = 0000 0000 = 00 h al simular la suma en el MPLAB, el resultado que se debe obtener es: 0x14 = 1010 1001 = A9h 0x15= 1010 1011 = AB h
Ejercicio 3.- Vamos a comprobar ahora como se pueden convertir ahora nmeros binarios a un display de 7 segmentos, para ello usaremos el circuito de la Figura 51, en el que habremos sustituido los diodos LEDs por un display de 7 segmentos del tipo ctodo comn, y que conectaremos de la tal y como se muestra en la Figura 73.
a RB0 b RB1 c RB2 d RB3 e RB4 f RB5 g RB6 Conexin del display al PIC16X84
Figura 73.- Conexin de los segmentos del display de 7-segmentos ctodo comn al PIC16F84
Por lo tanto, los cdigos que habr que escribir para representar los datos en el display sern los que se muestran en la Figura 74
0011 1111 B 3F h
0000 0110 B 06 h
0101 1011 B 5B h
0100 1111 B 4F h
0110 0110 B 66 h
0110 1101 B 6D h
0111 1101 B 7D h
0000 0111 B 07 h
MPLAB
Capitulo 2 Pgina 39
MPLAB
Capitulo 2 Pgina 40
digitos.asm
Lee_Tabla
PORTA-->W
Lee_Tabla
Return
W -->PORTB
MPLAB
Capitulo 2 Pgina 41
;********************************************************************************** ; Programa 7segmen.ASM Fecha : 22 de Mayo de 2000 ; Este programa presenta en un display conectado al PORTB el nmero hexadecimal ; correspondiente al valor binario que tengan los conmutadores conectados a RA3, ; RA2;RA1,RA0, los segmentos del display ctodo comn a, b, c, d, e, f, g estn conectados ; a las lneas PB0, PB1, PB2, PB3, PB4, PB5, PB6 ; Revisin : 1.0 Programa para PIC16C84 y PIC16F84 ; Velocidad del Reloj: 4 MHz Reloj Instruccin: 1 MHz = 1 uS ; Perro Guardin: deshabilitado Tipo de Reloj : XT ; Proteccin del cdigo: OFF ;*********************************************************************************** LIST p=16F84 INCLUDE "P16F84.INC" BANCO0 bcf STATUS,5 BANCO1 ORG goto org LEE_TABLA retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw 0x00 INICIO 0x05 addwf PCL,f b'00111111' b'00000110' b'01011011' b'01001111' b'01100110' b'01101101' b'01111101' b'00000111' b'01111111' b'01100111' b'01110111' b'01111100' b'00111001' b'01011110' b'01111001' b'01110001' bsf STATUS,5 ;Tipo de procesador ;Definiciones de registros internos ;Siempre que escriba BANCO0 se ejecuta ;bcf STATUS,0 ;Siempre que escriba BANCO1 se ejecuta ;bsf STATUS,0 ;Vector de Reset
#DEFINE #DEFINE
;Salva el vector de interrupcin ;retorna 0 ;retorna 1 ;retorna 2 ;retorna 3 ;retorna 4 ;retorna 5 ;retorna 6 ;retorna 7 ;retorna 8 ;retorna 9 ;retorna A ;retorna B ;retorna C ;retorna D ;retorna E ;retorna F
INICIO
BANCO1 clrf TRISB movlw b'11111111' movwf TRISA BANCO0 movf PORTA,w call LEE_TABLA movwf PORTB goto INICIO END
;Seleciona el banco 1 de registros ;Coloca el PORTB como salida ;Coloca el PORTA como entrada ;Selecciona el banco 0 de registros ;Carga el valor de los conmutadores en W ;Sacar dato al diaplay
MPLAB
Capitulo 2 Pgina 42
Directiva #DEFINE Define una Etiqueta de Substitucin de Texto Sintaxis #define <name> [<string>] Descripcin Esta directiva define una cadena de substitucin de texto. Dondequiera que <string> se encuentre en el ensamblador, se sustituir por < string >. Usando la directiva sin < string > genera una definicin de tipo <name> para ser utilizada internamente y puede ser utilizada por la directiva IFDEF. Esta directiva emula el ANSI 'C ' standard como #define. Define smbolos con este mtodo no est disponible para ser usado por el MPLAB. Ejemplo 1 #define BANCO0 bcf status,5 #define BANCO1 bsf status,5 Siempre que a lo largo del programa se escriba BANCO0, se selecciona el banco 0 de registros. De igual modo, siempre que se escriba BANCO1, se selecciona el banco 1 de registos. Ejemplo 2 #define longitud 20 #define control 0x19,7 #define posicion (X,Y,Z) (Y-(2 * Z +X)) . . . test_label dw bsf posicin (1, longitud, 512) control
MPLAB
Capitulo 2 Pgina 43
3.- Option Cuando activamos esta opcin aparece el men desplegable de la Figura 66
3.1.- Development Mode Nos permite cambiar el modo de trabajo del proyecto actual. Si se selecciona Options > Development Mode aparece el cuadro de dilogo de la Figura 77.
Veremos seguidamente cada una de esta opciones. Editor Only : Selecciona solo el Editor, de manera que el MPLAB se convierte en un editor en el que no se pueden editar, ensamblar o activar los modos de funcionamiento del proyecto. MPLAB-SIM Simulator: Selecciona el modo de simulacin software MPLABSIM.
MPLAB
Capitulo 3 Pgina 1
Processor: Selecciona el tipo de microcontrolador que se quiere simular MPLAB-ICE Emulator: Selecciona el modo de trabajo con el emulador MPLABICE (si est conectado), despliega una barra de estados donde se selecciona el puerto de comunicaciones
PICMASTER Emulator: Selecciona el modo de trabajo con el emulador PICMASTER (si est conectado) y despliega una barra de estados donde se eligen los puertos de E/S y dems caractersticas del microcontrolador que se est emulando.
Reset : Al activarlo se reinicializa el hardware del emulador (si est conectado). Cancel: Esta accin cancela la seleccin y sale de este men.
3.2.- Windows Setup Cuando se selecciona esta opcin aparece el men desplegable de la Figura 78
3.2.1.- Save Setup Activando Options > Window Setup > Save Setup se guarda la configuracin actual de la ventana del escritorio, de manera que cada vez que se abra un proyecto este aparece en pantalla con todas las ventanas que tenamos abiertas en el momento de salvar la configuracin. Por defecto se guarda en un archivo con extensin *.CFG. 3.2.1.- Load Setup La opcin Options>Windows Setup>Load Setup carga un archivo de configuracin previamente guardado mediante Options>Window Setup>Save Setup . Al activar esta opcin aparece un cuadro de dilogo como el de la Figura 79 en el que se puede seleccionar la configuracin deseada.
MPLAB
Capitulo 3 Pgina 2
Figura 79.- Cuadro de dilogo para seleccionar una configuracin previamente guardada.
3.2.2.- Defaut Configuration: Cargar la configuracin predefinida seleccionndola de cualquiera de las siguientes formas: Options>Windowa Setup>Default Configuration Options>Eviroment Setup
3.3.- Default Editor Modes el editor del MPLAB tiene asociado un juego de Modos que pueden verse en el cuadro de la Figura 80 (que aparece al activarse esta opcin) en el que se pueden cambiar los modos de trabajo del editor.
Los posibles modos de trabajo del editor que se ven en este cuadro de opciones son: Auto Indeting: Al activar este modo, el Editor del MPLAB hace automticamente las sangras de las nuevas lneas para emparejarlas con el sangrado de la lnea anterior.
MPLAB
Capitulo 3 Pgina 3
Lenguage: Este modo indica al editor del MPLAB el lenguaje que va a utilizar. Actualmente, solo se puede seleccionar lenguaje C. Overwrite Si este modo esta activo, el editor del MPLAB reemplaza los caracteres marcados debajo del cursor cuando se teclee encima. Page Headers: Con este modo activado el editor del MPLAB empieza cada impresin de pgina con el ttulo que muestra el nombre del archivo, la fecha , hora y el nmero de la pgina.
Soft Tabs: Si se selecciona este modo, el Editor de MPLAB inserta un nmero conveniente de espacios para poner el cursor en la nueva posicin al pulsar Tab. Por otra parte, el editor de MPLAB inserta un solo carcter cuando se pulsa el tabulador.
Show Line Numbers: Si se activa este modo el Editor del MPLAB pone el nmero de cada lnea en la ventana. Strip Trailing Spaces: Si est activado, el editor del MPLAB quita cualquiera espacio, caracteres o tabuladores de una lnea cuando se pulsa Enter Tab Size: (Tamao de la etiqueta) Con esta opcin se define el ancho de las etiquetas. Wrap Column Con esta opcin se define el nmero de caracteres por columnas que de forma automtica tendr todo el texto Wrap Enabled Si este modo est activo, el editor del MPLAB aplica el formato que posea el texto actual. Wrap Log Lines. Si este modo est activo, el Editor de MPLAB marca las lneas que no entran en la pgina al imprimir. El MPLAB al imprimir trunca las lneas que son muy largas.
3.4.- Curren Editor Modes. Esta opcin es similar a la anterior pero referida al proyecto que se est editando en ese momento no referido a una configuracin del sistema como el anterior. 3.5.- Key Mappings... Al activar esta opcin aparece un cuadro de dilogo como el de la Figura 81 en el que se puede ver como pulsando una tecla o combinacin de algunas, se pueden seleccionar las distintas funciones del MPLAB.
MPLAB
Capitulo 3 Pgina 4
Adems en esta pantalla aparecen las funciones que ya estn activadas y cual es la combinacin de teclas que lo hacen. 3.6.- Evironment Setup (Ctrl+F7): Al activar Options>Eviroment Setup aparece un cuadro de dilogo como el de la Figura 82, en el que se pueden cambiar en pantalla las fuentes, las barras de herramientas y la anchura de las variables y etiquetas.
Screen Font : (Caracteres en pantalla) permite seleccionar el tipo de caracteres a utilizar en el MPLAB. Se puede activar el modo ANSI, OEM, System u Other , por defecto viene activado el modo System.
MPLAB
Capitulo 3 Pgina 5
Toolbar :Esta opcin permite seleccionar el lugar de la pantalla donde aparecern los botones de la barra de herramientas: arriba (Top), Abajo (Bottom) a la izquierda (Left) a la derecha (Right) o en modo flotante (Float). La opcin Enable habilita las barras de herramientas, si se desactiva desaparecen.
Toolbar Setup :Al activar esta opcin aparece un cuadro de dilogo como el de la Figura 83 en el que se pueden redefinir los botones de las barras de herramientas.
Seguidamente comentaremos el modo de funcionamiento de cada uno de los campos. Toolbar: Se pueden seleccionar una de las cuatro barras de herramientas que vienen definidas: Edit, Debug, Project y User Toolbar. Button: Selecciona la localizacin del icono de la barra de herramientas de entre las 16 posibles ( de la 1 a la 17). Operation: Selecciona la funcin que realizar el MPLAB cuando se active este botn. En este campo aparece un men desplegable con la lista de todas las funciones disponibles. Icon : Selecciona un icono para realizar la funcin designada. Disable Button : Desactiva la funcin del botn que se designe en la barra de herramientas. Gap Before Button : Inserta un pequeo hueco entre botones. Button Size : Cambia el tamao del botn del icono. Las opciones que tiene son: Automtico (Automatic), Grande (Large), Mediano (Medium) o Pequeo (Small)
MPLAB Fernando Remiro Domnguez Capitulo 3 Pgina 6
Ok: Confirma la barra de herramientas tal y como se han designado en el cuadro de dilogo. Cancel : Cancela los cambios hechos en el cuadro de dilogo. Glbal Switches: Los interruptores globales permiten activar las siguientes opciones de usuario: Status Bar Enable: Habilita o elimina el que aparezca la barra de estados en la parte inferior de la pantalla. Clear Memory Download: Este interruptor activa el borrado de memoria antes de que el MPLAB enve datos al emulador. Es decir pone todos los bit de memoria a 1. Clear Break Points on Dowload: Elimina todos los Break Points , trazas, disparos y pasos de cuenta antes de transmitirlos al emulador. Load Default Configuration :El MPLAB carga por defecto las opciones seleccionadas por el usuario. Para cambiar el modo predefinido, abrir las ventanas que se deseen visualizar y activar Options>Windows Setup>Save Setup y seguidamente Yes. El MPLAB puede presentar cualquier ventana disponible y la configuracin del usuario se guarda en el archivo MPLAB.CGF. Global Break Enable: Cuando se selecciona es opcin, habilita todos los break points, en caso contrario no se habilitan. El estado de Global Break Enable se indica tambin en la barra de estado, con Bk on, indica que est activado y con Bk off que se encuentra desconectado. Track Soucre Code: Cuando se activa esta opcin, MPLAB actualiza la lnea actual del cdigo fuente al ejecutar el programa en modo paso a paso.Se puede desactivar esta opcin si se dispone de un archivo *.HEX pero no se puede con un archivo del tipo *.COD. Disable Stak Overflow Warning: Deshabilita el aviso de que la Pila est desbordada. Intellimouse Wheel Scrolls: Si se dispone de un ratn inteligente, con esta opcin se puede seleccionar la porcin de pgina en la que se mueve.
MPLAB
Capitulo 3 Pgina 7
Build Timeout : Si se activa esta opcin, se puede fijar el tiempo mximo permitido para que un programa se ensamble Si tarda ms tiempo del fijado, el ensamblado se interrumpe y no se genera el archivo hexadecimal. Symbol Display Width Esta opcin permite especificar cuntos caracteres asigna el MPLAB para representar la informacin simblica. Register Variables Permite seleccionar una anchura de 6 a 32 caracteres para las variables Address Labels Permite seleccionar una anchura de 6 a 32 caracteres para las etiquetas. 3.7.- Colors : Si se selecciona Options>Colors , aparece un cuadro de dilogo como el que se muestra en la Figura 84 que permite cambiar los colores asignados a la visualizacin de datos.
Para cambiar el color, se selecciona el texto del parmetro que se desee cambiar y despus se pulsa el botn del ratn sobre el nuevo color elegido. 3.8.- Processor Setup Permite configurar el modo de trabajo del microprocesador en el entorno del simulador. 3.8.1.-Hardware: Activando Optins>Processor Setup>Hardware se despliega un cuadro de dilogo como el que se muestra en la Figura 85 en el que se pueden activar las distintas opciones de trabajo del microprocesador que se est simulando.
MPLAB
Capitulo 3 Pgina 8
Figura 85.- Cuadro de dilogo para seleccionar la simulacin del modo de trabajo del microcontrolador.
Seguidamente describimos las distintas opciones de este cuadro de dilogo. Development Mode: Presenta el modo de trabajo actual. Para cambiar de modo de trabajo seleccionar Options>Development Mode. Processor: Indica el microcontrolador o microprocesador seleccionado para la simulacin. Para cambiar de procesador hay que seleccionar Options>Development Mode. Oscilllator: Selecciona el tipo de oscilador para trabajar con un emulador, se puede seleccionar entre: RC: Red RC LP: Resonador cermico de baja potencia. XT: Cristal/Resonador HF: Cristal o resonador de alta velocidad. Watch Dog Timer : Habilita/Inhibe el reloj del Watch Dog None:: Desactiva el reloj del Watch Dog WDT Chip Reset Enable: Resetea el procesador cuando se desborda el Watch Dog. WDT Break Enable: El procesador se para cuando se produce el desbordamiento del Watch Dog. El WDT Prescale : Indica el valor del preescaler del WDT si est seleccionado. Freze on Halt :Congela la pantalla. El simulador no soporta esta opcin. Stack Overflow Break Enable: Habilita la parada del procesador si la pila se desborda o se vaca.
MPLAB Fernando Remiro Domnguez Capitulo 3 Pgina 9
Disable Long Writes: Habilita las escrituras largas MCLR Enable: Habilita un reset del sistema (limpieza maestra). Processor Mode: Para los dispositivos de PIC17CXXX, seleccione el modo del procesador. Para ms informacin consultar los manuales de cada uno de ellos Microcontroller: Accede solamente a la memoria interna. Microprocessor: Accede solamente a la memoria externa Extended Microcontroller: Accede tanto a la memoria externa como a la interna.
Off-Chip Memory: Para los dispositivos de PIC17CXXX, selecciona la memoria de fuera del chip por la de la Target Board o se sustituye por el emulador. Memory Mapped Peripheral Range: Para los dispositivos PIC17CXXX, habilita el rango de la memoria de traza, especifica el inicio y el fin de la direccin del byte ms alto. Processor Power: Indica cuando el sistema se alimenta desde el emulador o desde el sistema designado. Message Box :Cuadro de dilogos para informacin especfica del modo. Por ejemplo para el MPLAB-ICE, se indica el estado de bajo consumo. OK :Acepta las entradas hechas Cancel: Cierra el cuadro de dilogo sin hacer cambios. 3.8.2.-Processor Clock: Al activar esta opcin aparece el cuadro de dilogo de la Figura 86 en el que se puede seleccionar la frecuencia de trabajo del PIC.
MPLAB
Capitulo 3 Pgina 10
4.- Tools Cuando se activa esta opcin aparece el men desplegable de la Figura 87.
4.1.- DOS Command to Window : Esta opcin permite ejecutar un programa de DOS, como puede ser por ejemplo el programa del programador del microcontrolador del PIC. Al ejecutar esta opcin aparece el cuadro de dilogo de la Figura 88
En el que se escribe el comando del DOS o el programa que se quiere ejecutar, indicando el directorio donde se encuentra, como por ejemplo, C:\micros\16c84\picmetr.exe, que en nuestro caso es el programa que utiliza nuestro programador para PIC. Adems se puede indicar el directorio donde se encuentran los archivos que utiliza nuestro programa, como por ejemplo C:\trabajo. Cuando se active de nuevo este comando, el MPLAB guarda el ltimo comando que hemos escrito y el nombre del directorio activo. Nota.- No se pueden ejecutar de esta manera comando de Windows. El cuadro de dilogo de la Figura 88 permite varias opciones:
MPLAB
Capitulo 4 Pgina 1
Beep When Done: activa un pitido cuado se termina de ejecutar el programa de DOS y se vuelve al MPLAB. Minimize Editor: Hace que el Editor del MPLAB se convierta en un icono antes de ejecutar el programa de DOS. Save Changed Files: Hace que el editor compruebe si cualquiera de los ficheros que se estn editando han cambiado y da la oportunidad de guardar los cambios antes de ejecutar el programa de DOS. Si se activa esta opcin todos los cambios se salvarn. Reuse Output Window: Esta opcin presenta en una pantalla del editor de MPLAB los parmetros de salida del ultimo programa ejecutado en DOS. Si la opcin est marcada, slo muestra el resultado del ltimo programa ejecutado; si no, cada vez que se ejecuta un programa de DOS su resultado sale en una nueva pantalla como la de la Figura 89.
Figura 79.- Ventana del editor con el resultado del ltimo programa DOS ejecutado.
Show End Of Output: Habilitando esta opcin el cursor del editor aparece en la ltima lnea de la pantalla que se muestra en la Figura 89. 4.2.- Repeat DOS Command to Window: La opcin Tools > Repeat DOS Command to Window, repite el ltimo comando de DOS que se ha ejecutado. Si no se ha ejecutado previamente ningn comando o programa de DOS, al activar esta opcin aparece el mismo cuadro de la Figura 88. Tambin se ejecuta este comando con las teclas [Ctrl+F11]. 4.3.- Verify Emulator: Cuando se est utilizando un emulador con el MPLAB, se puede comprobar si est funcionando correctamente con este comando. Los cuadros de dilogo son distintas dependiendo del emulador que se est utilizando. 4.4.- Configure Emulator: Cuando se est utilizando un emulador con el MPLAB, se puede configurar con esta opcin. Las cajas de dilogo como en la opcin anterior dependen del emulador que se est utilizando.
MPLAB Fernando Remiro Domnguez Capitulo 4 Pgina 2
5.- File Menu: Pulsando con el ratn en esta opcin de la Barra de men apare el men desplegable de la Figura 80.
Algunas de las opciones del men de archivos (File) son las utilizadas en Windows: New (Nuevo) Open (Abrir..) View (Ver..) Save (Guardar) Save As..(Guardar como..) Close (Cerrar) Close All (Cerrar todo)
Para ms informacin sobre estas opciones mirar el manual de su versin de Windows. El resto de las opciones tienen son especificas para el MPLAB o tienen algunas peculiaridades que seguidamente comentaremos: 5.1.- Import: La funcin File>Import permite transferir los archivos desde el PC a la memoria asignada del emulador o del simulador. As por ejemplo si abrimos el MPLAB y sin crear ningn proyecto se activa esta opcin aparece un cuadro de dilogo como el de la Figura 81.
MPLAB
Capitulo 5 Pgina 1
Seleccionamos el fichero *.hex (hexadecimal) que queramos, por ejemplo ejer1.hex y activamos el botn de OK, esta accin cargar el fichero hexadecimal del programa ejer1.asm en la memoria de programa del simulador, para comprobarlo seleccionar Windows>Program Memory>Download to Memory y aparecer un ventana como la que se muestra en la Figura 82 en la que se puede ver el archivo ejer1.hex desensamblado.
Si el procesador con el que se est trabajando es del tipo PIC12CXX, PIC14000, PIC16C5X o PIC16CXX, entonces el archivo debe tener formato Intel o de 8-bits HEX archivo formato (INHX8M). Si el archivo objeto se transmite con xito, entonces los smbolos se cargan automticamente del corresponder archivo *.COD si existe. La extensin predefinida para el cdigo objeto es * .HEX. MPLAB Fernando Remiro Domnguez Capitulo 5 Pgina 2
Para los dispositivos de PIC17CXX el archivo debe estar en formato Intel extendido el formato de archivo de hexadecimal (INHX32). Si la aplicacin se quiere cargar en una posicin superior a 32K, utilizar el formato INHX32. 5.2.- Export: Cuando se elige esta opcin aparece un men con dos opciones: Save Trace Buffer y Save Hex File., seguidamente veremos cada una de estas opciones. 5.2.1.- Save Trace buffer al seleccionar File>Export>Save Trace Buffer , aparece un cuadro de dilogo como el que se muestra en la Figura 83 en el que se podr guardare en un archivo el contenido del buffer de traza, si previamente se ha realizado una simulacin en el que se ha obtenido una traza que se encontrar en el buffer del simulador.
Las opciones del cuadro de dilogo son las siguientes: Rango :Selecciona el nmero de lneas (0 a 8191) del buffer de traza que se quiere guardar. Introducir el valor de la lnea inicial y final que se quieren guardar. Por defecto el escribe de la primera a la ltima. Filter Data: Escribe el buffer de traza completo al archivo seleccionado. Filter Data: Opcode (Data Only): Guarda slo el Cdigo de Operacion/ Datos slo. (Para el PIC17CXX los ciclos del read/write externos).Disponible slo con el emulador MPLAB-ICE Filter Data: Guarda solo las direcciones. Fernando Remiro Domnguez Capitulo 5 Pgina 3
MPLAB
5.2.2.- Save Hex file cuando se selecciona Select File>Save Hex File aparece un cuadro de dilogos como el que se muestra en la Figura 84 en el que se pueden seleccionar las siguientes opciones:
Memory areas: Determinan qu reas de memoria que se quieren guardar del archivos hexadecimal. Program Memory: Selecciona guardar la memoria de programa. Tambin se define la direccin final e inicial del la memoria de programa a guardar (Por defecto es toda la memoria). Configuration Bits: Activar para guardar la configuracin de los bits utilizados. IDs: Activar para guardar la informacin ID. EEPROM memory: Activar para guardar la memoria EEPROM, si es aplicable al microcontrolador seleccionado. Calibration memory: Activar para guardar la calibracin de memoria si es aplicable.
Output format (Formato de salida) Determina el formato del fichero de salida. Disassembled code: Activar para guardar el formato de cdigo desensamblado. Hex Code: Actiar para seleccionar el formato de cdigo Hexadecimal INHX32 o INHX8X. 5.3.- Pint (Ctrl.+P): Pulse File > Print para imprimir algunos o todos los archivos actuales. Se debe conectar previamente la impresora seleccionada.
MPLAB
Capitulo 5 Pgina 4
Al activar el comando Print aparece un cuadro de dilogo para especificar los detalles de cmo deben ser impresos los archivos. Por defecto el MPLAB utiliza la misma impresora que se utiliz la ltima vez para imprimir un archivo. Los detalles de la impresin como el nmero de lneas por pgina y los ttulos se seleccionan en el cuadro de dilogo de la Figura 85. El archivo a imprimir tiene la misma anchura de etiquetas que se est viendo en la ventana del editor, y con el nmero de lneas con que estn siendo numeradas si est activada esta opcin. Se pueden configurar ambas activando el comando del men Options>Current Editor Modes.
Las opciones de impresin que presenta el cuadro de dilogo para el archivo actual son las siguientes: Setup Printer: Activar este botn si se quiere cambiar de impresora, de tipo de caracteres o los mrgenes de impresin. Whole File: Activar esta opcin (el valor est pro defecto) si se quiere imprimir el archivo completo. Selected Test: esta opcin imprimir solo el texto seleccionado que aparecer resaltado en video inverso. Esta opcin no est disponible si no hay ningn texto seleccionado. Line Range: Al activar esta opcin se imprimen las lneas que se indiquen en el cuadro de dilogo. Por defecto se imprimen de la primera a la ltima lnea del archivo. Number Lines: Seleccionando esta opcin se imprime el archivo con el nmero de cada lnea.
MPLAB
Capitulo 5 Pgina 5
Wrap Long Lines: Cuando se activa esta opcin las lneas que son muy largas se pliegan para encajarlas dentro de la pgina en lugar de truncarlas. Page Headers: Al activar este botn cada pgina comienza con el titulo del nombre del archivo y alguna otra informacin como por ejemplo la fecha y hora de la impresin.
5.4.- Pint Setup: Al hacer Click en File>Print Setup aparece el cuadro de dilogo de la Figura 86, en el que se puede seleccionar las especificaciones de la Impresora que utilizar el MPLAB, se accede al tipo de caracteres a utilizar. MPLAB graba los valores seleccionados en el Setup, de manera que se pueden tener formatos diferentes para distintas impresoras. Estos valores pueden ponerse por defecto.
Las opciones del Setup son las siguientes: File > Print Setup: permite especificar: o Que impresora que se va a utilizar o Que mrgenes sern aplicados cuando se imprime desde ese dispositivo. o Que conjunto de caracteres se utilizan con esa impresora. Avaiable Printers: Si se quiere utilizar una impresora diferente a la que est en uso, se selecciona una de la lista de impresoras disponibles y se pulsa con el botn izquierdo del ratn. Print Options:
Para cambiar los margenes usados en las pginas se activa el switch correspondiente del rea de opciones de impresin. MPLAB Fernando Remiro Domnguez Capitulo 5 Pgina 6
Setup: para ejecutar el propio setup de la impresora seleccionada seleccionar este botn. Font: Este botn permite cambiar el conjunto de caracteres que utilizara la impresora seleccionada en el MPLAB.
5.5.- Exit (Alt+4): Cuando se pulsa el botn File>Exit se termina la sesin de MPLAB. Si alguno de los archivos con los que se estn trabajando se ha modificado y no se ha salvado, el MPLAB sugiere que se guarden los ltimos cambios en los archivos y en el proyecto.
MPLAB
Capitulo 5 Pgina 7