PRIMERA PRÁCTICA: PRIMERA TOMA DE CONTACTO CON MPLAB IDE MICROBOT RASTREADOR CONSTRUCCIÓN DE UN GRABADOR



Documentos relacionados
PROTEUS Depuración de programas para microprocesadores

Instalación del programa PSPP y obtención de una distribución de frecuencias.

INSTRUCCIÓN DE SERVICIO NOCIONES BÁSICAS PARA DIAGRAMAS DE FLUJO. MICROSOFT VISIO

Centro de Capacitación en Informática

Descarga Automática. Manual de Usuario. Operador del Mercado Ibérico de Energía - Polo Español Alfonso XI, Madrid

UNIVERSIDAD DON BOSCO

Tutorial de Introducción a la Informática Tema 0 Windows. Windows. 1. Objetivos

Para ingresar a la aplicación Microsoft Word 97, los pasos que se deben seguir pueden ser los siguientes:

Este programa mueve cada motor de forma independiente, y cuando termina una línea pasa a la siguiente.

Índice general de materias LECCIÓN 7 74

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

Práctica 1. Introducción al SIEMENS 80C167

AUTOMATIZACIÓN INDUSTRIAL

La ventana de Microsoft Excel

Microsoft Office XP Excel XP (I)

Manual de ayuda para crear y gestionar Tareas, como actividad evaluable

MIGRACIÓN DEL MOODLE A MESTRE A CASA

1 MANUAL DE INSTALACIÓN

Ejercicio 1. Desarrollar un pequeño juego para practicar mecanografía.

Módulo 8: Ofimática básica. Unidad didáctica 4: Introducción y modificación de datos. Access

CÓMO CREAR NUESTRO CATÁLOGO

Práctica 1. Introducción al laboratorio y al ensamblador del PIC. 1. Objetivos. 2. Introducción. 2.1 Ensamblar y simular

Dev C++. Compilador de C para Windows

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas.

CORREO ELECTRÓNICO GMAIL. 1 Enviar correo electrónico Acceder a una cuenta de correo electrónico... 2

PLANES DE EMPRESA ICEX CONSOLIDA. Manual de Usuario

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS COORDINACIÓN DE ELECTRÓNICA GUÍA DE LABORATORIO Nº 02

GUÍA PGA SISTEMA EXTRANJERO

Jesús Alberto Díaz Carmona Ingeniería en Informática. Curso 2005/06. Diseño de Sistemas Basados en Microprocesador

Uso del simulador Modelsim

El proceso de edición digital en Artelope y CTCE

PROGRAMA INFORMÁTICO PARA LA CUMPLIMENTACIÓN DE RECETAS EN FORMATO XML VERSIÓN: 1.0

GUÍA BÁSICA DE USO DEL SISTEMA RED

Tutorial de PowerPoint

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

T3-Rondas V 1.1. Help-Pc, S.L. C/ Pintor Pau Roig, 39 L Premià de Mar Barcelona Tel. (93) Fax marketing@t2app.

- El programador no funciona con los siguientes sistemas operativos: Windows NT, ni la familia de Windows 2000

Qué es y para qué sirve Excel2007?

WinHIPE: edición, compilación y ejecución de programas; y generación de animaciones web. Manual de usuario.

MANEJANDO FICHEROS Y CARPETAS

1.- MENU DE CONTROL O MENU VENTANA: permite cerrar la ventana cambiarla de tamaño y pasar a otra ventana

ComLabo Easy (V 1.0) Software para adquisición de datos de instrumentos CRISON GLP PC. Manual de Usuario

Herramienta programación de placas KKmulticopter

Manual de OpenOffice Impress

MANUAL BÁSICO DE WRITER

Instructivo de Microsoft Excel 2003

TEMA 20 EXP. WINDOWS PROC. DE TEXTOS (1ª PARTE)

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

Figura 1 Abrir nueva hoja de cálculo

MICROSOFT EXCEL Introducción: Qué es y para qué sirve Excel2007? TECNOLOGIA/ INFORMATICA: MS-EXCEL

A continuación, se detalla el uso de los accesorios más comunes:

Bienvenido al sistema de Curriculum Digital CVDigital

Muchos programas de aplicación contienen herramientas para proteger la información, por ejemplo, Microsoft Word que te permite:

Cátedra de Cardiología

Un kilobyte (KB) son 1024 bytes, un Megabyte (MB) son 1024 KB, un Gigabyte son 1024 Mb

Recursos de Aprendizaje

Otros tipos de Consultas

Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes:

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata

GUÍA DE INSTALACIÓN DE SOFTWARE SISTEMA MULFIFUNCIÓNAL DIGITAL INTRODUCCIÓN ANTES DE LA INSTALACIÓN

HERRAMIENTA DE CONTROL DE PLAGIOS MANUAL DE AYUDA

Contenido. MANUAL DE USO E INSTALACIÓN DLC Detector de línea cortada Página 1 de 13

reemplaza menú archivo y esta situado en la esquina superior izquierda de estos programas de

6.1. Conoce la papelera

Sincronización de carpetas con el disco duro virtual en sistemas GNU/Linux

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

Curso de TIC educativas JITICE 2015

AUTOMATIZACIÓN INDUSTRIAL AUTÓMATA S7-200 Y ENTORNO DE PROGRAMACIÓN STEP 7

Uso del programa CALC

Instrucciones del programa para la presentación de solicitudes de ayudas del Plan Nacional de I+D+i

MATERIAL 2 EXCEL 2007

Instituto Mar de Cortés Elaborar Documentos en Procesador de Texto

Manual de mejora de uso del correo

ESPAÑOL BLACK-VS. Guía de uso e instalación

MANUAL DE USO DEL PROGRAMA ARKITOOL 2012

PROCEDIMIENTO DE ENLACE TCPIP

UTILIDAD DE EXPORTACIÓN DE ASIENTOS A CONTAPLUS

CERTIFICADOS ELECTRÓNICOS Y LECTORES DE TARJETAS LTC31 USB

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

Capítulo 3: XML Spy como editor de documentos XML. 2. La interfaz de usuario de XML Spy

Se ha ampliado el tamaño de estos tres campos hasta 112 caracteres cada uno.

Práctica 0. Emulador XENON de la computadora CESIUS

Este botón situado en la barra de título de la ventana de la aplicación, nos da acceso a un menú mediante el cual podemos, entre otras opciones:

Práctica 2 de Microsoft Access

[MANUAL DE USO DE EKADE2ABIES] Pincel E ADE

Guía Ceconta Cloud Ceginfor S.L.

EMPLEO NTIC`S II SEGUNDO SEMESTRE

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

CREACIÓN DEL PRIMER PROYECTO EN mikrobasic PRO for AVR

ORGANIZAR LA INFORMACIÓN: EL EXPLORADOR DE WINDOWS

SIMULADOR DE REDES DE PETRI ASINCRONICAS

Guía para construir un programador y una mini placa de desarrollo para el microcontrolador PIC

Documentación del Terminal

5.2.1 La Página Principal

Curso Internet Básico - Aularagon

Visado Electrónico de Recetas Configuración Puestos Cliente Usuarios de Farmacias

Guía para la migración de asignaturas de grado y másteres al nuevo espacio docente para el curso 2015/2016

Internet Information Server

GUIA GENERAL PARA LA PROGRAMACIÓN DEL SISTEMA EB88 BOOTLOADER: TINY INDICE

Manejo de Libros. Marzo 2011 Manejo de Libros Diapositiva 1

Transcripción:

SISTEMAS ELECTRÓNICOS DIGITALES PRIMERA PRÁCTICA: PRIMERA TOMA DE CONTACTO CON MPLAB IDE MICROBOT RASTREADOR CONSTRUCCIÓN DE UN GRABADOR Curso 2008-2009 Profesor: Jaime Gómez Gil E.T.S. Ing. Telecomunicación Universidad de Valladolid SISTEMAS ELECTRÓNICOS DIGITALES, PRÁCTICA 1 1/9

Introducción La asignatura SISTEMAS ELECTRÓNICOS DIGITALES estudia el diseño y la programación de los sistemas electrónicos digitales por excelencia, que son los microprocesadores. En cuanto a la parte de programación, en esta asignatura se opta por el trabajo con el microcontrolador PIC16F84A. Esta práctica supone una primera toma de contacto a la programación y trabajo real con este microcontrolador. Objetivos Se pretende que esta práctica suponga una primera toma de contacto del alumno con el mundo de los microcontroladores. Esta primera toma de contacto el alumno el alumno debe: Familiarizarse con las herramientas de trabajo con microcontroladores, y disponer de material de trabajo para la realización de aplicaciones basadas en microcontrolador. Para ello construirá un grabador para el microcontrolador PIC16F84A. Familiarizarse con MPLAB IDE 7.0, aplicación de trabajo con microcontroladores PIC proporcionada por Microchip. Para ello realizará realizarán se seguirán los pasos del tutorial, en el Capítulo 12 de los apuntes proporcionados por el profesor (este capítulo está adjunto a este enunciado de práctica). Conocer el proceso de desarrollo de una aplicación con microcontroladores. Para ello editará, simulara, ensamblará y depurará su primera aplicación con el PIC16F84A. Primera toma de contacto con MPLAB IDE MPLAB IDE es una aplicación software que Microchip proporciona gratuitamente a los desarrolladores de software para microcontroladores. Con MPLAB IDE se puede editar, ensamblar y simular un programa en ensamblador para microcontroladores PIC. Si se dispone de un grabador de Microchip 1, con MPLAB IDE también se puede grabar el ejecutable en el microcontrolador. En este apartado de la práctica, el alumno deberá realizar seguir los pasos de los apartados 12.1, 12.2 y 12.3 del capítulo 12 de los apuntes, que está adjunto a este enunciado de práctica. Si el alumno ya tiene experiencia con la programación en ensamblador de microcontroladores, puede seguir los pasos del capítulo completo. Microbot rastreador NOTA IMPORTANTE: Al ser la primera práctica y no disponer el alumno de muchos conocimientos sobre microcontroladores, no se especifica cuál es el circuito electrónico que gobierna el microbot. Las prácticas posteriores serán más completas, y en ellas se presentarán en detalle los circuitos electrónicos asociados al microcontrolador en cada una de las pruebas. Se dispone de un microbot equipado con dos motores que actúan sobre sendas ruedas motrices, una rueda loca posterior, dos bumpers que actúan como sensores de contacto delanteros, y dos sensores de reflexión que exploran si el color del suelo es blanco o negro. Su disposición se muestra en la figura siguiente: 1 Los grabadores con los que se trabajará en el laboratorio no son de Microchip. La grabación del programa al microcontrolador se realizará mediante IC-Prog. SISTEMAS ELECTRÓNICOS DIGITALES, PRÁCTICA 1 2/9

Figura 1: Vista superior de la disposición de motores y sensores. Un PIC16F84A y cierta electrónica asociada 2 gobierna ambos motores en función de la información obtenida por los sensores. No detallamos cómo es esta electrónica, simplemente especificamos el efecto de los sensores sobre las líneas de entrada del PIC y el efecto de las líneas de salida del PIC sobre los motores. Como líneas de entrada tenemos: 0 suelo blanco RB0: sensor CNY70 derecho 1 suelo negro 0 suelo blanco RB1: sensor CNY70 izquierdo 1 suelo negro 0 pulsado RB2: bumper derecho 1 sin pulsar 0 pulsado RB3: bumper izquierdo 1 sin pulsar Y como líneas de salida tenemos: 1 hacia adelante RA0: dirección motor izquierdo 0 hacia atrás 0 hacia adelante RA1: dirección motor derecho 1 hacia atrás 1 activo RA2: activación/desactivación motor izquierdo 0 no activo 1 activo RA3: activación/desactivación motor derecho 0 no activo PRIMERA PRUEBA, rastreador sencillo utilizando un único sensor Realizar el organigrama y un programa en ensamblador MPASM para que el microbot siga una línea negra sobre el suelo. Para esta primera prueba se utilizará ÚNICAMENTE UN SENSOR de reflexión. La estrategia a seguir puede ser tan simple como: Si el sensor de reflexión detecta blanco se gira a la izquierda activando únicamente el motor derecho. Si el sensor de reflexión detecta negro se gira a la derecha activando únicamente el motor izquierdo. La Figura 2 muestra esta estrategia. 2 En clase de teoría se verán las conexiones típicas entre un PIC16F84A y periféricos como sensores y motores. SISTEMAS ELECTRÓNICOS DIGITALES, PRÁCTICA 1 3/9

Figura 2: Estrategia a seguir. Se aconseja realizar pruebas antes del programa definitivo. Por ejemplo, hacer primero un programa que lo único que hace es mover la rueda derecha. Luego modificar éste para que mueva la rueda derecha cuando se detecta blanco, etc. SEGUNDA PRUEBA, rastreador más eficiente utilizando dos sensores En el caso anterior, en cada momento gira un motor u otro, pero nunca ambos a la vez. Esto es poco eficiente, pues aun cuando la línea a seguir es recta, el microbot va continuamente realizando giros. Se pretende mejorar esta situación y se pide variar el organigrama y programa anterior para seguir una trayectoria más recta, accionando normalmente ambos motores simultáneamente, y solamente uno en el caso de que se pretenda girar. Nota: Para la estrategia a seguir en este caso se necesitará la información de los dos sensores de reflexión disponibles y no únicamente de uno, como en el caso anterior. TERCERA PRUEBA, sobre las etiquetas Para intentar comprender la equivalencia entre el lenguaje ensamblador y el código máquina, se pide implementar el código de la prueba anterior de tres formas diferentes: Definiendo como etiquetas las posiciones de memoria a utilizar. Es posible que sólo sea necesaria: PORTA EQU 0X05 Sustituyendo todas las etiquetas de posiciones de memoria conocidas por: include <p16f84a.inc> No utilizando absolutamente ninguna etiqueta. Incluso en los saltos (goto) se deberá incluir como argumento una posición de memoria y no una etiqueta (el primer paso que se realiza en el programa en ensamblador antes de pasar a código máquina es eliminar todas las etiquetas, tal y como se ha realizado manualmente en esta tercera implementación). Si se tienen dudas preguntar al profesor. Se realizarán cada uno de los programas anteriores y, con capturas de la ventana VIEW PROGRAM_MEMORY de MPLAB IDE en cada uno de éstos, se comprobará que el código binario ejecutable cuyo destino es la memoria de programa es el mismo. Posteriormente, en este último programa se identificarán las líneas que se almacenarán en las 4 primeras posiciones de la memoria de programa del PIC, y se realizará una codificación a palabras de 14 bits tal y como indica el data sheet. Una vez hecho esto, se comprobará la concordancia con la ventana VIEW PROGRAM_MEMORY de MPLAB IDE. Según se ha comentado en clases teóricas, el PIC16F84A es un circuito integrado de propósito muy general, y por lo tanto, es normal que mucha de la lógica que contiene sea innecesaria para nuestras aplicaciones específicas. En nuestro caso concreto, averiguar qué porcentaje de la memoria de programa estamos utilizando para el programa de la seguna prueba y qué porcentaje de la memoria de datos para ese mismo programa. Si se tienen dudas preguntar al profesor. CUARTA PRUEBA, sobre la velocidad de exploración del PIC (opcional) Una vez hecho esto, se pide realizar una modificación en el programa para que: El microbot no se ponga en marcha inmediatamente después de conectar la alimentación, sino cuando se presiona el bumper derecho. El microbot se pare al presionar el bumper izquierdo y, pulsando nuevamente el bumper derecho, avance de nuevo. QUINTA PRUEBA, turbo (opcional) El microbot dispone de un jumper para alimentar a los motores con la tensión que proporciona la batería (12 voltios) o con únicamente 5 voltios. Esto equivale a que el microbot se desplace a una velocidad mayor o menor. Modificar la posición de este jumper para alimentar a los motores con 12 voltios y en caso de que el microbot no SISTEMAS ELECTRÓNICOS DIGITALES, PRÁCTICA 1 4/9

consiga seguir la trayectoria con la nueva velocidad, realizar las modificaciones pertinentes en el organigrama y programa en ensamblador de la prueba anterior para que lo consiga. Pista: para que gire más rápido, se puede dar la orden de que una rueda gire hacia adelante, y otra hacia atrás. SEXTA PRUEBA, retrocediendo (opcional) Realiza en organigrama y programa en ensamblador MPASM para que el microbot siga la línea negra pero circulando hacia atrás. NOTA: Esta prueba aún no la ha realizado de forma satisfactoria ningún alumno, de todos los que han cursado la asignatura en los últimos años 7 años Construcción de un grabador En la primera práctica se dispondrá de un grabador común para transpasar el programa a los PIC, pero en posteriores prácticas cada alumno debe haberse construido y utilizar su propio grabador. Para ello, el alumno debe adquirir: Un PIC16F84A-04/P o un PIC16F84A-20/P o un PIC16F84A-04I/P o un PIC16F84A-20I/P. Un zócalo P-DIP de 18 pines torneado para el microcontrolador PIC16F84A. (Muy importante que este zócalo sea torneado). También se necesita otro zócalo P-DIP de 18 pines rasgado, que será el que se suelde en el grabador. Una placa impresa para la construcción de un grabador TE-20 junto con los componentes necesarios y las instrucciones de montaje. En el laboratorio estarán disponibles soldadores y estaño para que los alumnos realicen el montaje del grabador. Interesa que los zócalos suministrados para montar el grabador sean todos rasgados. Opcionalmente un cable serie para conectar el grabador con el puerto serie del ordenador PC. El alumno se puede ahorrar la compra de este cable, pero en este caso deberá colocar el grabador en el zócalo del puerto serie, en la parte trasera del ordenador. Si se dispone del cable, la comodidad de trabajo será mayor. El precio de todo el conjunto (microcontrolador + grabador + cable serie) no supera los 15. Este material puede adquirirse en cualquier tienda de electrónica. En Valladolid se pueden encontrar en: Electrosón: En la C/General Almirante (entre San Benito y San Miguel). Sonytel: En la plaza de San Miguel. DIGISON, c/ Bailarín Vicente Escuedero 2, Tlf: 983 293172 (Muy cerca de la plaza San Juan) Miguel Angel, Acera de recoletos, 15. Tlf:983304088 La siguiente figura muestra un esquema de placa, y los componentes necesarios para dicha placa. La figura anterior se pone a modo de ejemplo, pero sirve cualquier placa y componentes que sean capaces de graba un PIC16F84A. Hay grabadores más complejos y algo más caros que incorporan la posibilidad de grabar tarjetas MemoryCard, pero en la asignatura SED no se emplearán dichas tarjetas. SISTEMAS ELECTRÓNICOS DIGITALES, PRÁCTICA 1 5/9

Duración de la práctica Para la realización de esta práctica se dispone de tres jornadas de laboratorio, comenzándose el día miércoles 3 de octubre. SISTEMAS ELECTRÓNICOS DIGITALES, PRÁCTICA 1 6/9

ANEXO I: Instrucciones de IC-Prog con grabador TE20 (JDM programmer) Al ejecutar IC-PROG aparecerá el siguiente mensaje de error que deberemos ignorar. Asegurarse que SETTING HARDWARE presenta la siguiente pantalla: Al seleccionar SETTING OPTIONS debe tener configurados los flags tal y como muestran los siguientes capturados: SISTEMAS ELECTRÓNICOS DIGITALES, PRÁCTICA 1 7/9

Una vez configurado el grabador, se opera como se muestra a continuación Mediante ARCHIVO ABRIR seleccionaremos en el disquete el archivo ejecutable a grabar en el PIC, tal y como muestra la siguiente pantalla: A continuación, pulsaremos el icono de grabación, habiendo seleccionado los flags tal y como muestra la siguiente figura (Ya veremos más adelante qué representan estos flags). SISTEMAS ELECTRÓNICOS DIGITALES, PRÁCTICA 1 8/9

NOTAS El software de grabación IC-Prog se puede bajar gratuitamente del web www.ic-prog.com. Trabajando con Windows 2000 y Windows XP es necesario tener en el mismo directorio el IC-Prog NT-2000 driver (icprog.sys). No grabar nunca con protección de código, pues si se hace, es muy posible que no se pueda volver a grabar el PIC grabado con el grabador TE20. Si se ha grabado con protección de código se puede utilizar otro grabador con alimentador propio (que no obtiene la corriente necesaria para grabar del puerto del ordenador) para realizar una grabación sin protección de código, y ya entonces se podrá volver a utilizar el TE20 con ese PIC. Tales grabadores pueden ser SCHAER ó PIC STAR PLUS, por ejemplo. El estándar RS-232-C deja mucho margen en cuanto a niveles de tensiones, tal y como vemos en la siguiente figura: Los ordenadores portátiles, al estar diseñados para trabajar con baterías, utilizan en el puerto RS-232-C niveles de tensión más próximos a los 5 voltios que a los 15, y por tanto el programador TE20 no es capaz de alcanzar los 13 voltios necesarios para grabar los PICs. Por ello, es posible que el grabador TE20 trabajando desde un portátil no consiga grabar los PIC. De los 5 portátiles con los que he trabajado, solo uno consiguió grabar con este grabador, y curiosamente tenía una fuente de alimentación de 19 5 voltios (la más alta de todos). SISTEMAS ELECTRÓNICOS DIGITALES, PRÁCTICA 1 9/9

Capítulo 12 12MPLAB IDE El fabricante del PIC16F84A, Arizona Microchip, proporciona de forma gratuita en su web www.microchip.com, la aplicación software MPLAB IDE. Esta aplicación permite realizar todas las tareas básicas necesarias para el desarrollo de aplicaciones con microcontroladores PIC. Permite editar el código de un programa en ensamblador, permite ensamblarlo, permite depurar el código con su simulador, permite verificar las temporizaciones con su función cronómetro, y permite grabar el código ensamblado en el PIC en caso de que dispongamos de un grabador de la empresa MICROCHIP. También permite trabajar en C instalando unos complementos ( plugins ), pero estos ya son de pago. En este capitulo vemos el funcionamiento de esta aplicación con ejemplos que el alumno debe realizar en MPLAB IDE. 12.1 El editor de archivos Una vez realizado el organigrama correspondiente al código de una aplicación, se debe generar un archivo con el código en ensamblador correspondiente. Para ello se ejecua MPLAB IDE, se cierran todas las ventanas que puedan salir, se hace click en FILE NEW y se comienza a escribir el código. Una vez que se ha escrito la primera línea, se hace click en FILE SAVE AS, en el recuadro TYPE se selecciona Assembly Source Files (*.asm;*.as;*.inc;*.s), se le da un nombre al archivo manteniendo la extensión.asm, y se graba el fichero. A continuación se selecciona el microcontrolador para el que se está programando, mediante CONFIGURE SELECT DEVICE, seleccionando ahí el PIC16F84A, en caso de que no aparecises ese. En este momento, MPLAB IDE colorea diferentes partes del código, para mostrar lo que son comentarios, comandos, operandos o literales. Se pide al alumno que copie el siguiente código y le guarde en un archivo con nombre ejemplo.asm. CAPÍTULO 12: MPLAB IDE PÁGINA 161

;Jaime Gómez Gil ;Este programa suma el contenido de las posiciones de memoria 0x0C y 0x0D y almacena ;el resultado en la posición 0x0E LIST P=16F84A ;Directiva del ensamblador que indica el PIC usado ;Zona de etiquetas OPER1 EQU 0x0C ;Define la posición de memoria del operando 1 OPER2 EQU 0x0D ;Define la posición de memoria del operando 2 RESUL EQU 0x0E ;Define la posición de memoria del operando 3 ORG 0 ;Comando que indica al Ensamblador la dirección de la ;memoria de programa donde se situará la instrucción ;siguiente. movlw 0x05 ; 5 --> W (Primera instrucción) movwf OPER1 ; W --> OPER1 movlw 0x02 ; 2 --> W movwf OPER2 ; W --> OPER2 movf OPER1,0 ; OPER1 --> W addwf OPER2,0 ; W + OPER2 --> W movwf RESUL ; W --> RESULTADO (Última instrucción) END ;Directiva de fin de programa Una vez hecho esto, el alumno deberá ver en la pantalla de su ordenador algo similar a lo mostrado en la figura 12.1. Figura 12.1: En la captura se muestra el editor de texto de MPLAB IDE, con un código en ensamblador. 12.2 Ensamblando el código en esamblador El código en lengujae de alto nivel como C Pascal, o Basic, necesita ser compilado, para generar el código ejecutable que entiende el microprocesador. El paso de un código programado en lenguaje de alto nivel es un proceso muy complejo, que se realiza por aplicaciones software muy sofisticadas denominadas compiladores. Un programa con un número reducido de instrucciones de alto nivel, producirá un código ejecutable de muchas instrucciones máquina. No hay una corresponedencia directa entre instrucciones de alto nivel e instrucciones máquina. CAPÍTULO 12: MPLAB IDE PÁGINA 162

Un código programado en ensamblado tiene una correspondencia muy directa con el código ejecutable. Para el PIC16F84A cada instrucción en ensamblado se corresponde con una instrucción máquina, realizándose el paso de código ensamblador a código ejecutable según la tabla de la pagina 36 del PIC16F84A Data Sheet (Ver DS_35007B-page29). En esta correspondencia de una instrucción ensamblador con una instrucción código máquina hay que tener en cuenta que las directivas en ensamblador (LIST, EQU, ORG, END ó INCLUDE) no son instrucciones ensamblador. MPLAB IDE dispone de un ensamblador que genera un fichero ejecutable (.hex) a partir de un fichero en ensamblador MPASM (.asm). Antes de obtener el fichero ejecutable con el ensamblador, es necesario asegurarse de que los bits de configuración, con los que se obtiene la palabra de configuración, son los adecuados. Para los ejemplos de este libro, salvo contadas excepciones, se usará un cristal de cuarzo de 4Mhz que se corresponde con un oscilador XT, no se activará el perro guardian (WatchDog timer), será aconsejable un pequeño retardo antes del power on reset que se produce al alimentar al microcontrolador, y no se protegerá el código para evitar su lectura desde el microcontrolador. Estas configuraciones se realizan en CONFIGURE CONFIGURATIONS BITS, y para modificar las opciones es necesario hacer click en los valores de la columna SETTING. El resultado de la configuración será el que se muestra en la figura 12.2 Figura 12.2: Capturado de la ventana en la que se modifican mediante MPLAB los bits de la palabra de configuración. Si no se desea tener que modificar estos bits de configuración con esta ventana situada en el menú CONFIGURE, se puede incluir una directiva con información sobre como tienen que ser estos parámetros. En esta caso la casilla etiquetada como Configuration Bits set in code deberá estar marcada, y en el código ensamblador se deberá incluir en las directivas iniciales del programa, la directiva CONFIG con los parámetros que se muestran a continuación: CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC Esta directiva CONFIG va precedida de dos guiones bajos (no uno), y se puede emplear según se muestra, si se ha incluido la librería p16f84a.inc. Su posición en el código es después de la directiva que incluye la librería, que a su vez irá después la la directiva LIST, que indica el PIC usado. Más concretamente, el programa completo que se debe editar si se no se desean configurar la palabra de configuración mediante CONFIGURE CONFIGURATIONS BITS, es el siguiente: CAPÍTULO 12: MPLAB IDE PÁGINA 163

;Jaime Gómez Gil ;Este programa suma el contenido de las posiciones de memoria 0x0C y 0x0D y almacena ;el resultado en la posición 0x0E LIST P=16F84A ;Directiva del ensamblador que indica el PIC usado INCLUDE <p16f84a.inc> CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ;Zona de etiquetas OPER1 EQU 0x0C ;Define la posición de memoria del operando 1 OPER2 EQU 0x0D ;Define la posición de memoria del operando 2 RESUL EQU 0x0E ;Define la posición de memoria del operando 3 ORG 0 ;Comando que indica al Ensamblador la dirección de la ;memoria de programa donde se situará la instrucción ;siguiente. movlw 0x05 ; 5 --> W (Primera instrucción) movwf OPER1 ; W --> OPER1 movlw 0x02 ; 2 --> W movwf OPER2 ; W --> OPER2 movf OPER1,0 ; OPER1 --> W addwf OPER2,0 ; W + OPER2 --> W movwf RESUL ; W --> RESULTADO (Última instrucción) END ;Directiva de fin de programa Es importante recordar que en este caso debe estar activada la casilla Configurations Bits set in code, que aparece en CONFIGURE CONFIGURATIONS BITS. Para generar el ejecutable a partir del fichero en ensamblador, se debe seleccionar la ventana en la que está el código (de todas las posibles ventanas que contenga MPLAB IDE, tiene que estar activa la del código), y a continuación se hace click en PROJECT QUICKBUILD. Si el código en ensamblador es correcto, aparecerá un mensaje de BUILD SUCCEEDED, y si tiene errores, MPLAB informará de los errores ocurridos. Una vez realizado el PROJECT QUICKBUILD, en la misma carpeta en la que se encontraba el fichero código en ensamblador (.asm) aparecerá el fichero ejecutable (.hex). 12.3 Simulación en MPLAB IDE Es conveniente, sobre todo cuendo la aplicación no funciona bien, simular paso a paso el programa, para ver como se va modificando el contenido de los registros. Para ver el contenido de los registros hay dos opciones: Hacer click en VIEW FILE REGISTER y aparecerá una ventana con el contenido de todos los registros, tanto de propósito general como de propósito específico, agrupados en 5 filas por cada banco. Esta forma de ver el contenido de los registros es confusa, y no es recomendable. Hacer click en VIEW WATCH y seleccionar los registros que se desean ver, tanto de propósito específico específico como de propósito general. Estos registros se seleccionan con los dos deplegables de la ventana que aparece. En el caso del ejemplo que estamos tratando, mostraresmo los registros de propósito específico 0x0C, 0x0D y 0x0F, que están identificados con las etiquetas OPER1, OPER2 y RESULT. También mostraremos el registro acumulador W, identificado en la pestaña desplegable de la izquierda como WREG. Además, haremos click con el botón derecho sobre la barra con los títulos de la columna, y seleccionaremos para mostra el valor en decimal, y el valor en binario, para ver el contenido de los registros de forma más cómoda. El contenido de esta pantalla cuando se finaliza de simular el ejemplo que estamos tratando, se muestra en la figura 12.3. CAPÍTULO 12: MPLAB IDE PÁGINA 164

Figura 12.3: Capturado de la ventana Watch, en la que se han seleccionado para visulizar el contenido de los registros en los que se almacenan OPER1, OPER2 y RESULT. Ademas, también se muestra el regisro acumulador W. El contenido de estos cuatro registros se muestra en hexadecimal, decimal y binario. Antes de comenzar a simular, es necesario seleccionar en MPLAB IDE la herramienta de simulación, y esto se realiza con la secuencia DEBUGGER SELECT TOOL MPLAB SIM. Una vez hecho esto, se selecciona la ventana donde está el código, se presiona de forma consecutiva F7, y MPLAB simulará línea a línea el programa, mostrando en la ventana WATCH el contenido de los registros. 12.4 Midiendo tiempo en MPLAB IDE Programar los retardos en ensamblador es una tarea compleja. Una vez que se programa un retardo, es conveniente comprobar con el cronómetro (StopWatch) de MPLAB IDE la duración de ese retardo. Por ello, vamos a medir el tiempo que conlleva el retardo del siguiente código: ; Programa hace parpadear los leds de la puerta B con una frecuencia de aproximadamente 10Hz ; Autor: Jaime Gómez Gil LIST P=16F84A ;Tipo de procesador include <P16F84A.INC> ;Incluye etiquetas conocidas CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ORG 0x00 bsf STATUS,RP0 ;Selecciona banco 1 clrf TRISB ;Puerta B se configura como salida movlw b'11000111' ;Configura TIMER para contar TIEMPO con prescaler 1:256 movwf OPTION_REG bcf STATUS,RP0 ;Selecciona banco 0 inicio movlw b'10101010' movwf PORTB ;Se sacan unos valores call retardo movlw b'01010101' movwf PORTB ;Se sacan los contrarios para que parpadeen los leds call retardo goto inicio retardo clrf TMR0 ;Retardo de 50 ms aproximadamente sigue movlw d'195' subwf TMR0,W btfss STATUS,Z ;Se espera a que TMR0 llegue a 195 para finalizar goto sigue return END Para ello, una vez que se ha tecleado el código, se genera el ejecutable con PROJECT QUICKBUILD. A continuación, se selecciona el simulador de MPLAB IDE con DEBUGGER SELECT TOOL MPLAB SIM. Una vez hecho esto, es necesario indicarle a MPLAB IDE que frecuencia del oscilador dispondrá el PIC que cargue este programa. En este caso, suponemos que el oscilador dispondrá de un cristal de cuarzo de 4Mhz, con lo que habrá qe indicar a MPLAB este valor, en DEBUGGER SETTINGS, accediendo a la pestaña OSC/TRACE, e indicando este valor tal y como se muestra en la figura 12.4. CAPÍTULO 12: MPLAB IDE PÁGINA 165

Figura 12.4: Capturado de pantalla de la ventana Simulador Settings, en la que se introduce la frecuencia de funcionamiento asociada al código a simular. Una vez hecho esto, se saca una ventana con la herramienta cronómetro mediante DEBUGGER STOPWATCH. Para medir el tiempo asociado al retardo, necesitaremos incluir un BREAKPOINT en la instrucción que está después de la llamada al retardo (instrucción call retardo ). Esto se hace haciendo un click con el botón derecho sobre esa instrucción, y seleccionando SET BREAKPOINT. Un circulito rojo con una B aparecerá en el margen izquierdo sobre esa línea. A continuación se presiona F7 siete veces, para hacer que el cursor se situe en la línea call retardo. Una vez hecho esto, se hace click en el botón ZERO del cronómetro (StopWatch) para poner a cero éste. En este momento en la pantalla debe aparecer algo similar a lo que se ve en la figura 12.5. Figura 12.5: Capturado de pantalla de la ventana de MPLAB simulando, con la ventana del cronómetro presente. A continuación se podría seguir presionando F7 hasta llegar al BREAKPOINT, pero dado que el retardo conlleva muchos ciclos, conviene presionar F9 (RUN) y esperar a que el cursor se pare en el BREAKPOINT. Es equivalente presionar F9 que hacer click en el simbolito RUN de la barra de herramientas, que es un triángulo azul claro que apunta hacia la derecha. Una vez hecho aparecerá la ventana del cronómetro tendrá los valores mostrados en la figura 12.6, que indica que la instrucción call retardo conllevó 49934 ciclos, y esto con un oscilador de 4 MHz equivale a 49 934 ms. El retardo no son 50 ms. tal y como se pretendía, pero el error cometido es de tan sólo un 0 13%. En cualquier caso, se podrían añadir más ciclos hasta conseguir un retardo totalmente exacto. CAPÍTULO 12: MPLAB IDE PÁGINA 166

Figura 12.6: Capturado de pantalla del cronómetro, que indica que pasaron 49 934 ms desde que éste se puso a cero. 12.5 Modificando el valor de las entradas en MPLAB IDE Vamos a simular un ejemplo en de una sencilla aplicación con el PIC16F84A en la que se dispone de un interruptor y ocho diodos led. Se pretende que cuando el interruptor está abierto se encienden los leds, mientras que cuando esté cerrado se apagen. La figura 12.7 muestra el diagrama del circuito electrónico, mientras que la figura 12.8 presenta el organigrama del programa realizado. Figura 12.7: Circuito electrónico. Figura 12.8: Organigrama. El programa realizado en ensamblador MPASM es el siguiente: CAPÍTULO 12: MPLAB IDE PÁGINA 167

; Programa que enciende o apaga todo los leds de PORTB cuando se aprieta el pulsador ; Autor: Jaime Gómez Gil LIST P=16F84A ;Comando que indica el PIC usado include <P16F84A.INC> ;Incluye etiquetas conocidas CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ORG 0 bsf STATUS,5 ;Accedo al BANCO 1 movlw 0xff movwf PORTA ;PORTA son entradas movlw 0x00 movwf PORTB ;PORTB son salidas bcf STATUS,5 ;Accedo al BANCO 0 inicio btfss PORTA,0 ;comprueba si RA0 es 1 o cero goto apagar ;si es 0 apaga goto encender ;si es 1 enciende encender movlw b'11111111' ;enciende leds en PORTB movwf PORTB goto inicio apagar clrf PORTB ;apaga los leds de PORTB goto inicio END Al igual que en los casos anteriores, los pasos para realizar la simulación son: CONFIGURE SELECT DEVICE, y se selecciona el PIC16F84A. PROJECT QUICKBUILD para generar el ejecutable. DEBUGGER SELECT TOOL MPLAB SIM para que MPLAB IDE entre en modo de simulación. Una vez hecho esto, se puede ir simulando y con F7 se salta de instrucción en instrucción. Pero si sólo se presiona F7, se verá que no cambia el valor de PORTB, y que se dentro del algoritmo se toma siempre el mismo lazo de la bifuracación. Si deseamos que esto no ocurre, debemos modificar el valor de la entrada RA0. Para ello es preciso seguir los siguientes pasos: DEBUGGER STIMULUS NEW WORKBOOK y trabajaremos dentro de la pestaña ASYNCH. En esta pestaña, se hace click con el botón izquiero en las casillas de la primera fila, y aparecerán desplegables. Como PIN seleccionaremos RA0, y como ACTION, seleccionaremos TOGGLE para que en cada acción el valor RB0 cambie al estado opuesto (de 0 a 1 o de 1 a 0). VIEW WATCH y seleccionaremos los registros PORTA y PORTB. Seleccionaremos sobre esta ventana para que se muestre el valor decimal y binario, además del hexadecimal. Una vez hecho todo esto, tendremos en la pantalla del ordenador algo parecido al capturado mostrado en la Figura 12.9. CAPÍTULO 12: MPLAB IDE PÁGINA 168

Figura 12.9: Capturado de MPLAB IDE con la ventana STIMULUS que permite cambiar el valor de una entrada, en este caso RA0. Para simular se presiona repetidamente F7 y se ve como el cursor (flecha verde) se desplaza por las líneas del código. Cuando se desea modificar el valor de RA0, se deben realizar los siguientes pasos: Con el cursor se hace click en la barra de título de la ventana STIMULUS, para que esta se active. Esta cambiará de color al activarse, seguramente a color azul con los colores por defecto de WINDOWS, y la ventana con el código pasará al estado de inactiva, que con los colores por defecto del WINDOWS será color gris. Dentro de la columna FIRE de la ventana STIMULUS, se presiona el símbolo > de la línea sobre la que se actúa, en este caso dobre la línea correspondiente a RA0 que es la única que hay. Se activa de nuevo la ventana del código, haciendo click sobre su barra de título, y se presiona F7 para que se ejecute un nuevo ciclo de instrucción. En este momento se actualizarán los valores de la ventana WATCH por los nuevos, en función del estímulo que se introdujo. 12.6 Conclusiones Hemos visto las tareas básicas que es capaz de llevar a cabo la aplicación MPLAB IDE. Si el alumno ha realizado por su cuenta los pasos indicados, en este momento debe ser capaz de manejar trabajar de forma cómoda con MPLAB IDE. En cualquier caso, siempre puede revisar este capítulo cuando necesite realizar alguna de estas tareas con MPLAB IDE. Es muy importante conocer y saber utilizar estas opciones de MPLAB IDE, para encontrar los errores que se han cometido, cuando el funcionamiento de una aplicación en el microcontrolador no es la correcta. 12.7 Bibliografía Sin bibliografía para este tema en el curso 2008-2009 CAPÍTULO 12: MPLAB IDE PÁGINA 169