proteus y mplab

16
Cap´ ıtulo 1 Pr´ actica: Proteus, MPLab y Hitec PICC Aquel que hace una pregunta puede ser un tonto por cinco minutos, pero aquel que nunca hace una pregunta permanece tonto por siempre Tom J. Connelly 1.1. Objetivo 1 Se propone la realizaci´ on de un sencillo programa en ensamblador y/o lenguaje C para el microcontrolador PIC16F88 que es el objetivo de estudio de este curso. Se busca aprender a manejar las herramientas software y de desarrollo Proteus ISIS, MPLAB y Hitec PICC, as´ ı como poner en pr´ actica el ciclo de dise ˜ no completo, que va desde la especificaci ´ on del problema hasta la puesta en marcha y optimizaci ´ on del prototipo. 1.2. Software MPLAB MPLAB es la herramienta que proporciona de manera gratuita el fabricante de los microcon- troladores que estudiamos y se puede descargar de su p´ agina web 2 . Esta herramienta permite ensamblar y compilar nuestros programas as´ ı como depurar su fun- cionamiento. Permite el uso de compiladores de otros fabricantes e incluso permite una integra- ci´ on con el software que vamos a utilizar: Proteus. Proteus ISIS Proteus es un programa de dise˜ no asistido por ordenador que permite dibujar el esquema hardware de nuestros dise˜ nos y simularlos (tipo SPICE). La ventaja es que permite una simula- ci´ on h´ ıbrida digital/anal ´ ogica que permite simular tambi´ en algunos microcontroladores (los m´ as frecuentemente utilizados) y lo que es m´ as importante depurar el funcionamiento de nuestras aplicaciones. En esta pr´ actica pretendemos hacer uso de esta herramienta que se puede adquirir a trav´ es de la p ´ agina web del Labcenter Microelectronics 3 . La versi ´ on profesional para principiantes permite simular el microcontrolador 16F877 adem´ as del 16F84A y del 18F452 por unas 150 libras esterlinas (20 % de descuento si el uso es educacional). 1 Versi´ on de 7 de marzo de 2007 2 http://www.microchip.com 3 http://www.labcenter.co.uk 1

Transcript of proteus y mplab

Page 1: proteus y mplab

Capıtulo 1

Practica: Proteus, MPLab y Hitec PICC

Aquel que hace una pregunta puede ser un tonto por cinco minutos,pero aquel que nunca hace una pregunta permanece tonto por siempre

∼ Tom J. Connelly ∼

1.1. Objetivo1 Se propone la realizacion de un sencillo programa en ensamblador y/o lenguaje C para

el microcontrolador PIC16F88 que es el objetivo de estudio de este curso. Se busca aprender amanejar las herramientas software y de desarrollo Proteus ISIS, MPLAB y Hitec PICC, ası comoponer en practica el ciclo de diseno completo, que va desde la especificacion del problema hastala puesta en marcha y optimizacion del prototipo.

1.2. Software

MPLAB

MPLAB es la herramienta que proporciona de manera gratuita el fabricante de los microcon-troladores que estudiamos y se puede descargar de su pagina web 2.

Esta herramienta permite ensamblar y compilar nuestros programas ası como depurar su fun-cionamiento. Permite el uso de compiladores de otros fabricantes e incluso permite una integra-cion con el software que vamos a utilizar: Proteus.

Proteus ISIS

Proteus es un programa de diseno asistido por ordenador que permite dibujar el esquemahardware de nuestros disenos y simularlos (tipo SPICE). La ventaja es que permite una simula-cion hıbrida digital/analogica que permite simular tambien algunos microcontroladores (los masfrecuentemente utilizados) y lo que es mas importante depurar el funcionamiento de nuestrasaplicaciones.

En esta practica pretendemos hacer uso de esta herramienta que se puede adquirir a travesde la pagina web del Labcenter Microelectronics3. La version profesional para principiantes permitesimular el microcontrolador 16F877 ademas del 16F84A y del 18F452 por unas 150 libras esterlinas(20 % de descuento si el uso es educacional).

1Version de 7 de marzo de 20072http://www.microchip.com3http://www.labcenter.co.uk

1

Page 2: proteus y mplab

2 Especificaciones de la practica

Existe una version shareware4 (gratuita) que permite simular solamente el microcontroladorPIC16F84A.

Hitec PICC

Si deseamos escribir nuestros programas utilizando un lenguaje de alto nivel como puede serC podemos acudir a los multiples fabricantes de software. Se recomienda un compilador de C dela casa HI-TECH5).

La pagina WEB del HITECH pone a nuestra disposicion una version de evaluacion (con pres-taciones y duracion temporal limitadas) y versiones gratuitas6.

1.3. Especificaciones de la practica

El primer programa propuesto consiste en introducir un valor en binario por el PORTA delmicrocontrolador (5 bits) y sacar por el PORTB (8 bits) el valor leıdo incrementado en dos unida-des. Se aconseja conectar los pines de entrada a los conmutadores del entrenador y las patillas desalida a los LED o al display de 7 segmentos del entrenador. Vamos a emplear el PIC16F88 en vezdel PIC16F84A estudiado en clase.

Para poder trabajar con el deberemos saber que:

El primer registro de proposito general utilizable es el : 0x20 (32d) y no el 0x0C (12d) comoen el PIC16F84A

El PORTA al arrancar se configura como de entradas analogicas. Para su uso digital hay quedefinirlo como sigue:

1 bsf STATUS,RP0 ; Banco 1 de registros2 bcf STATUS,RP1 ; En el 16F88 hay que cambiar tambien RP13 clrf ANSEL ; ANSEL = 0, todo patillas digitales ...4 ; Modifica TRISA para el sentido5 bcf STATUS,RP0 ; Banco 0 de registros

En esta ocasion proporcionamos el listado en lenguaje ensamblador:1 LIST p=16F882 INCLUDE "P16F88.INC"3 RADIX DEC4 ERRORLEVEL -3025

6 ORG 07

8 bsf STATUS,RP0 ; Selecciona Banco 19 bcf STATUS,RP1

10 movlw 11111111b ; W = 0FFh (Todo entradas)11 movwf TRISA ; Configuro PORTA12 movlw 00000000b ; W = 00h (Todo salidas)13 movwf TRISB ; Configuro PORTB14 clrf ANSEL ; ANSEL=0, PORTA digital15 bcf STATUS,RP0 ; Selecciono Banco 016 Bucle movfw PORTA ; Leo W = PORTA17 andlw 00011111b ; Me quedo con los 5 bits del PORTA18 addlw 2 ; W = W + 219 movwf PORTB ; PORTB = W20 goto Bucle ; Repito indefinidamente21 END

4http://www.proteuslite.com5http://www.htsoft.com/products/picccompiler.php6http://www.htsoft.com/downloads/demos.php

Page 3: proteus y mplab

Capıtulo 1. Practica: Proteus, MPLab y Hitec PICC 3

El esquema hardware sera:

RA7/OSC1/CLKIN16

RB0/INT/CCP16

RB1/SDI/SDA7

RB2/SDO/RX/DT8

RB3/CCP19

RB4/SCK/SCL10

RB5/SS/TX/CK11

RB6/AN5/T1OSO/T1CKI12

RB7/AN6/T1OSI13

RA0/AN017

RA1/AN118

RA2/AN2/CVREF/VREF-1

RA3/AN3/C1OUT/VREF+2

RA4/AN4/T0CKI/C2OUT3

RA6/OSC2/CLKOUT15

RA5/MCLR4

U1

PIC16F88

X1

4MHz

C133pF

C233pF

R110k

0

0

0

0

0

LOGICSTATE

7SEG-BCD

Para sacar nota

Prueba a cambiar el valor de salida en funcion de la entrada sacando el complemento del valorde entrada. ¿Sabrıas codificar el valor mediante una operacion O exclusiva?

El juego de instrucciones en ensamblador del microcontrolador es el siguiente:

TABLE 13-2: PIC16CXXX INSTRUCTION SET Mnemonic,Operands

Description Cycles 14-Bit Opcode StatusAffectedMSb LSb

BYTE-ORIENTED FILE REGISTER OPERATIONS

ADDWFANDWFCLRFCLRWCOMFDECFDECFSZINCFINCFSZIORWFMOVFMOVWFNOPRLFRRFSUBWFSWAPFXORWF

f, df, df-f, df, df, df, df, df, df, df-f, df, df, df, df, d

Add W and fAND W with fClear fClear WComplement fDecrement fDecrement f, Skip if 0Increment fIncrement f, Skip if 0Inclusive OR W with fMove fMove W to fNo OperationRotate Left f through CarryRotate Right f through CarrySubtract W from fSwap nibbles in fExclusive OR W with f

111111

1(2)1

1(2)111111111

000000000000000000000000000000000000

011101010001000110010011101110101111010010000000000011011100001011100110

dfffdffflfff0xxxdfffdfffdfffdfffdfffdfffdffflfff0xx0dfffdfffdfffdfffdfff

ffffffffffffxxxxffffffffffffffffffffffffffffffff0000ffffffffffffffffffff

C,DC,ZZZZZZ

Z

ZZ

CC

C,DC,Z

Z

BIT-ORIENTED FILE REGISTER OPERATIONS

BCFBSFBTFSCBTFSS

f, bf, bf, bf, b

Bit Clear fBit Set fBit Test f, Skip if ClearBit Test f, Skip if Set

11

1 (2)1 (2)

01010101

00bb01bb10bb11bb

bfffbfffbfffbfff

ffffffffffffffff

LITERAL AND CONTROL OPERATIONS

ADDLWANDLWCALLCLRWDTGOTOIORLWMOVLWRETFIERETLWRETURNSLEEPSUBLWXORLW

kkk-kkk-k--kk

Add literal and WAND literal with WCall subroutineClear Watchdog TimerGo to addressInclusive OR literal with WMove literal to WReturn from interruptReturn with literal in W Return from SubroutineGo into standby modeSubtract W from literalExclusive OR literal with W

1121211222111

11111000101111001100001111

111x10010kkk00001kkk100000xx000001xx00000000110x1010

kkkkkkkkkkkk0110kkkkkkkkkkkk0000kkkk00000110kkkkkkkk

kkkkkkkkkkkk0100kkkkkkkkkkkk1001kkkk10000011kkkkkkkk

C,DC,ZZ

TO,PD

Z

TO,PDC,DC,Z

Z

Page 4: proteus y mplab

4 Primeros pasos con Proteus

1.4. Primeros pasos con Proteus

Para comenzar el tutorial lo primero es arrancar el programa, que tiene una pantalla inicial,despues del logotipo como la que aparece a continuacion. Hay que indicar que el sistema Proteusconsta de dos modulos o programas diferenciados: ISIS que es el modulo que permite hacer lacaptura esquematica y las simulaciones -y que es objeto de este tutorial- y ARES que es el modulodedicado al diseno de placas de circuito impreso (PCBs).

Inicialmente debemos crear un proyecto vacıo (File⇒New) o abrir uno ya existente (File⇒Open).Si partimos de un nuevo proyecto distinguimos varias partes en la ventana de la aplicacion y queson: la barra de herramientas en la parte superior, debajo de los menus, una barra de estadoque en realidad nos permitira modificar geometricamente los componentes, y que ademas per-mitira mediante cuatro sencillos botones arrancar la simulacion, pararla, ejecutar un paso, etc.Ademas tenemos otra barra de herramientas en formato vertical que va acompanada de una listade dispositivos. Por ultimo tenemos la hoja donde vamos a colocar los distintos componentes.

En un primer diseno vamos a situar el montaje basico de un microcontrolador: el PIC16F88 (enlas figuras aparece el PIC16F877, pero el desarrollo es similar). Para ello es necesario seleccionarlo.Con el atajo de teclado P lograremos situar cualquier componente como se ve en la siguientefigura:

Page 5: proteus y mplab

Capıtulo 1. Practica: Proteus, MPLab y Hitec PICC 5

Simplemente debemos teclear el nombre o parte del nombre del dispositivo buscado y nosaparecera una lista de posibles candidatos y con la seleccion de uno de ellos el esquema graficoque lo define.

Una vez aceptado el componente solo tendremos que seleccionar un lugar con el raton y pulsarel boton izquierdo para situarlo en la hoja de diseno:

Haremos lo mismo con otros componentes necesarios como el cristal de cuarzo (CRYSTAL).

Page 6: proteus y mplab

6 Primeros pasos con Proteus

Para trazar un cable entre dos elementos simplemente aproximaremos el cursor hasta la patillacorrespondiente y pulsaremos el boton izquierdo del raton para trazar automaticamente el cable.Si queremos que el cable recorra una figura determinada, simplemente pulsaremos a lo largo delcamino a recorrer y terminaremos con el segundo elemento.

Despues de haber colocado y conectado otros elementos como los condensadores (CAP), ne-cesitaremos poner algunas tierras (GROUND) y alimentaciones (POWER). Estas se encuentranpulsando en la barra de herramientas vertical el icono relacionado con los terminales.

Page 7: proteus y mplab

Capıtulo 1. Practica: Proteus, MPLab y Hitec PICC 7

La conexion de estos elementos se hace de la misma manera. Si necesitamos ver ampliadala hoja de diseno se puede hacer a traves del menu, de la barra de herramientas horizontal outilizando los atajos de teclado (teclas F5,F6,F7,F8).

Una vez colocados los componentes querremos modificar su valor. Para ello seleccionamosel componente concreto pulsando sobre el con el boton derecho del raton, y a continuacion conel boton izquierdo. Cuidado por que si pulsamos dos veces con el boton derecho eliminaremosel componente. El atajo de teclado U nos ayudara a recuperar (deshacer la ultima operacion) elcomponente borrado por error.

Despues de haber modificado los valores como los que aparecen en la figura (resistencias:RES), deberemos indicarle al microcontrolador con que frecuencia va a ser simulado.

Page 8: proteus y mplab

8 Primeros pasos con Proteus

Seleccionamos el micro y editamos sus propiedades

Colocaremos la frecuencia de reloj coincidente con la del cristal de cuarzo del esquema. Ahoraha llegado el momento de anadir codigo al microcontrolador.

Page 9: proteus y mplab

Capıtulo 1. Practica: Proteus, MPLab y Hitec PICC 9

Por lo tanto, en el menu Source⇒Add/Remove Source Files .. seleccionaremos el listado enensamblador o C (si se dispone del compilador correspondiente) que queremos colocar en elmicro (el programa principal; los demas ficheros estaran incluidos de alguna manera en el ficheroprincipal).

Si el fichero no existe no importara ya que sera creado al editarlo

Page 10: proteus y mplab

10 Primeros pasos con Proteus

Al mismo tiempo seleccionaremos la herramienta de compilacion, en este caso seleccionare-mos MPASMWIN.

Dentro del menu Source aparecera el fichero relacionado. Pulsando esa opcion se arrancara uneditor para modificar/crear el programa.

Editaremos el codigo deseado Y lo compilaremos mediante la opcion Source⇒Build All.

Page 11: proteus y mplab

Capıtulo 1. Practica: Proteus, MPLab y Hitec PICC 11

Si todo fue bien y no cometimos ningun error de sintaxis aparecera la siguiente ventana in-dicandonos que todo fue bien. El ensamblador/compilador utilizado es externo al entorno, luegose pueden anadir herramientas de este tipo para programar el microcontrolador en el lenguajeque deseemos.

Finalmente deberemos incluir el codigo compilado en el microcontrolador. Seleccionamos elmicro y editamos sus propiedades. En este caso rellenaremos el campo Program File con el ficherogenerado que tendra extension .HEX

Page 12: proteus y mplab

12 Primeros pasos con Proteus

Seleccionamos el fichero:

Ahora podemos proceder a simular el circuito dando a la tecla PLAY de la barra de estado. Segenerara una lista de nodos, se compilara todo lo necesario, y se comenzara la simulacion

Page 13: proteus y mplab

Capıtulo 1. Practica: Proteus, MPLab y Hitec PICC 13

Nos faltara anadir algunos elementos mas para ver el funcionamiento de forma mas correcta(LOGICSTATE).

Para depurar el programa no tenemos mas que pulsar la tecla PAUSE de la barra de estadoy podremos ejecutar paso a paso las instrucciones, examinar la memoria, los registros, nuestrasvariables, etc. Todo esto se selecciona en el menu Debug.

Page 14: proteus y mplab

14 Configuracion de Proteustm para usar el compilador PICC

Al tiempo que se ejecutan paso a paso las instrucciones, el esquema se actualizara encendiendoy apagando los LEDs conectados, funcionando los instrumentos virtuales colocados, los displays,etc.

1.5. Configuracion de Proteustm para usar el compilador PICC

Para poder utilizarlo con Proteustm se debe hacer lo siguiente en el Menu: Source ⇒ DefineCode Generation Tools. Se crea una nueva entrada (PICC) que se rellena como sigue:

Page 15: proteus y mplab

Capıtulo 1. Practica: Proteus, MPLab y Hitec PICC 15

Entre las opciones marcadas para el compilador (Version 8.02PL1) estan-ASMLIST. Genera un fichero de listado en ensamblador (.LST).

-MPLAB. Compilacion y depuracion compatible con MPLAB. Genera los ficheros *.cof que vamos a emplear.

-V. Compilacion con mensajes.

-16F88. Decidimos para que microcontrolador queremos que se compile. Esto habra que modificarlo en cadaproyecto ya que no se guarda con el esquematico.

-O -Zg9. Compilacion optimizada y optimizacion global. Si no depura bien se puede probar a eliminar estaopcion.

-O %2. Especificamos el fichero de salida.

-Eerror.txt. Especificamos el fichero (error.txt) donde se escribiran los mensajes de error. Este fichero lodeberemos visualizar para comprobar los errores.

-ICD. Le decimos al compilador que queremos usar la prestacion del depurador en circuito de Microchip quereserva 256 posiciones den la parte alta de la memoria de programa y algunas en la RAM. Con esto permitimosel uso de un programa bootloader que permitira grabar el circuito sin necesidad de extraerlo y usar el grabador.

Crearemos un nuevo fichero fuente segun el listado:1 #include <pic.h>2

3 void main()4 {5 TRISA=0xFF; // PORTA todo entradas6 TRISB=0x00; // PORTB todo salidas7 ANSEL=0X00; // PORTA digital8 while(1) // Bucle infinito9 {

10 PORTB = (PORTA&0x1F) + 2; // Saco lo que entra + 211 };12 }

y le asignaremos como compilador el que acabamos de definir. Para compilar lo haremosde la forma habitual. Si da un error generico y no aparece en el directorio de trabajo el ficheroerror.txt el problema es que ha habido un error al ejecutar el comando y por tanto habra querevisar la linea introducida en el campo Command Line:.

%1 -ASMLIST -MPLAB -V -16F88 -O -Zg9 -O%2 -Eerror.txt -ICD

Page 16: proteus y mplab

16 Configuracion de Proteustm para usar el compilador PICC

El fichero a incluir en el microcontrolador sera, si se desea, el *.hex que sera el empleado des-de el programa grabador (ICProg), pero si se requiere la depuracion en lenguaje C se debera em-plear el fichero *.cof. Con esto estaremos preparados para depurar nuestras aplicaciones escritasen C con Proteustm .

Si se incluye en el microcontrolador el fichero *.cod se vera a la vez el codigo C y el ensam-blador generado aunque la depuracion se hara a nivel ensamblador.