curso de pic (saber electronica)(1)

Upload: rous-lopez-victoria

Post on 05-Apr-2018

249 views

Category:

Documents


9 download

TRANSCRIPT

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    1/32

    Q U ES UN PIC? Los circuitos integrados programables (Program-

    mable Integrated Circuits = PIC) son componentes su-mamente tiles en la Electrnica de Consumo. An cuan-do son conocidos desde hace ms de veinte aos, exis-ten en la actualidad nuevos tipos que cumplen con unaserie de requisitos y caractersticas sumamente tiles.Como una primera aproximacin podemos definir a unPIC como un chip que me permite obtener un circuito in-tegrado a mi medida, es decir puedo hacer que el PIC secomporte como un procesador de luminancia o un tempo-rizador o cualquier otro sistema mediante un programaque le grabo en una memoria ROM interna.

    Los microcontroladores PIC son en el fondo procesa-dores similares a otros tipos, como por ejemplo la familiade los microprocesadores X86, 80486, Pentium y muchosotros que usan una arquitectura interna del tipo Von Neu-mann. En este tipo de arquitectura los datos y la memo-ria del programa se encuentran en el mismo espacio dedirecciones.

    En realidad un microprocesador y un microcon- trolador no son la misma cosa. Los PICs son micro- controladores, es decir, una unidad que posee en su interior al microprocesador y a los elementos indis- pensables para que pueda funcionar como una mini- computadora en un solo chip.

    Un microprocesador es solamente la unidad centralde procesos o CPU, la memoria, los puertos y todos losdems perifricos son exteriores. La programacin de unmicroprocesador es, por lo tanto, una tarea compleja por-que deben controlarse todos estos dispositivos externos.

    Un microcontrolador integra la CPU y todos los peri-fricos en un mismo chip.El programador se desentiende

    de una gran cantidad de dispositivos y se concentra eprograma de trabajo. Esta circunstancia da lugar a ugran prdida de tiempo porque los datos tienen que retirados de la memoria y llevados a la CPU (Centralcessor Unit) y viceversa. Esto significa que la computra dedica la mayor parte del tiempo al transporte de tos de ida o de vuelta, en lugar de usar este tiempo ptrabajar sobre los datos.

    Los PICs emplean un conjunto de instrucciones depo RISC (Reduced Instruction Set Computer). ConRISC se suele ejecutar la mayora de las instruccioncon un solo pulso del clock. Con las instrucciones quusan en otros equipos del tipo CISC (Complex InstruSet Computer), se logran instrucciones ms poderospero a costa de varios ciclos del clock. En el bien condo procesador 68HC11 de Motorola se requieren a vehasta 5 ciclos del clock para ejecutar una instruccin

    A los fines prcticos nos vamos a referir a los mi

    controladores como bloques que poseen una memoria

    Curso de PICs paraEstudiantes y Aficionados

    Arquitectura de los PICsBases Generales

    Sepa qu es un PIC, cmo se compone y para qu puede utilizarlo.

    Figura 1

    PIC p ara Estud iante s y A ficio nad o s 1

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    2/32

    programa que es el lugar donde deben alojarse los datosque le indiquen al chip qu es lo que debe hacer;una me-moria de datos donde ingresen las seales que debe pro-cesar el programa, una unida aritmtica y lgica donde sedesarrollen todas las tareas, una unidad de control que seencargue de supervisar todos los procesos y puertos deentrada y salida para que el PIC tenga contacto con el ex-terior (figura 1).

    Un microcontrolador como cualquier circuito integra-do analgico tiene entradas, salidas y algunos compo-nentes exteriores necesarios para procesar las sealesde entrada y convertirlas en las seales de salida (figura2). El 16F84 requiere un cristal con dos capacitores y co-mo mnimo un resistor para el reset. Por supuesto nece-sita una tensin de fuente de 5V (VDD) aplicada con res-pecto al terminal de masa (VSS). Posee dos puertos desalida, el A y el B, cuyos terminales son marcados RA0 al

    RA4 y RB0 al RB7. Estos puertos pueden ser programa-dos como de entrada o de salida. El terminal 4 opera co-mo reset pero tambin cumple funciones de carga de me-moria de programa cuando es excitado con pulsos de15V. El terminal RA4 (pata 3) tambin tiene funciones co-mo entrada de un temporizador y RBO (pata 6) cumpletambin funciones como entrada de interrupcin.

    Ahora bien, la mayora de los microcontroladores(sean de Microchip, o de National, Motorola, Philips, etc.)se comportan de forma similar, por ello nos vamos a re-ferir a los microcontroladores PIC16F84 cuya arquitectu-ra interna puede observarse en la figura 3.

    Observe primero los bloques externos. Existe un cris-tal que se conecta en OSC1 y OSC2 para generar elCLOCK del sistema.Luego una seal de entrada llamadaMCLR negada, que es un nombre de fantasa para nues-tro conocido RESET (debido a que esa pata tiene un do-ble uso) y, por ltimo, dos puertos paralelos de I/O (entra-da o salida) llamados puerto A y puerto B. Una de las pa-tas del puerto A puede ser utilizada como entrada de in-terrupciones (esta pata especial hace que el microproce-sador deje de realizar la tarea que estaba ejecutando ypase a realizar otra tarea alternativa; cuando la terminavuelve a su programa original).

    Analicemos el bloque ms grande (temporizadores),en ste observamos un grupo de bloques dedicados amejorar el funcionamiento pero sin influir directamente enel flujo de seales. Vemos un temporizador de encendido,

    Estruc tura d e un PIC

    2 PIC p ara Estud iante s y A ficion ado s

    Fig. 2

    Fig. 3

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    3/32

    un temporizador de arranque del oscilador de CLOCK, uncircuito de reset y un circuito llamado de vigilancia oWATCHDOG. Los dos primeros bloques procuran unarranque ordenado para no producir una carga al mismotiempo sobre la fuente. Por ltimo, existe un circuito conun nombre curioso: perro guardin. Su funcin es estarvigilante el mximo de tiempo que tarda el microprocesa-dor en completar su programa (o mejor sera decir, la de-rivacin ms larga de su programa) y en caso de superar-se ese tiempo, provocar un reset automtico porque elmicroprocesador se qued trabado en alguna parte de suprograma. Tambin se dice que el microprocesador sequed colgado o congelado.

    Este bloque de circuitos no trabaja independiente-mente sino que requiere conexiones al exterior y al inte-rior del dispositivo.Por ejemplo, no siempre son utilizadosy es el programa quien determina su utilizacin y ademsajusta sus parmetros.Esto se realiza a travs del bloquede control o decodificador de instrucciones.

    Analicemos ahora la seccin de arriba a la izquierdaen donde observamos la memoria de programa, el conta-dor de programa, el registro de instrucciones y la pila oSTACK de 8 niveles. Cuando hablamos de registros nosreferimos a pequeas unidades de memoria transitoria,construida por lo general con un registro de desplaza-miento como los analizados en el rey micro. Son memo-rias voltiles que se utilizan para guardar informacin porun tiempo mnimo, con el fin de realizar una operacincompleja de varios pasos.

    El contador de programa es el responsable de que elmicroprocesador vaya analizando las instrucciones en or-den ascendente. Este guarda el nmero de instruccin enel STACK y la instruccin misma la pasa al registro de ins-trucciones desde donde se enva al resto del microproce-sador. El STACK es, en realidad, una pila de registros (ennuestro ejemplo hay 8), debido a que el programa puedetener derivaciones (en la jerga LOOPS, rulos o subpro-

    gramas). Cuando se termina de ejecutar un loop se debevolver al mismo punto del programa en donde se habaproducido la bifurcacin y eso es posible porque ese n-mero de instruccin qued guardado en uno de los regis-tros de la pila. Es comn que un loop tenga, a su vez, unloop secundario y cuando se ejecuta ese loop secundariose debe volver al mismo punto del loop primario, eso seconsigue con guardar ese nmero de instruccin del loopsecundario en otro registro de la pila.

    Analicemos ahora la seccin inferior derecha. En esesector se ubican los bloques responsables de efectuar

    operaciones matemticas y lgicas binarias; recordemosque el nombre ALU proviene de Aritmetic Logic Unite

    (unidad arimtica y lgica). En este sector es impresdible utilizar un registro ya que una operacin aritmo lgica siempre se efecta entre dos nmeros. Los meros binarios que deben procesarse se toman de la mmoria de datos, el primero se acumula en el registrotrabajo o registro W (de Work = trabajo) el segundo presente en el instante en que se invoca la memoria datos. Como las operaciones pueden ser encadenada(cuando el resultado sirve como operando de la sigute operacin, tal como el caso de un producto) el regW tiene un retorno a la ALU.

    Vemos adems que la ALU est comandada por bloque MUX (MUltipleXador). En efecto, la ALU rque se le enven nmeros para procesar que le llegudesde la memoria de datos, pero antes se la debe predponer para que efecte la operacin requerida (compcin, rotacin de dgitos, etc.).

    El registro de estado o estatus colabora durante loperaciones matemticas. Piense cmo opera Ud. parealizar una resta: primero ubica el primer nmero, lel segundo y despus comienza a analizar los bits mesignificativos (las unidades), pero si el nmero de ares menor que el nmero de abajo, entonces toma presdo de la columna de las decenas, luego debe recordar to porque el nmero de arriba en la columna de las denas se redujo en una unidad. En realidad, aunque se tte de una operacin entre dos nmeros su ejecucin quiere guardar lo que se llama acarreo en otro registrste no es otra cosa ms que el registro STATUS.

    El PIC16C84 contiene adems de todo lo visto umemoria RAM de registros que puede ser llamada deel registro de instruccin a travs de un multiplexadodirecciones. Esta seccin slo se utiliza en desarrolavanzados.Ahora bien, un microcontrolador sin progrno sabe hacer nada, es como un nio recin nacido; tne algunos reflejos condicionados como el de succque le permite alimentarse pero no sabe hacer ms q

    eso.Nosotros deberemos ensearle a realizar accionelo vamos a hacer como a un beb, paso a paso.Su capcidad de aprendizaje es enorme y sumamente variadavamos a ensear a llorar a intervalos regulares, a encder luces, a sumar, a restar, etc.

    Ensearle significa programarlo y eso se realiza cuna plaqueta de programacin que depende de cadmarca y modelo de microcontrolador. Antiguamentemicroprocesadores tenan una ventanita transparenteera necesario exponerlos a la luz ultravioleta para bosu memoria e introducir un programa nuevo.Actualm

    cuentan con memorias que no tienen este requisito. Bta con cargarlos con un programa para que se borre

    Estruc tura d e un PIC

    PIC p ara Estud iante s y A ficio nad o s 3

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    4/32

    anterior. Esto significa que, con el mismo integrado, po-dremos construir diferentes dispositivos que realicen fun-ciones totalmente distintas unas de otras.

    LAM EMORIA DE P ROGRAMA

    Es una memoria EEPROM, es decir, de lectura so-lamente (ROM = Read Only Memory) que se programapor tensin (no necesita luz ultravioleta); es decir quebasta con introducir los datos con cierto nivel de tensinpara que stos borren el programa anterior y grabenuno nuevo.

    Por qu esta memoria se llama ROM, si se pueden grabar datos sobre ella?

    Se llama ROM porque para grabarla se debe conec-tar el PIC al programador; luego de que el PIC coloca es-tos datos en la plaqueta del dispositivo, slo pueden serledos, ya que entonces forman el programa del PIC.

    Esta memoria (figura 4) tiene una longitud de 1 Kbytecon palabras de 14 bits. Digamos que tiene un ancho de14 bits y una altura de 1.000 Bytes o que es una memo-ria de 1.000 x 14. Observe que los nmeros de instruc-cin en hexadecimal van desde

    el 000 al 3FF, lo cual implicaque existen 1.040 posicionesde memoria, valor obtenido em-pleando la frmula:

    3 x 162+16 x 161+16 x 160

    Observe que dos de las po-siciones de memoria tienen lasindicaciones vector de reset yvector de interrupcin.

    Eso significa que, cuandose provoca un reset, el micro-

    procesador vuelve a la posi-cin 000 del programa y cuan-do se produce una interrup-cin, a la posicin 004. Estosretornos forzados deben serconsiderados al disear elprograma del microprocesa-dor; es decir que el reset seproduce porque la seal exter-na pone el contador de pro-grama en 000 y todo el progra-ma se reinicia. En cambio,

    cuando ingresa una seal por la pata de interrupcin elcontador de programa va a 004 y la accin que, en gene-ral ocurre, es que se comienza a leer un subprogramaparticular.Cuando este subprograma termina, el contadorde programa recupera el nmero que tena en el momen-to de arribar la interrupcin.

    LAM EMORIA DE D ATOS

    La RAM (Random Acces Memory = memoria de ac-ceso aleatorio, figura 5) es una memoria de lectura y es-critura de 128 posiciones pero que slo tiene implemen-tados las primeras 48 posiciones (desde 00 a 2F en he-xadecimal). De estos 48 registros, los primeros 12 son fi- jos y cumplen un propsito determinado, en tanto quedesde el 13 hasta el 48 son registros de propsito gene-ral, en donde el programa puede indicar que se almace-ne un dato para ser tomado ms tarde.

    Los Puertos del PIC

    El PIC16C84 tiene dos puertos paralelos de entrada

    Estruc tura d e un PIC

    4 PIC p ara Estud iante s y A ficion ado s

    Fig. 4

    Figura 5

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    5/32

    o salida: el puerto A de 8 patas y el B de 5 patas. Ca-da pata puede ser predispuesta por el programa paraoperar como de entrada o de salida. Cada pata tiene unresistor de pull-up (resistor conectado a fuente) internoque puede ser desconectado mediante el programa. Es-tos resistores se desconectan automticamente si unapata se predispone como pata de salida debido a que lassalidas ya tienen posibilidad de entregar corriente desdefuente con un transistor.Todos los resistores de pull-up seconectan o desconectan al mismo tiempo (no existe uncomando que los conecte independientemente).

    Como puerto de salida, una pata puede tomar 25mAdel circuito o entregar 20mA al mismo, sin embargo, en elpuerto A slo se pueden consumir 80mA en total o en-tregar 50mA, esto significa que slo algunas patas pue-den trabajar al mximo porque si todas lo hicieran (y son8) el consumo total sera de 25 x 8 = 200mA.El puerto Btiene otras caractersticas mximas, ya que en total pue-de tomar 150mA o entregar 100mA.Como vemos, las sa-lidas admiten suficiente carga como para alimentar direc-tamente a un led (figura 6).

    Los puertos no utilizados siempre se deben conectara la fuente de 5V a travs de un resistor de 10k debidoa que se trata de un dispositivo CMOS que, de otro mo-

    do, podra deteriorarse por captacin electrosttica (figu-ra 7).

    La pata 3 perteneciente al puerto Apuede ser configurada como de entrada- /salida o como de arranque de un tempo-rizador/contador (figura 8). Cuando seprograma como entrada esta pata fun-ciona como un disparador de SCHMITTo Schmitt trigger ideal para reconocerseales distorsionadas o con crecimien-to lento. Esta misma pata tambin tieneuna caracterstica distinta cuando operacomo salida.Ella es la nica que trabajaa colector abierto, es decir, que no pue-de emplearse como fuente, en este caso

    siempre se utilizar un resistor externo.

    E LC LOCK

    Los PIC poseen un oscilador configurable por proma de caractersticas muy amplias.Cuando no se requre mucha precisin se puede trabajar con un osciladoRC conectado segn la figura 9.

    Para circuitos querequieran una granprecisin se puede tra-bajar con un cristal de

    frecuencia baja, mediao alta (figura 10). Co-mo mximo elPIC16C84 puede tra-bajar con un cristal de10MHz. Internamentela frecuencia del cristalse divide por 4, por lotanto, es muy comn lautilizacin de un cristal de 4MHz para obtener un CLinterno de 1MHz que garantiza que cada instruccin

    re exactamente 1mS. Para temporizadores de perolargo se utilizan cristales de baja frecuencia.

    Estruc tura d e un PIC

    PIC p ara Estud iante s y A ficio nad o s 5

    Fig. 6

    Figura 7

    Figura 8

    Figura 9

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    6/32

    El Reset

    El PIC se resetea cuando la pata 4 (MCLR negada)se pone a potencial bajo. Para simplificar el circuito de re-set el PIC posee un temporizador interno que permiterealizar un reset automtico cuando se aplica tensin de5V. En estos casos el circuito externo de reset slo impli-ca el uso de un resistor de 10k entre la pata 4 y fuentetal como se muestra en la figura 11.

    En muchos circuitos es necesario realizar un resetmanual y para elloexisten dos posi-bilidades, una esutilizar slo eltemporizador in-terno (por progra-ma) y la otra esagregar una cons-tante de tiempoexterior como semuestra en la fi-gura 12. En el se-gundo circuito C1

    provee un retardo alencendido o posterioral pulsado de resetporque C1 se cargarlentamente a travsde R1 con una cons-tante de tiempo de22k x 10F =220mS.

    El resistor R3 limi-ta la corriente dedescarga de C1 a

    valores compatibles con sus caractersticas de corrientede pico mxima.

    D1 descarga a C1 cuando la tensin de fuente decaepara permitir un reset inmediato cuando la fuente se apa-ga y se enciende en rpida sucesin. R2 limita la corrien-te de reset, tomada desde el microprocesador. Este se-gundo sistema se suele utilizar cuando se requiere un re-seteado remoto a travs de varios metros de cable quepodran captar zumbido (C1 reduce la impedancia del cir-cuito de reset).

    Estruc tura d e un PIC

    6 PIC p ara Estud iante s y A ficion ado s

    Fig. 10

    Fig. 12

    Figura 11

    Programas Cargadores de PICsHardware y Software para Cargar Microcontroladores

    Tenga circuitos gratuitos para cargar programas en la memoria de un PIC.

    I NTRODUCCIN Para que un PIC funcione como nosotros queremos

    es preciso cargarle un programa en la memoria de pro-grama.El programa debe estar en un lenguaje compren-sible por el chip o sea un lenguaje de mquina en cdigo

    binario aunque en realidad al PIC debemos introducirleun programa en cdigo hexadecimal e internamente loconvierte a binario para realizar su interpretacin.

    El programa que debemos cargarle al PIC en cdigohexadecimal tiene que tener la terminacin hex.

    Sin embargo, normalmente se debe escribir editar el

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    7/32

    programa en un lenguaje entendible por el usuario, nor-malmente conocido como assembler. Los PIC basan suprogramacin en un set reducido de instrucciones quepermiten editar el programa generando un archivo conextensin asm.

    Existen programas que se encargan de traducir elprograma escrito en lenguaje assembler (asm) a progra-ma escrito en lenguaje de mquina (hex); a estos progra-mas se los denomina traductores o ensambladores.

    Por lo tanto, para escribir un programa y cargarlo enun PIC precisamos:

    Un utilitario o programa que nos permita escribir el juego de sentencias a cargar en la memoria de programa del PIC. Este utilitario es un editor y como ejemplo tene- mos el MPLAB.

    Un utilitario o programa que nos permita traducir el programa escrito en assembler a lenguaje de mquina para que podamos cargarlo en el PIC.A ese programa se lo denomina ensamblador y como ejemplo tenemos al MPASM.

    Un utilitario para cargar el archivo que tiene el pro- grama en lenguaje de mquina (archivo con extensin hex) en la memoria del PIC. A estos programas se los de- nomina cargadores y como ejemplo tenemos al NOPPP,al PIC PRO y a tantos otros, muchos de los cuales men-

    cionaremos ms adelante.Pero tambin existen otros utilitarios que permiten si-

    mular y emular un programa para ver cmo se compor-ta antes de cargarlo en el PIC.

    El simulador permite detectar errores en el programa(el MPLAB permite simular) para poder corregirlos. Elemulador permite que una computadora se comporte co-mo PIC siendo las patas del puerto, las correspondientesa las del PIC.

    Esto quiere decir que si queremos hacer circuitos con

    PICs, para poder predisponerlo adecuadamente precisa-remos:

    Programa MPLAB: Para editar (escribir) un progra- ma en lenguaje assembler y as generar el archivo con extensin asm. El MPLAB tambin me permite simular el funcionamiento del programa para detectar errores y corregirlos.

    Programa MPASM: Para ensamblar o convertir el archivo asm en archivo hex con el objeto de cargarlo en el PIC.

    Programa NOPPP: O cualquier otro cargador que permita ingresar el archivo con extensin hex en la me-

    moria de programa del PIC. Tambin se puede emplear cualquier otro cargador, hasta iuncluso se podran cargar los datos manualmente, tal como veremos oportuname- nte. Todos los programas cargadores precisarn de un circuito elctrico o hardware para poder realizar la fun- cin de carga.

    LOS C ARGADORES DE PIC S Dijimos que un cargador de PIC debe poseer por

    lado el circuito que permita cargar el programa desdecomputadora (hardware) y el programa que permita nejar a dicho circuito para realizar la operacin de c(software). El circuito debe ser muy simple.

    Vamos a suponer que no tenemos un dispositivo pgramador a nuestra disposicin; es decir que deberemarmar tambin un dispositivo programador de nuesPICs que se conecte al puerto paralelo de una PC puerto de impresora).

    Nuestra intencin es que construya un dispositivo ra programar PIC que sea muy sencillo de modo quepueda armar en el mismo protoboard y que se conecta la PC por intermedio de una manguera.

    Como todos sabemos, un dispositivo para una P(hardware), siempre necesita un programa que lo conle (software).Nuestra intencin es que Ud. no compreda ms que lo imprescindible; as que vamos a usarsoftware gratuito llamado NOPPP que puede bajarseInternet. Ud puede bajar este programa, el MPLABMPASM y otros programas y utilitarios, siguiendo losos dados en la pgina de contenidos especiales de Sber Electrnica y, lo que es ms importante, en formatalmenteGRATUITA.

    Para ello dirjase a: www.webelectronica.com.ar(sino tiene Internet o no sabe cmo se hace, lleve este crito a cualquier cybercaf y pdale al encargado qu

    baje los programas). Haga doble click sobre el copassword y luego digite la claveaiwa15.Recuerde que cuando decimos programar nos es

    mos refiriendo a disear un programa para un PIC y persona que realiz ese trabajo la llamamos progrador; cuando decimos cargar nos estaremos refirienllenar con datos la memoria de un PIC y el dispositivrealiza esta funcin lo llamaremos cargador de PIAunque parezca increble nuestro amplio idioma no una palabra precisa que diferenciara a la accin del arato y se suscitaban graves confusiones al leer, por a

    tan simple. En realidad, s estaba acuado un trmprctico para el dispositivo: quemador de PICs, pe

    Los Cargadores de PICs

    PIC p ara Estud iante s y A ficio nad o s 7

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    8/32

    mismo slo se puede aplicar a aquellos PICs que slo sepueden grabar una sola vez. Por otro lado, el trmino sepuede confundir con un dispositivo que funcionando malquema a los PICs en lugar de cargarlos, tal como el au-tor mencionar con respecto a un programador comer-cial.

    Navegando por Internet es posible encontrar grancantidad de programas cargadores de PICs, nosotros ha-remos referencia a los cargadores:

    * Cargador NOPPP * Cargador PROPIC * Cargador Universal de PICs y EEPROM * Cargador PIC800 * Cargador PP84

    Obviamente, todos estos circuitos puede bajarlos li-bremente pudiendo tener ms informacin y los enlacesa las pginas web de cada uno de estos cargadores en lapgina de contenidos especiales que hemos dado ante-riormente. Estos cargadores sirven para ser utilizados endiferentes tipos de PICs a saber:

    NOPPP es un programa de uso libre ampliamente di- fundido que sirve para cargar PICs del tipo 16C84, 16F83 y 16F84, pero tambin se dn otros cargadores con sus respectivos programas, que sirven para otros componen- tes.

    PICPRO es un programador avanzado en relacin con el NOPPP y sirve para ser montado cuando no se quieren correr riesgos con la PC que se est utilizando para cargar PICs y cuando se desea tener un trabajo li- bre de errores (el NOPPP es un programa para aprendi- zaje).

    El Programador Universal sirve para programar: 12C508, 12C509, 12C67X, 16C55X, 16C61, 16C62X,16C71, 16C71X, 16C8X, 16F8X, 16F873/4/6/7,

    16C73/74/76/77. Tambin programa memorias EEPROM de la serie 24LCXX.PIC800 es un programador para 16C84, 16F84,

    16F873/74/76/77.PP84 es un programador sencillo del tipo NOPPP de

    buenas prestaciones.

    Un circuito con PIC siempre se compone de dos sec-ciones. El circuito del dispositivo deseado y los necesa-rios componentes perifricos imprescindibles para que elPIC funcione, a saber clock y reset (la primer seccin

    cambia con cada proyecto, en tanto que la segunda pue-de ser comn a muchos proyectos).Ambos circuitos peri-

    fricos tienen diferentes opciones: el clock puede ser acristal cuando se requiera precisin, o a RC (como ennuestro caso) cuando slo se requiere que la secuenciade encendido tenga un tiempo aproximado. En cuanto alreset, ste puede ser externo con un pulsador o interno yautomtico, cada vez que se conecta la alimentacin de5V.

    Una vez definidas estas cosas se puede dibujar el cir-

    cuito completo, tal como lo mostramos en la figura 13.Observemos primero la seccin perifrica imprescin-

    dible. El clock est generado por un oscilador RC realiza-do con el PIC, R1 y C1 (elegidos para obtener una se-cuencia completa que dure un segundo aproximadamen-te), en tanto que el reset se realiza en forma automtica,cada vez que se enciende el equipo, por intermedio deR6. Nuestro circuito de aplicacin no puede ser ms sen-cillo, slo utilizamos cuatro LEDs sobre las patas RA0 aRA3 (puerto A tomado parcialmente) y sus correspon-dientes resistores de pull up (resistores a fuente). Nadams simple y fcil de armar en un panel protoboard.

    Qu ocurrira si compro los componentes, los armo

    y pruebo directamente el circuito? No va a funcionar porque como el PIC no est instrui-do para realizar ninguna funcin y los LEDs van a perma-necer todos encendidos. El PIC tiene una memoria inter-na que debe cargarse con nmeros binarios de 8 dgitos;exactamente tiene 48 posiciones de memoria (numera-das desde el 0 hasta el 2F en nmeros hexadecimales),en donde se le indicar qu tarea debe realizar o qu da-tos fijos debe cargar para ejecutar esas tareas.

    En nuestro caso activar transistores internos en algu-nas patas del puerto A (predispuestas como salidas) de

    modo de generar cortocircuitos momentneos a masa enforma secuencial.

    Los C a rg a do re s de PICs

    8 PIC p ara Estud iante s y A ficion ado s

    Fig. 13

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    9/32

    El dispositivo con un zcalo para conectar el PIC einstruirlo (cargarle los datos en la memoria de program-na) se llama genricamente Programador de PICs, pe-ro nosotros en este artculo convenimos en llamarlo Car-gador de PICs y es como un apndice de nuestra PC,conectado con un cable al puerto paralelo de la misma.

    Si la PC tiene dos puertos paralelos de salida se usa-r uno para la impresora y el otro para nuestro programa-dor, si slo tiene uno, se desconectar provisoriamente laimpresora para conectar el programador, o mejor an, seconectarn ambos dispositivos a travs de una caja se-lectora que se consigue en los negocios de computado-ras y se usa para conectar dos impresoras a la mismaPC.

    Si Ud. tiene un mnimo conocimiento sobre computa-doras, sabr que un dispositivo conectado a la PC es to-talmente intil si no est acompaado de un programainstalado en el disco rgido de la misma. En algunos ca-sos se necesitan dos programas, a saber: el driver deldispositivo y un programa de aplicacin que utilice dichodispositivo. En el caso de dispositivos que se conectan enel puerto paralelo, el programa driver no es necesarioporque dicho puerto ya est debidamente habilitado parausar la impresora. Lo que s se requiere obligatoriamen-te, es un software de aplicacin del programador quesuele proveerlo el fabricante del mismo.

    Programadores y software de aplicacin de los mis-mos hay muchos. Algunos son muy simples y econmi-cos (tan econmicos que muchos se entregan gratuita-mente por Internet, es decir que el autor regala el softwa-re y da las explicaciones para armar el hardware) y otrosson muy complejos y caros. La diferencia entre unos yotros suele ser la posibilidad de aceptar ms tipos dePICs (adems del 16C84 y 16F84 existen muchos otros)e inclusive microprocesadores o memorias de otras mar-cas.Tambin se diferencian en la velocidad a la cual car-gan el PIC; los hay de alta productividad que trabajan con

    un elevado flujo de datos y otros ms lentos que slo sir-ven para tareas de aprendizaje.En nuestro caso vamos a trabajar con un software

    que se llama NOPPP, que es absolutamente gratuito y sepuede bajar desde Internet. Este software est previstopara ser usado slo con los PIC16C84, PIC16C83 yPIC16F84 que son los ms utilizados.

    Con respecto al hardware, Ud. puede usar el que pro-pone el autor del software que es muy sencillo o usar otroque le propongo yo ms adelante y que tiene algunasventajas con respecto a una mejor forma de los pulsos de

    programacin.El NOPPP es suficientemente sencillo co-mo para implementarlo en un panel protoboard, pero co-

    mo es un hardware que deberemos usar ms adelanpara programar otros PICs conviene armarlo en forms definitiva utilizando una plaqueta de circuito imo una plaqueta ojalillada. Si Ud. slo desea armar elcuito de este artculo puede armar tanto el cargador mo el circuito de aplicacin en dos lugares distintosmismo protoboard.

    El PIC, como una memoria, tiene una pata que pdispone el dispositivo para leer o para escribir. Si la 4 del PIC est a un potencial comprendido entre 13 yV, el PIC est preparado para escribir los datos que pvienen de la PC.Si la pata 4 est por debajo de 6V, elpositivo est previsto para ser ledo.Los datos a leer ocribir se ponen/obtienen de la pata 13 del PIC con lata 12 del mismo que opera como clock.

    Aquellos que conocen el proceso de carga de daten una memoria serie, no tendrn mayores inconvente en entender la frase anterior. Para aquellos que no nocen el proceso explicamos lo siguiente:

    Un PIC se lee/escribe accediendo a las diferentes psiciones de memoria por la misma pata por la que se tienen/ingresan los datos (la pata 13). La seal primelige la posicin de memoria a ser leda/escrita, y luque esa posicin est accesible se escriben/leen los dtos. El clock que se coloca en la pata 12 sirve para icar en qu momento se debe transferir la informaciLos datos pueden estar sobre la pata 13 todo el tiemque Ud. desee, ya que no sern ni ledos ni escritos pla PC hasta que se produzca un cambio de estado (deto para bajo) en la pata 12.

    En la figura 14 mostramos las formas de seal ind

    Los C a rga d ore s d e PIC s

    PIC p ara Estud iante s y A ficio nad o s 9

    Fig. 14

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    10/32

    das por Microchip para leer/grabar un PIC.El lector observar que dentro del comando existe

    una primera seccin de 6 bits que indica la posicin dememoria a ser leda/escrita y luego la lnea de datos per-manece en estado de alta impedancia por un intervalo detiempo que depende de la operacin (durante ese tiempoel clock est apagado). Por ltimo ingresan/egresan losdatos. Las conexiones de fuente y las seales deben seraplicadas segn una secuencia predeterminada que de-be respetarse invariablemente.Los nombres de las sea-les se aclaran en la figura 15.

    A) El primer paso es colocar el PIC en el zcalo del programador con seales y fuentes a potencial de masa.

    B) Levantar la tensin de fuente VDD a un potencial de 5V 0,2V por la pata 14 (VDD).

    C) Levantar la tensin de fuente VPP a un potencial de 13V 0,3V por la pata 4 (MCLR NEGADO).

    D) Esperar en esas condiciones un tiempo superior a 1mS.

    E) Posicionar el primer dato en la pata 13 (RB7) con un potencial alto (mayor a 4 V) o bajo (menor a 1V).F) Cuando la pata 12 (RB6) pase a un estado bajo, in-

    ferior a 1V, el dato se carga en la memoria.G) Continuar cargando los datos con el mismo crite-

    rio a un ritmo tal que el dato este presente por lo menos durante 100nS.

    H) Cuando todos los datos fueron cargados se debe esperar 1 segundo.

    I) Desconectar la fuente de 13V.J) Desconectar la fuente de 5V.

    K) Retirar el micro grabado.

    Por sobre todas las cosas debe respetarse el cri-terio de no sacar un PIC de su zcalo con las fuentesconectadas, porque puede desprogramarse o, peoran, daarse definitivamente.Tambin es muy impor-tante respetar las tensiones de fuente y no demorarla llegada de datos, luego conectar VPP (porque po-dran cargarse datos falsos por interferencias electro-magnticas).

    Como usted puede observar de la descripcinanterior la entrada RB6 es utilizada como clock y laRB7 como entrada de datos en una clsica operacinde transferencia de datos en serie.

    Observe que hay un tiempo entre el momento enque MCLR NEGADO sale de la condicin de resethasta que aparece el primer dato o el primer pulso declock.Tambin hay un tiempo mnimo para la perma-nencia de un dato en la entrada (la representacin

    usada para un dato significa que el mismo puede ser altoo bajo, depende del bit que se est grabando).Lo que nohay es un tiempo mximo pero evidentemente cuandomayor es este tiempo ms lenta ser la carga del progra-ma.

    El tiempo ms adecuado depende de factores talescomo el largo del cable utilizado para conectar el progra-mador a la PC. Si el cable es largo, los pulsos tienden adeformarse y atenuarse, sobre todo cuando son de cortaduracin (100nS equivalen a una frecuencia de 10MHz).Para evitar problemas, todos los programadores trabajana velocidades inferiores a la mxima, sobre todo conside-rando que la capacidad de memoria no es muy grande ypara el uso no comercial no son imprescindibles grandesvelocidades de grabacin.

    Un cargador de PIC debe permitir tambin una ope-racin de verificacin para cuando el usuario tiene dudasrespecto de la condicin de un determinado PIC (vaco olleno). Solo que el programa almacenado debe ser invio-lable en caso de que la persona que lo carg as lo haya

    dispuesto. Esto se llama predisponer el PIC y no slo selo predispone para hacerlo inviolable, sino que ademsse determinan otros importantes parmetros de funciona-miento como por ejemplo que est predispuesto para unclock a RC o que contenga un temporizador de reset in-terno.

    Las predisposiciones no forman parte del programadel PIC aunque pueden incluirse junto con ste. Algunoscargadores de PICs preguntan sobre la predisposicinantes de grabar el PIC. La pregunta sobre la predisposi-cin deseada aparece en la pantalla de la PC y uno elige

    de un men de opciones. En otros casos, las predisposi-ciones se escriben antes del programa en una secuencia

    Los C a rg a do re s de PICs

    1 0 PIC p ara Estud iante s y A ficion ado s

    Fig. 15

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    11/32

    perfectamente predeterminada que debe respetarse a ul-tranza. Las predisposiciones son tres y las vamos a ana-lizar por orden:

    a) La prohibicin de lectura.El PIC se programa pe-ro el programa no puede ser ledo. Cada tanto aparece in-formacin en Internet sobre alguna empresa dedicada aleer PICs protegidos, sin embargo, an no he conseguidoleer ningn PIC protegido. Aclaremos que el programaprotegido no se puede leer, pero el PIC se puede volvera grabar. El autor escuch tambin una especie que diceque el PIC16Fxx fue creado por una supuesta filtracinen el secreto del programa de los PIC16Cxx, pero el au-tor no tiene pruebas de la certeza de esta noticia.

    b) Habilitacin del timer de reset.En el pinup delPIC se puede observar que la pata llamada MCLR nega-do (4) tiene un doble uso. En principio sirve para predis-poner el PIC en grabacin o lectura, como ya fuera co-mentado; pero cuando su tensin cae por debajo de 1V,el PIC se resetea y comienza la lectura del programa porel principio. Este tipo de reset se llama reset a pulsador yse utiliza para provocar alguna accin como, por ejemplo,comenzar una secuencia de encendidos de LEDS o en-cender un LED por un tiempo predeterminado. Este mo-do de funcionamiento requiere una accin externa de re-set (apretar un pulsador). La misma accin de reset sepuede conseguir en forma automtica cada vez que seconecta la fuente de 5V. Este modo de trabajar slo re-quiere que la pata MCLR (pata 4) est permanentemen-te conectada a 5V (con un puente o un resistor de 1k) yque el PIC est predispuesto con el Power-up Timer enON (temporizador de encendido conectado). Cuando eltemporizador est habilitado, luego de conectar la fuentede 5V, comienza un conteo interno (que dura 72ms) du-rante el cual el PIC pone todas sus compuertas internasen cero (reset) y recin despus comienza a efectuar lospasos que le indica el programa. A propsito, el nombre

    MCLR proviene de MASTER CLEAR (literalmente, lim-piador maestro).c) Circuito de vigilancia (perro guardin).En reali-

    dad el PIC tiene un reset extra que opera luego de uncierto tiempo si no se realiza la operacin final del progra-ma. Es como una especie de rutina automtica de des-congelamiento que opera en caso de falla del programa.Eventualmente puede ingresar algn pulso de energa alsistema que enve al programa a un loop (rizo) eterno(una derivacin o camino cerrado sobre s mismo). Unavez que el programa ingres en ese camino no puede sa-

    lir de l salvo que se produzca un reset. Si pasa un tiem-po considerable sin que se llegue a la ltima sentencia

    del programa, el PIC analiza su predisposicin y sWatchdog timer (literalmente perro guardin) est hatado provoca un reset programado. En los programms simples y donde se producen loops infinitos a prsito (de los que slo se sale tocando un pulsador), suele dejar el perro guardin desconectado para evitarfuncionamiento errtico. Cada cargador de programtiene un software diferente y esto implica que las preposiciones anteriores, tambin llamadas fusibles de pdisposicin se accionen con sentencias diferentes qsern explicadas ms adelante.

    E LC ARGADOR NOPPP El NOPPP es un software para un cargador muy s

    ple y efectivo. Realmente no tiene defectos importantnos permite cargar los PIC 16C83, 16C84 y 16F84 enma muy econmica ya que el hardware correspondieslo requiere dos diodos rpidos de seal, un BC548resistores, adems de una fuente regulada doble de 15V y un conector para el puerto paralelo de la PC. Madelante veremos el circuito completo pero para entenel funcionamiento del cargador de programas nada mque el circuito simplificado de la figura 16. A propsnombre del software proviene de las iniciales de NOce Programer Pic, es decir:programador para PIC sinzas en alusin a los muy pocos componentes que requre. Las patas de comunicacin con el puerto paralelola PC estn indicadas como 1J1, 2J1, etc, ya con J1 signamos al conector de entrada y el nmero inicial

    El Cargador NOPPP

    PIC p ara Estud iante s y A ficio nad o s 1 1

    Fig. 16

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    12/32

    ca a qu pata se dirige el cable (tambin incluimos el co-lor del mismo). Los datos (oscilando de 0 o 5V) ingresanen sucesin por el cable 14J1 y, atravesando el resistorR2, llegan a la pata 13 del PIC. La pata 13 pertenecienteal puerto B se comporta como una pata de entrada dedatos en tanto el cable 2J1 se encuentra en el estado ba- jo es decir que la pata 4 Vpp est a un potencial de 13Vaproximadamente.

    Al mismo tiempo, el cable 17J1 se manda a potencialde masa para que los datos entrantes no salgan a su vezpor el cable 11J1; de este modo, el diodo D1 no permiteque el potencial del cable supere la tensin de barrera deldiodo (es decir que el diodo D1 opera como una llave).Como ya sabemos los datos deben ser validados por me-dio de un cambio de estado de la seal de clock que in-gresa desde la PC por el cable 1J1.

    Frmese una imagen mental del flujo de datos. Pien-se en la PC como si bombeara datos al PIC por el cable14J1; el PIC, para no inflarse, los devuelve por el cable11J1. En realidad, los datos ingresan por la pata 13 delPIC y se instalan en la memoria; pero a continuacin, el

    programa de carga verifica que el dato est en la posicinde memoria correspondiente y si as ocurre, se habilita lacarga del siguiente dato. La secuencia es tal que:

    A) se direcciona una posicin de la memoria,B) se graba,C) se verifica esta ltima grabacin y si es correcta,D) se habilita al programa para cargar el siguiente dato.

    De acuerdo al programa de carga, si falla la carga deun dato se puede seguir con los otros y al final se intenta

    la carga del dato que no se carg. En otros, una falla deverificacin significa que el programa debe volver a car-

    garse completo.Ahora que conoce-

    mos el funcionamientodel cargador de progra-mas NOPPP vamos acompletar el circuitocon una fuente de ali-mentacin y el conec-tor para PC (figura 17).

    Observe que lasfuentes estn confor-madas por dos regula-dores de 5 y de 12Vpero, como necesita-mos un regulador de13V, realizamos una

    pequea modificacin en el regulador de 12V; agregandolos diodos D1 y D2 la tensin de salida se incrementa aun valor de 13,2V. El otro cambio importante es el agre-gado de capacitores de filtro que, como Ud. observa,siempre se ubican de a dos:un electroltico para filtrar lasbajas frecuencias y un cermico disco para las altas fre-cuencias.

    Por ltimo se agrega un conector del tipo DB21 ma-cho para conectar el dispositivo directamente a la salidade la impresora de una PC.En el circuito dibujamos el co-nector visto por el lado de las patas de conexiones y elcdigo de colores de cable adecuado para usar un cableplano de 5 hilos (negro, marrn, rojo, naranja y amarillo)al cual se le retuerce por encima otro de color blanco queopera como masa y blindaje.Todo este circuito es suma-mente sencillo y si Ud. slo quiere conocer los PICs me-diante este manual tcnico, pero no se va dedicar a tra-bajar permanentemente con ellos, puede armarlo en unmdulo de armado sin soldaduras (protoboard) junto conel circuito de un destellador rtmico (figura 18).

    El Cargador NOPPP

    Fig. 17

    Fig. 18

    1 2 PIC p ara Estud iante s y A ficion ado s

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    13/32

    C ARGADOR U NIVERSAL DE PIC S En varias direcciones de internet aparece el circuito

    que describiremos a continuacin, adjudicndole la auto-ra a diferentes personas. La versin que reproducimoses en base al trabajo de un tal Droky deRaDiKAl ByTEs. Nuestros tcnicos hanrealizado algunas modificaciones y el resul-tado es el siguiente:

    Con este proyecto se puede realizar unprogramador para PICs y EEPROMs de laserie 24LXxx que funciona bien y requierepocos componentes externos.

    El circuito est basado en el Luddi oprogramador de JDM (vea: www.jdm.com),siendo compatible con diferentes softwarescargadores. Se ha probado en diferentescomputadoras desde un Pentium 100 has-ta un Pentium III de 850MHz sin inconve-nientes. No requiere de ningn tipo deadaptador, y en tres zcalos que dispone,podemos programar:

    - PIC12C508 /A, PIC12C509 /A- PIC12C67x - PIC16C55x - PIC16C61- PIC16C62x - PIC16C71- PIC16C71x

    - PIC16C8x - PIC16F8x - PIC16F873/4/6/7 (Modelos de 28 patillas)- PIC16C73B/74B/76/77 - EEPROMs de la serie 24LCxx

    Cargador Universal de PICs

    PIC p ara Estud iante s y A ficio nad o s 1 3

    Fig. 19

    Fig. 20

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    14/32

    En la figura 19 se muestra el circuito del cargador yen la 20 la placa de circuito impreso propuesta.

    El tamao del cargador es bastante reducido y poseebases (zcalos) para la mayora de los chips que puedeprogramar (siempre en encapsulado DIL no en TSOP,SMD ni otros formatos).

    Si bien es posible utilizar distintos tipos de softwares,hemos realizado experiencias con el italque, el desden, elpix y el icprog. Es precisamente el icprog el que permitecargar a casi todos los chips indicados y lo puede bajargratuitamente siguiendo los pasos que mencionamos an-teriormente, utilizando la clave de acceso: aiwa15.

    El programa pix se puede usar para los PIC16F8x yPIC16C8x, es rpido y permite bastantes opciones. Paralas EEPROM 24LCxx, pueden emplearse tanto el Icprogcomo el PIX .

    Para los 12C508/A y 12C509 /A lo ms seguro esusar el prog508 y el prog509 (vea los foros PSX) y que sepueden descargar de la pgina de JDM.

    La lista de materiales del cargador universal es la si-guiente:

    C1 - 22F , 16v Tantalio/Electroltico C2 - 100F , 16v Tantalio/Electroltico C3, C4 - 0,001F - Cermico

    D1,D2,D3,D4 - 1N4148 D5 - 5.1V 1/2W D6 - 8.2V 1/2W J1 - Zcalo 24LCXX 8 Patillas J2 - Zcalo PIC 18 Patillas J3 - Zcalo PIC 28 Patillas P2 - CONNECTOR DB9 Hembra Q1,Q2 - BC548B Q3 - BC558B R1 - 100k R2 - 10k R3 - 1k5

    LOS O TROS C ARGADORES : Como hemos dicho, existen muchos circuitos carga-

    dores de PICs que se pueden bajar de Internet.En la figura 21 se observa el PIC800 que es un pro-

    gramador para 16C84, 16F84, 16F873/74/76/77 que estpresentado en la web por Miguel Scapolla (www.miguelo-.com.ar).

    El PICPRO es un programador avanzado en relacincon el NOPPP y sirve para ser montado cuando no sequieren correr riesgos con la PC que se est utilizando

    para cargar PICsy cuando se de-sea tener un tra-bajo libre de erro-res (el NOPPP esun programa paraaprendizaje). Sucircuito se lo pue-de ver en la figura22. Por ltimo, elPP84 es un pro-gramador sencillo

    del tipo NOPPPde buenas presta-ciones (figura 23).

    Si desea ob-tener los progra-mas que permitanmanejar a estosc a rg a d a o r e s ,puede buscarlosen Internet o con-sultar a:[email protected]

    Los Otros Cargadores

    1 4 PIC p ara Estud iante s y A ficion ado s

    Fig. 21

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    15/32

    Los Otros Cargadores

    PIC p ara Estud iante s y A ficio nad o s 1 5

    Fig. 22

    Fig. 23

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    16/32

    I NTRODUCCIN Una instruccin es un comando, parte del programa,

    que se le aplica al PIC para que lo interprete y ejecute sucumplimiento.La instruccin se compone de una serie debits presentada en secciones o posiciones perfectamen-te delimitadas, que el procesador interpreta para cumpliruna orden deseada, quedando establecidas las variablesque se modifican.

    Dicho de otra forma, las instrucciones poseen un for-mato de acuerdo a un sistema de codificacin. El forma-to cambia de acuerdo con la operacin que se va a rea-lizar.

    Cada instruccin, para la lnea baja de los PICs tipo16C5X, consiste en una palabra de 12 bits que codificaen un solo bloque, la orden, el operador y la ubicacin delresultado o el salto (en caso de que lo hubiere). En losmicrocontroladores PICs tipo 16X84 cada instruccin tie-ne una longitud de 14 bits.

    Los bits que actan como datos de la memoriaEPROM se reciben en el decodificador de instrucciones,y operan con el contador de programa y el registro de tra-bajo W, para acceder a lugares especficos del microcon-trolador, tales como la ALU, posiciones de memoria, re-gistros, etc.

    Como sabemos, los PICs 16X84, entre otros, mane- jan un set reducido de instrucciones (35 instrucciones enlo que se denomina RISC) que presentan una codifica-cin muy particular llamada formato de la instruccin.

    Cada instruccin posee su formato y es total-mente definido por MICROCHIP.

    En la figura 24 podemos apreciar la sintaxis deuna instruccin del set.Se trata de la instruccin quesuma el contenido del registro de trabajo con el con-tenido de un registro cuya direccin est determina-da por el operador f. En esta figura, en primer lugarse observa la sintaxis, es decir, la forma en que elprogramador escribir la instruccin en el lenguajeentendible por el operador (el programa en .asm).La codificacin es el formato de la palabra que defi-ne la instruccin y que veremos en detalle luego. No-

    te que para que se complete la instruccin se nece-sita una sola palabra y un solo ciclo del contador de

    programas.Como veremos, el resultado de la operacin se guar-

    da en un sitio definido por el programador (dependiendode qu estado tome el bit d) y que esta instruccin mo-difica los bits C, DC y Z del registro de estado (STATUS).

    Esto quiere decir que cuando coloco la instruccin:ADDWF f,dEl ensamblador generar el cdigo:0001 11df ffffEn este cdigo, los seis bits de mayor peso (bits 6 al

    11 en la figura 25) definen la operacin que va a realizarla instruccin de acuerdo a lo requerido por el programa-

    El Set d e Instruccio nes

    El Set de InstruccionesManejo de las Instrucciones de un PIC

    Aprenda a manejar el set RISC de un PIC para realizar sus propios programas.

    Figura 24 Figura 24

    Figura 25 Figura 25

    1 6 PIC p ara Estud iante s y A ficion ado s

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    17/32

    dor.Aqu se define una orden que el PIC interpreta y eje-cuta sobre un operando determinado, cuya direccin labusca segn lo indicado por los 5 bits menos significati-vos (bits 0 al 4 en la figura 25).

    El bit 5 es un cdigo de reconocimiento de destino ydetermina en qu lugar se va a alojar el resultado de laoperacin.Si este bit es 0el destino de la operacin se-r puesto en el registro de trabajo (W). Si el bit d espuesto a 1 el destino ser el de la posicin de memoriadefinido por f.

    Los cinco bits de menor peso en el formato de la ins-truccin representan la direccin donde est guardado eloperando (f), que est en la memoria de datos y por te-ner cinco bits slo podemos direccionar una de las 32 po-siciones de memoria de datos.

    La mayora de las instrucciones se realizan en un ci-clo de contador de programa (ciclo de instruccin) excep-to las instrucciones de salto que necesitan dos ciclos pa-ra ejecutarla. Se determina el ciclo de instruccin divi-diendo por cuatro la frecuencia del oscilador, elegida pa-ra el funcionamiento del microcontrolador tal como se ob-serva en la figura 26.

    Es decir, la seal que proviene del oscilador externo,conectado a los pines OSC1/CLKIN y OSC2/CLKOUT delmicrocontrolador, se divide en cuatro ciclos, obtenindo-se as la seal requerida por el procesador interno pararealizar las operaciones. De esta manera se puede reali-zar la bsqueda y ejecucin de la instruccin.

    El reloj de instruccin es el ciclo interno que posee elmicrocontrolador para cronometrar el tiempo de ejecucinde las instrucciones.

    Los pulsos entrantes del reloj son divididos por 4,nerando diferentes seales denominadas Q1, Q2, Q3Q4.El estado Q1 hace incrementar el contador de proma, Q2 y Q3, se encargan de la decodificacin y ejecin de la instruccin y por ltimo, Q4 es la fase de queda de la instruccin. El cdigo se almacena en elgistro de instrucciones.

    E LS ET DE I NSTRUCCIONES DEL16X84 Vimos cmo es la estructura de una instruccin,

    zn por la cual le recomendamos que lea nuevamentcomienzo de este captulo si no entiende lo que a conuacin expresaremos.

    Los cdigos (denominados mnemnicos) que simlizan un conjunto de instrucciones, representan la taque debe hacer el microcontrolador una vez que las alice en funcin del operando.

    Un mnemnico ayuda a recordar el significado qtiene la instruccin.

    Para poder analizar al conjunto de instrucciones qconforman el set RISC, se los suele agrupar teniendocuenta el tipo de operacin que realizan, as es comque se las presente bajo cuatro posibles formas, a sab

    1. Instrucciones orientadas a registros.2. Instrucciones orientadas a bits.3. Instrucciones con literales.4. Instrucciones de control y especiales.

    En la figura 27 vemos un cuadrodonde se reproducen las instruccio-nes orientadas a registros, la figura28 muestra las operaciones orienta-das a bits y la figura 29 nos permiteconocer cules son las instrucciones

    con literales y de control.Sobre las notas a las que hace-mos referencia en dichas figuras, de-be tener en cuenta lo siguiente:

    Nota 1.Al modificar un registrode entrada/salida (E/S) con unaoperacin sobre l mismo (por ejem-plo MOVF PORTB,1), el valor utilizado es el que se encuentre presenteen las patas del PORTB. Por ejem-plo, si el biestable tiene un "1" para

    una pata configurada como entraday se pone a nivel bajo desde el exte-

    El Set d e Instrucc ion es

    PIC p ara Estud iante s y A ficio nad o s 1 7

    Figura 26 Figura 26

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    18/32

    rior, el dato se volver a escribir como un "0".Nota 2.Si se ejecuta esta instruccin sobre el TMR0

    y d=1, ser borrado el divisor de frecuencia (preescaler),si est asignado al TMR0.

    Nota 3.Si se modifica el Contador de Programa (PC CP) o es verdadera una condicin de prueba, la instruc-cin requiere dos ciclos de mquina. El segundo ciclo seejecuta como un NOPPP.

    El Set d e Instrucc ion es

    1 8 PIC p ara Estud iante s y A ficion ado s

    Figura 27 Figura 27

    Figura 28 Figura 28

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    19/32

    Pro gramaci n d e PICs

    Figura 29 Figura 29

    Programacin de PICsAprendiendo a Programar: Carga y Programacin de PICsSepa cmo es la estructura de un programa y cmo se deben utilizar las instrucciones.

    C IRCUITO DE UN E NTRENADOR En Saber Electrnica hemos

    desarrollado un entrenador paraaprender a programar y cargarPICs, este entrenador se muestraen la figura 30.

    Antes de dar los primerosejemplos es conveniente tener encuenta los siguientes conceptos:

    1)En todo programa se debedecir cul es el tipo de PIC que se

    emplear, hay que incluir sus libre-ras y configurarlo:

    Figura 30 Figura 30

    PIC p ara Estud iante s y A ficio nad o s 1 9

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    20/32

    Ejemplo:list p=16f84include __config_RC_OSC &_WDT_OFF

    2)Al escribir un programa se realizan las sentenciasen columnas.

    La primera columna se utiliza para nombrar varia-bles o colocar etiquetas. La segunda columna se utilizapara aplicar la instruccin. La tercer columna contienelos datos necesarios para que pueda ejecutarse dichainstruccin. La cuarta columna contiene datos tiles pa-ra el programador pero que no son tenidos en cuentapor el microcontrolador.

    Ejemplo:Voy a definir a la variable M en la posicin de memo-

    ria expresada en nmero decimal 26:

    1 Col. 2 Col. 3 Col. 4Col.M equ D26 ;defin a la variable M en

    ;la posicin 26.

    Mes la variable que defineques la instruccin que significa asignar o definirD 26es la posicin de memoria expresada en n-

    mero decimal.

    3)Se emplean signos para efectuar determinadasconsideraciones, por ejemplo:

    ;se emplea para colocar observaciones.El progra-ma no toma en cuenta todo lo que est en una lnealuego de dicho signo.

    :se utiliza normalmente para definir etiquetas, queson lugares a donde va el programa cuando as lo re-quiere.

    se utiliza para decir que lo que est entre ellas esel nmero y puede estar expresado en lenguaje deci-mal, binario o hexadecimal.

    . se emplea para definir un nmero en decimal.

    Ejemplo:

    R equ .28 ;defin a la variable R en la posicin;de memoria 28

    lazo: rlf R,f ;roto el contenido de R y el resultado;queda en R

    4)Un programa siempre debera comenzar con la

    instruccinorgy terminar con la instruccinend.Este manual no pretende ser un tratado de progra-

    macin y su objetivo es capacitar al estudiante y aficio-nado en el uso y carga de programa de un PIC. Si Ud.desea obtener una capacitacin completa le recomenda-mos estudiar el Curso Completo de PICs preparadopor Editorial Quark y que se compone de dos textos, unCD y un video de entrenamiento.

    P ROGRAMAS DE P RCTICASea el programa:

    ; Primer programa de prctica

    List p = 16C84 ; voy a utilizar el PIC16C84ptob equ 0x06 ; inicializo la variable ptob en

    ; la direccin 06hReset org h0 ; comienza el programaInicio movlw h0 ; cargo a W con 0

    tris ptob ; mando el contenido de W a ptobmovlw h0f ;cargo a W con el nmero binario 15

    ciclo nop ; rutina nulagoto ciclo ; vaya a ciclo

    El programa comienza con un(;), por lo tanto, lo quesigue en el rengln es tomado como un comentario. Lossignos= forman un resalte para indicar el inicio del pro-grama y ayudan a darle una distribucin agradable a lavista. El programa se lista en cuatro columnas; la primerasirve para colocar las variables que utilizaremos comoregistros y las etiquetasque son ubicaciones del progra-ma adnde se debe ir cuando el operando de una instruc-cin as lo requiera.

    En la segunda columna se coloca la instruccin y enla tercera el operando de la instruccin. La cuarta colum-

    na siempre va precedida de (;) y se utiliza para colocarobservaciones que le sirvan al programador como guapara saber qu quiso hacer o qu funcin cumple esasentencia, obviamente, al compilar esa instruccin, lasobservaciones no son tenidas en cuenta.

    List p = 16C84Es el encabezado del programa que le indica al en-

    samblador qu tipo de PIC se est utilizando para que s-te pueda reconocer qu set de instruccin debe utilizar.

    ptob equ 06Nombr a la variable ptob y la coloqu en la direccin

    Pro gramaci n d e PICs

    2 0 PIC p ara Estud iante s y A ficion ado s

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    21/32

    06 de la RAM, esta direccin est reservada para elPUERTO B, es decir, ratifico que ptob es el registro delPORT B.Cuando, ms adelante, deba enviar informacinal puerto b, slo debo mencionar ptob.

    Reset org 0Significa que al realizarse el reset, el programa co-

    mienza por la posicin 0 de la memoria del programa.Pe-ro de inmediato pasa a la posicin 1 que tiene escrita lasiguiente sentencia:

    Inicio movlw 0Con esto se carga el registro w con el hexadecimal 0

    (es decir el binario 00000000)

    tris ptobEsta instruccin enva la informacin del registro W al

    puerto B para indicarle que todos sus pines son de salida(si se hubiera cargado el binario 11111111 todos los pi-nes seran de entrada y si se hubiera cargado 11001010algunos seran entradas y otros salidas).

    movlw 0fCarga el registro W con el hexadecimal 15 que equi-

    vale al binario 00001111 y

    movlw ptobEnva el valor cargado al puerto"B"que producir un

    estado alto en RB0, RB1, RB2 y RB3 y un estado bajo enRB4, RB5, RB6 y RB7. La informacin del puerto pasa albuffer que lleva las patas 15, 16, 17 y 18 de un PIC16C84a masa encendiendo los leds D7, D8, D9 Y D10.

    Ciclo nopRealiza una rutina nula, es decir, que no efecta ope-

    racin alguna.

    goto cicloEnva el programa hacia la etiqueta"ciclo". Las dosltimas operaciones hacen que al ejecutarse un progra-ma, ste se quede en un lazo que se llama loop cerra-do.

    La nica manera de salir de este loop es pulsandoRESET. Entonces se observa que los leds se apaganhasta que se suelta el pulsador y el programa comienzanuevamente por la etiquetaRESET.

    Obviamente, este programa debe ser editado en unutilitario adecuado (MPLAB, por ejemplo) y luego debe

    ser compilado (utilizando el MPASM o el mismo MPLAB)para obtener el archivo .hex que me permitir cargar el

    PIC que debercolocar en el cir-cuito de la figura 1para verificar querealmente hacelo que estamos di-ciendo.

    Para cargar elPIC con el progra-ma .hex se utilizaun prototipo ade-cuado (cargadorde PICs) que con-siste en un circui-to que es maneja-do por un progra-ma para permitirla carga. Todo este proceso se explica con total clarien el primer texto de esta serie, titulado: Todo SoPICs.

    En la figura 31 se puede observar un diagrama de jo que refleja el funcionamiento del programa que acmos de explicar.

    Cunto tardan en encenderse los leds luego de sol- tar el botn de reset?

    Si se observa el circuito, se ver un cristal de clock4MHz (0,25S de perodo); como internamente existdivisor x4 cada operacin se realizar en 0,25 x 4 = Si contamos las sentencias hasta llegar a cargar el putoB, veremos que hay 5 (cinco renglones de programpor lo tanto, la demora es de 5S.

    ***************************

    Veamos ahora algunos ejemplos de programas sencillos que rpidamente podemos llevar a la prctica:

    Programa que permite el encendido de los dos bits menos significativos del port B (figura 32)

    list p=16f84include org 0movlW B'00000000'tris PORTBmovlw B'00000011'

    movwf PORTBend

    Pro gramaci n d e PICs

    PIC p ara Estud iante s y A ficio nad o s 2 1

    Figura 31Figura 31

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    22/32

    Pro gramaci n d e PICs

    2 2 PIC p ara Estud iante s y A ficion ado s

    Figura 3 2 Figura 32

    Figura 33 Figura 33

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    23/32

    En la figura 33 se observa el programa correspon-diente a un secuenciador de 8 canales que hemoseditado en el programa MPLAB.

    list p=16f84include __CONFIG _RC_OSC & _WDT_OFF & _PWRTE_ON

    Este juego de sentencias indica que se va a utili-zar el PIC 16F84, se pide que se carguen las librerasdel PIC y se configura al programa para trabajar conclock RC, el temporizador WDT apagado y el tempori-zador libre activo.

    j equ h'11'k equ h'12'Defino a las variables j y k en las posiciones de

    memoria de dato 11 y 12 (en hexadecimal) respectiva-mente.

    org 0Comienza el programa

    movlw b'00000000'tris PORTB

    Con estas dos instrucciones digo que todas laspatas del PORTB sern salidas.

    movlw b'00000001'movwf PORTB

    Mand un 1 a la pata B0, es decir que si hay unled conectado entre esa pata y masa, el mismo se en-cender.

    mloop: rlf PORTB,fEn esta sentencia coloqu una etiqueta (una mar-

    ca) que ser la posicin a la que ir el programa en al-gn momento, cuando se le d la instruccin. Luegocon la instruccin rlf digo que se rote hacia la izquier-

    da el contenido del registro PORTB, es decir que lue-go de esta instruccin ahora mand un 1 al bit B1 ytodas las dems patas quedan en cero, es decir, seapaga el led conectado en B0 y se enciende el led co-nectado en B1 (pata 7 del integrado).

    movlw d'50'movwf j

    Puse en la posicin de memoria j el nmero 50

    jloop movwf k

    Puse en la posicin de memoria k el nmero 50,adems en esta sentencia coloqu una etiqueta y en

    algn momento le dir al programa que vaya haesa direccin.

    kloop decfsz k,fgoto kloop

    Ahora doy la instruccin para que se decremenel contenido de la variable k y si ese contenido es entonces que salte una instruccin; sino es 0 entces mando al contador de programa a la etiquekloop para que se haga un nuevo decremento. Es dcir, estoy haciendo un lazo cerrado para perder tipo

    decfsz j,fgoto jloop

    Entro en un nuevo lazo cerrado cuando k=0, eneste caso para decrementar el contenido de la varible j.

    Con este juego de instrucciones cuento 50 vec50 (cuento hasta 2500) y con cada cuenta consum4 ciclos de reloj de modo que tard 10.000 ciclos terminar el lazo completo. Si la frecuencia de relojde 10.000Hz, entonces tardar un segundo en completar el doble lazo.

    goto mloopAhora mando al contador de programa a la pos

    cin donde est la etiqueta mloop para que se haguna nueva rotacin del contenido del PORTB, es dcir, se encender ahora otro led, apagndose el an-terior.Esta rutina se sigue indefinidamente, es dectenemos un secuenciador de 8 canales.

    endIndica que finaliz el programa.

    De ms est decir que sta es una forma de progr

    mar no muy adecuada pero que sirve perfectamentera que el lector aprenda a estructurar sus propios proytos.

    Es aconsejable que al editar un programa lo haga el MPLAB (siguiendo los pasos que explicaremos adelante), pues de esta manera tendr la oportunidad poder comprobar si ha cometido errores o no en su tra jo. El MPLAB es ideal porque la forma de manejarsencilla y sistemtica.

    A los fines prcticos, en la pgina siguiente damoprograma correspondiente a un semforo muy senci

    Le sugiero que intente seguir paso a paso cada instrcin para comprender su estructura.

    Pro gramaci n d e PICs

    PIC p ara Estud iante s y A ficio nad o s 2 3

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    24/32

    Pro gramaci n d e PICs

    2 4 PIC p ara Estud iante s y A ficion ado s

    Figura 34 Figura 34

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    25/32

    P ROGRAMAS ECUENCIADOR DE 4 C ANALES list P=16C84 ;el dispositivo usa el 16C84;-------------------------------------------------------------------------------------------ptob equ 06 ;el puerto B se ubica en 06 de la RAM.Rot equ 0d ;al registro ubicado 0d se lo llama Rot.Reg1 equ 0e ;al registro ubicado en 0e se lo llama reg1reg2 equ 0f ;al registro ubicado en 0f se lo llama reg2reg3 equ 10 ;al registro ubicado en 10 se lo llama reg3grueso equ 00 ;se asignan nombres a los literales.medio equ 40 ;se asignan nombres a los literales.fino equ 50 ;se asignan nombres a los literales.;-------------------------------------------------------------------------------------------reset org 0 ;reset en direccin 00h

    goto comenzar ;se lleva el control a comienzocomenzar movlw 00 ;se carga w con 00h

    tris ptob ;se programa el puerto "b" como salida.ppal movlw 01 ;se carga w con 01h

    movwf rot ;se descarga w en el registro rot;preparndolo para la rotacin.

    sec movf rot,0 ;el contenido de rot pasa a wmovwf ptob ;enciende el led conectado donde indica wcall demora ;se mantiene encendido el led.rlf rot ;se mueven los bits de "rot".btfss rot,4 ;se comprueba el 5 bit.goto sec ;si el 5 bit es cero se reenva a sec.goto ppal ;si el 5 bit es uno se reenva a ppal para

    ;comenzar una nueva secuencia.demora movlw grueso ;recarga w con el nmero hexadecimal

    ;grueso es decir, con 30movwf reg1 ;se vuelca grueso en el registro

    ;reg 1dem3 movlw medio ;se carga w con el nmero hexadecimal

    ;medio es decir con 40movwf reg2 ;se vuelca "medio" en el registro

    ;reg2.dem2 movlw fino ;se carga w con el nmero hexadecimal

    ;"fino" es decir con 50.

    movwf reg3 ;se vuelca "fino" en el registro reg3.dem1 decfsz reg3 ;se decrementa el registro reg3 en una

    ;unidad y si el resultado es cero se salta a;la siguiente instruccin, si no se sigue;decrementando.

    goto dem1 ;retorno a la frecuencia etiqueta dem1.decfsz reg2 ;idem con reg2.goto dem2 ;retorno a la etiqueta dem2.decfsz reg3 ;idem con reg1.goto dem1 ;retorno a la etiqueta dem3.retlw 0 ;se carga w con 0 y se retorna al

    ;programa principal.end

    Pro gramaci n d e PICs

    PIC p ara Estud iante s y A ficio nad o s 2 5

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    26/32

    I NTRODUCCIN MPLAB es un entorno de desarrollo integrado que le

    permite escribir y codificar los microcontroladores PIC deMicrochip para ejecutarlos. El MPLAB incluye un editor detexto, funciones para el manejo de proyectos, un simula-dor interno y una variedad de herramientas que lo ayuda-rn a mantener y ejecutar su aplicacin. Tambin proveeuna interfase de usuario para todos los productos conlenguaje Microchip, programadores de dispositivos, siste-mas emuladores y herramientas de tercer orden.

    El MPLAB est diseado para ser ejecutado bajoWindows 3.11, y puede operar con Windows 95, 98 y su-periores (vea www.microchip.com).Asume que el usuarioya conoce el entorno de Windows y sabe manejarlo. Lagua que describimos le permitir realizar las siguientestareas:

    Manejar el escritorio MPLAB

    Crear un nuevo archivo de cdigo fuente para el en- samble e ingresarlo a un nuevo proyecto para el 16F84 Identificar y corregir los errores simples Ejecutar el simulador interno

    Para que Ud. aprenda a programar sus microcontro-ladores, damos a continuacin, paso a paso, las instruc-ciones de instalacin y uso de la aplicacin:

    I NSTALACIN Descargue los archivos del software de instalacin y

    ejecute el archivo MPxxxxx.EXE. Estos archivos puedeobtenerlos por medio de Internet en la direccin:

    http//www.microchip.com/10/Tools

    Estos archivos pueden ser transferidos a disquetes sidesea instalar el MPLAB en otra computadora.De acuer-do a la versin que haya descargado, los nombres de losarchivos pueden variar levemente.Por ejemplo, la versin4.00 del MPLAB tendra los siguientes archivos:

    MP40000.EXE MP40000.WO2 MP40000.WO3 MP40000.WO4 MP40000.WO5 MP40000.WO6

    Si Ud. lo prefiere, puede venir a nuestras oficinas coneste libro y 6 disquetes vrgenes y tendr la oportunidadde llevarse dicho programa sin cargo.Copie el contenido de los 6 disquetes en el disco rgi-do de su PC (en un lugar que pueda identificar).

    Cuando ejecute el archivo .EXE, comenzar la insta-lacin del MPLAB en su sistema. Seguidamente deberelegir los componentes del MPLAB que desea instalar ensu sistema. A menos que haya comprado un programadoro emulador del dispositivo, slo debiera instalar las si-guientes herramientas del software:

    Archivos MPLAB IDE Archivos MPASM/MPLINK/MPLIB Archivos de Proteccin del Simulador MPLAB-SIM Archivos de Ayuda (vea la figura 1 que aparecer

    cuando ejecute el programa).

    Luego aparecer el men de la figura 35 que le per-mitir seleccionar los componentes de lenguaje Micro-chip que desee instalar. Usualmente debiera seleccionar-los todos (por defecto). Al hacer doble click enMP40000.EXE, el instalador le va diciendo lo que debe

    Ed icin y Simulaci n d e Pro gramas

    Manejo del MPLABEdicin y Simulacin de Programas

    Sepa cmo editar un programa y encontrar errores con el MPLAB.

    Figura 35 Figura 35

    2 6 PIC p ara Estud iante s y A ficion ado s

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    27/32

    hacer. Luego de instalarlos, ejecute MPLAB.EXE o cliqueel cono MPLAB para iniciar el sistema.

    Aparecer el escritorio del MPLAB (figura 36).

    Configurar el Modo de Desarrollo El escritorio bsico del MPLAB se asemeja al de las

    aplicaciones de Windows (como pudo ver en la pantallade la figura 36). Tiene una barra de men en el margensuperior, una barra de herramientas y tambin una barrade estado en el margen inferior. Podr advertir que la ba-rra de estado incluye informacin sobre cmo se ha con-figurado el sistema.

    Nota: El"modo de desarrollo" "modo de desarrollo" determina la herra-mienta, debe elegir alguna, que ejecutar el cdigo. Paraesta gua, usaremos el simulador de software

    MPLAB- MPLAB-

    SIM SIM . Si sabe del tema y tiene un emulador, en este cap-tulo encontrar ms informacin para cambiar a una desus operaciones. Al seleccionar el tem del men"Op- ciones>Modo de Desarrollo" , aparecer una caja dedilogo semejante a la de la figura 37.

    ElMPLABes un producto en constante evolucin, demodo que pueden aparecer sutiles diferencias entre lapantalla que usted vea y la que mostramos aqu. Selec-cione el cono prximo al Simulador MPLAB-SIM(MPLAB-SIM Simulator) y elija 16F84 (que corresponde a

    un tipo de PIC) en la lista de procesadores disponibles

    que pueden ser resistidos por el simulador.Clique 16y luego presione el botn"Reset" . De este modo se ini-ciar el simulador, y debera aparecer en la barra de tado "16F84" y "Sim". Se encuentra as en el modo slador para el 16F84.

    Cmo Crear un Proyecto Simple El simulador se ejecutar desde el mismo archivo,

    mado"archivo hex" , el cual puede ser programado en elmicro PIC. Para que se ejecute el simulador, primerober crear un archivo de cdigo fuente y realizar el mtaje del cdigo fuente.

    A continuacin explicaremos cmo llevar a cabo eproceso:

    Nota: El lenguaje ensamblador produce, entre otroelementos, un archivohex. Este archivo tiene la exten-sin (.hex ). A este archivo lo llamaremos:

    tutor84.hex.

    Ms adelante este archivo puede ser cargado direcmente en el programador del dispositivo sin usar el samblador o un proyecto del MPLAB. Este archivo bin puede ser cargado por otros programadores de tcer orden.

    Seleccione"Archivo>Nuevo (File>New)" en el me-n y aparecer la caja de dilogo de la figura 38.

    Clique en el botnS , seguidamente aparecer undilogo de explora-cin de Windowsestndard. Decidadnde desea crearsu proyecto (enqu carpeta o lugarde su disco rgidolo va a guardar) yrecuerde dnde lo

    ubic. Ms tarde necesitar esta informacin. Esta gusa un directorio enc: \temp\tutorial y crea el archivo deproyecto llamadotutor84.pjt (figura 39)."PJT" es el su-

    Ed icin y Simulaci n d e Pro gramas

    Figura 36 Figura 36

    PIC p ara Estud iante s y A ficio nad o s 2 7

    Figura 37 Figura 37

    Figura 38 Figura 38

    Figura 39 Figura 39

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    28/32

    fijo estndar para los archivos de proyectos en el MPLAB.El prefijo del nombre de archivo del proyecto, en este

    caso "tutor84", ser el prefijo por defecto de muchos delos archivos que el MPLAB usar o crear para esta gua.Clique"Aceptar (OK)" para que aparezca el dilogo Pro-yecto MPLAB. Este dilogo puede parecer confuso, peroen realidad es muy simple.

    Nota: El simulador, los programadores y los sistemasemuladores que operan con el MPLAB usan un archivohex creado por el ensamble, la compilacin y/o el linkingdel cdigo fuente. Algunas herramientas diferentes pue-den crear archivos hex, al tener en cuenta que estas he-rramientas formarn parte de cada proyecto.

    Los proyectos le dan la flexibilidad para describir c-mo se construir la aplicacin y qu herramientas se usa-

    rn para crear el archivo.hex . Obviamente, en la guanos ocuparemos de todos estos detalles.El dilogo"Editar Proyecto" ser semejante al mos-

    trado en la figura 40.Advierta que el nombre del archivo de destino ya ha

    sido completado. Ya conoce el modo de desarrollo queconfiguramos previamente y asume que usaremos la se-rie de herramientas de lenguaje Microchip.En la ventana"Archivos de Proyecto (Files proyect)" , encontrartu- tor84. [hex] . Al destacar este nombre, se podr utilizar elcono"Propiedades del Nodo (Node Properties)" . Se-

    guidamente debe indicarle al MPLAB cmo crear el archi-vo hex.Hgalo clicando el botn "Propiedades del Nodo".

    Aparecer el dilogo "Propiedades del Nodo". Este di-logo contiene todas las configuraciones por defecto parauna herramienta de lenguaje -en este casoMPASM, co-mo podr ver en en el ngulo superior derecho del dilo-go. En su forma ms simple, el proyecto contiene un ar-chivo hex creado desde un archivo fuente de ensamble.Esta ser la configuracin por defecto cuando aparezcael dilogo "Propiedades del Nodo (Node Properties)", veala figura 41.

    Nota: Como puede ver, hay una cantidad de filas ycolumnas en este dilogo.

    Cada fila usualmente corresponde a un"cambio" ,aquellos elementos que se establecen en la lnea de co-mando cuando se invoca una herramienta. De hecho, laconfiguracin de estos cambios se refleja en la ventana"Lnea de Comando (comand line)" , prxima al margeninferior de la pantalla.Esta es la lnea de comando que seusar cuando se invoque el MPASM desde el MPLAB. Porel momento, puede usar las configuraciones por defecto,pero cuando ya sepa construir una aplicacin, probable-mente desear cambiar algunas.

    Al clicar el botn"Aceptar (OK)" , aplicar estas con-figuraciones, y retornar al dilogo"Editar Proyecto (Edit Project)",con el cono (botn)"Agrega Nodo (Add

    Node)" disponible. Presione el botn"Agregar Nodo" .Aparecer el dilogo de exploracin de Windows estn-dar, con el mismo directorio usado para el proyecto. Ingre-se el nombre de archivo:tutor84.asm y presione"Acep- tar" . Retornar al dilogo"Editar Proyecto" , donde po-dr ver"tutor84.asm" aadido debajo del archivo hex,que indica que es un nodo concurrente. Al presionar"Aceptar" , retornar al escritorio MPLAB con un archivode cdigo fuente abierto y an sin nombre.

    Cmo Crear un nuevo Archivo Fuente Simple

    Clique dentro del espacio en blanco de la ventana dearchivo creada. Seguramente se llamar "Sin ttulo (Un-

    Ed icin y Simulaci n d e Pro gramas

    2 8 PIC p ara Estud iante s y A ficion ado s

    Figura 40 Figura 40

    Figura 41Figura 41

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    29/32

    titled) ". De este modo acceder al "foco" de la ventana.Use la opcin de men "Archivo>Guardar como...", yguarde el archivo vaco comotutor84.asm . Cuando abrael dilogo de exploracin estndar, encontrar su ubica-cin en el directorio del proyecto.Ingrese el nombre de ar-chivo y presione "Aceptar ". Vea la figura 42.

    Ahora estarn disponibles el escritorio MPLAB y laventana de archivo vaco, pero el nombre de la ventanade archivo reflejar su nuevo nombre.

    Nota: El nombre del archivo fuente y el nombre delproyecto ("tutor84" en esta gua) deben ser iguales en es-te tipo de proyectos. Hay otros proyectos de archivo ml-tiple que usan el lin-ker y permiten queel nombre del archi-vo de salida sea di-ferente al del archi-vo de entrada (hayuna gua aparte pa-ra los proyectos dearchivos mltiplesque usan el linker).

    El MPASM siempre crear unarchivohex de sali-da con el mismonombre que el archi-vo fuente, y estaconfiguracin nopuede modificarse.Si cambia el nombredel archivo fuente,tambin deber

    cambiar el nombredel proyecto. Ahora

    ya est listo para escribir el cdigo que almacenar ePIC para que cumpla una funcin determinada.

    Ingresar el Cdigo Fuente Use el mouse para ubicar el cursor al comienzo de

    ventana de archivo vacotutor84.asm, e ingrese el textode la tabla 1, exactamente como est escrito en cadanea. No debe ingresar los comentarios (los textos queguen a cada punto y coma).

    Este cdigo es un programa muy simple que incmenta un contador y lo "resetea" a un valor predetermdo cuando el contador vuelve a cero.

    Nota:Todos los rtulos comienzan en la primera columna, y la ltima lnea tiene una directiva "end". Laginas de datos del micro PIC contienen informacin pleta sobre instrucciones con ejemplos para su uso.

    Guarde el archivo usando la funcin de men"Archi- vo>Guardar" (File>Save).

    Ensamble del Archivo Fuente El ensamble del archivo puede realizarse de vari

    maneras. Aqu describiremos un mtodo. Use el temmen"Proyecto>Construir todo (Proyect>Build All)".De este modo ejecutar el lenguaje ensamblador MPAen el trasfondo usando las configuraciones guardadcon el proyecto anteriormente. Una vez completado

    Ed icin y Simulaci n d e Pro gramas

    Figura 42 Figura 42

    Tabla 1

    list p=16f84include

    c1 equ h'0c' ; Establece el contador d e variable temp c1 en la direccin 0x0corg h'00' ; Establece la base de memoria del programa en el vector reset 0xresetgo to start ; Ir a inicio en el programa principal

    org h'04' ; Establece la base de memoria del programa al comienzo del cd; usuario

    startmov1w h'09' ; Inicializa el contador a un valor arbitrario mayor que ceromovwf c1 ; Guarda el valor en la variable temp definida

    loopincfsz c1,F ; Incrementa el contador, ubica los resultados en el registro de arcgoto loop ; loop hasta que el contador se completa

    goto bug ; Cuando el contador se completa, va a start para reiniciar

    en d

    PIC p ara Estud iante s y A ficio nad o s 2 9

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    30/32

    proceso de ensamble, aparecer la ventana"Resulta "Resulta - - dos de Constr dos de Constr uccin (Build Results" uccin (Build Results" (figura 43):

    Ha ingresado intencionalmente al menos un error siingres el cdigo tal como lo hemos escrito en el paso an-terior. El ltimo "goto" en el programa refiere a un rtuloinexistente llamado "bug". Dado que este rtulo no ha si-do definido previamente, el lenguaje ensamblador infor-mar el error. Tambin podra relevar otros errores.

    Haga un doble click sobre el mensaje de error . Deeste modo ubicar el cursor en la lnea que contiene elerror en el cdigo fuente.Cambie "bug" por "start". Use laventana"Resultados de construccin (Build Results)" para hacer una bsqueda de errores, y reparar los queaparecieran en el cdigo fuente. Reensamble el archivoejecutando la funcin de men"Proyecto>Construir to- do" . Este procedimiento puede demandar un par de re-peticiones.

    Nota: Cuando reconstruya un proyecto, todos sus ar-chivos fuente sern guardados en el disco.

    Luego de reparar todos los problemas en el cdigofuente, la ventana "Resultados de construccin" mostrarel mensaje"Construccin completada exitosamente (Build completed successfully)" . Ya ha completado unproyecto que puede ejecutarse usando el simulador.

    Ejecucin de su Programa Use "Debug>Ejecutar>Reset (Debug>Run>Re-

    set)" para iniciar el sistema. El contador del programa se

    resetear a cero, que es el vector de reset en el 16F84.

    La lnea del cdigo fuente en esta direccin ser destaca-da con una barra oscura.Tambin advertir que en la ba-rra de estado, la PC se establecer en 0x00.

    Use el tem de men"Debug>Ejecutar>Paso (De- bug>Run>step)" (figura 44). Al hacerlo, el contador delprograma avanzar hasta la siguiente ubicacin de ins-truccin. La barra oscura seguir el cdigo fuente y elcontador del programa desplegado en la barra de estadoavanzar hasta "4".

    Cuando ejecute el tem de men "Debug>Ejecutar->Paso", advierta la aparicin de un texto en el lado dere-cho del tem de men que dir "F7". El mismo equivale a"tecla de funcin siete" en su teclado. Muchas funcionesdel MPLAB se asignan a "teclas-especiales".Estas teclascumplen la misma funcin que los tems de men a loscuales corresponden.Presione F7 varias veces y ver c-mo el contador del programa y la barra avanzan a travsdel programa.

    Ejecute el tem de men"Debug>Ejecutar>Ejecutar (Debug>Run>Run)" o presione F9 para inciar la ejecu-cin del programa desde la la ubicacin actual del conta-dor.Los colores de la barra de estado cambiarn, para in-dicar que el programa est ejecutando las instrucciones.Ninguno de los campos de la barra de estado se actuali-zar mientras el programa est en ejecucin.

    Detenga el programa ejecutando el tem de men"Debug>Run>Halt (detener)" o presionando F5. La ba-rra de estado volver a su color original, y el contador delprograma y otras informaciones de su estado sern ac-tualizadas.

    Nota: Otra manera de ejecutar funciones es usar labarra de herramientas ubicada en el margen superior dela pantalla. Si ubica el cursor sobre los tems de la barrade herramientas, podr ver el nombre de su funcin en labarra de estado. El botn de la izquierda es un botn es-tndar"cambiar barra de herramientas (change tool bar)" que le permite desplegar las barras de herramien-

    tas disponibles. Estas pueden ser personalizadas, comopodr advertirlo en la seccin "Algunas Sugerencias" al fi-nal de esta gua. En la barra de herramientas de Debug,la luz verde es equivalente a F9 (Ejecucin) y la luz rojaequivale a F5 (Detencin).

    Hasta aqu, aprendi a instalar el programa y crear unarchivo paraaprender a prog aprender a prog r r amar amar . Dimos un ejem-plo de programacin y ya sabemos cmocorrer el pro correr el pro - - g g r r ama en la PC ama en la PC para saber si todo est bien, antes deescribir dicho programa en nuestro PIC. Sin embargo,cuando los programas son ms largos, es posible come-

    ter errores que pueden ser evitados. A continuacin expli-camos el procedimiento.

    Ed icin y Simulaci n d e Pro gramas

    3 0 PIC p ara Estud iante s y A ficion ado s

    Figura 43 Figura 43

    Figura 44 Figura 44

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    31/32

    Abrir Otras Ventanas Para el Seguimiento de Errores Hay muchas maneras de visualizar el programa y su

    ejecucin usando el MPLAB.Por ejemplo, este programaest destinado a incrementar un contador temporario pe-ro,cmo puede asegurarse que se est produciendo di- cho incremento? Una manera es abrir e inspeccionar unaventana de registro de archivo.Puede hacerlo ejecutandoel tem de men"Ventana>registros de archivo (Win- dow>File Register)" . Aparecer una pequea ventanacon todos los registros de archivo o el RAM del 16F84.

    Presione F7 (ejecute instruccin por instruccin, sipiensa anularlo) varias veces, y observe la actualizacinde valores en la ventana de registro de archivo. Hemoscolocado la variable del contador en la ubicacin de direc-cin 0x0C. Mientras el contador temporario se incremen-te, este incremento se reflejar en la ventana de registrode archivo. Los registros de archivo cambian de colorcuando su valor cambia, de modo que los cambios pue-dan advertirse fcilmente en la inspeccin. De todos mo-dos, en muchos programas complejos, varios valorespueden cambiar, as resultar ms difcil focalizar las va-riables que le interesan.Usando una ventana de observa-cin especial, este problema puede solucionarse.

    Ahora, ya sabemos mejor qu es lo que estamos ha-ciendo:

    Prog Prog r r amamos algo que incrementa en amamos algo que incrementa en 1 1 cada cada v v ez que viene una seal ez que viene una seal y podemos v y podemos v er er ificar ificar lo vir lo vir - - tualmente tualmente , antes de prog , antes de prog r r amar el PIC amar el PIC ..

    Creacin de una Ventana de Observacin

    Ejecute el tem de men"Ventana>Nueva ventanade observacin (Window>New Watch Window)". Apa-recer el dilogo "Agregar Smbolo de Observacin (Add

    Watch Symbol)" (figura 45). Tipee "c1" en la caja de bre de smbolo para que la lista se despliegue hastasmbolo deseado. Seleccinelo, presione el botn"Agre- gar (Add)" , y luego el botn"Cerrar (Close)" . Aparece-r en su escritorio MPLAB una ventana de observaque mostrar el valor actual del valor "c1" del conttemporario.

    Presione F7 varias veces para advertir cmo se atualiza la ventana de observacin mientras el valor contador se incrementa. Si dej la ventana de registroarchivo abierta, la misma tambin ser actualizada (mva una de ellas para que pueda ver las dos en la pantlla).

    Puede guardar la ventana de observacin y sus cofiguraciones al ejecutar el tem"Guardar observacin (Save Watch)" debajo del botn del sistema, ubicado enel ngulo superior izquierdo de la ventana de obsercin. Al clicar este botn, se desplegar un men en ccada. Seleccione "Guardar observacin" y aparecerdilogo de exploracin estndar ubicado en el directdel proyecto. Elija algn nombre arbitrario y pres"Aceptar (OK)".

    Si no nombra la ventana de observacin, el MPLAhar por usted.La ubicacin y el estado en la pantallala ventana abierta o cerrada sern guardados con el pyecto, de modo que la prxima vez que abra su proyesus ventanas de observacin aparecern restauradas.

    Nota: Tambin puede editar ventanas de observaciluego de crearlas. Use el botn del sistema y selecci"Agregar Observacin (Add Watch)" para que aparez-ca un dilogo mediante el cual podr agregar ms teCon la tecla"Ins" podr hacer lo mismo.Si desea borrarun tem, seleccinelo y presione la tecla Suprimir (Dte); la observacin referida desaparecer de la ventaPuede seleccionar"Editar observacin (Edit Watch)" en el men del sistema para cambiar el modo en el cse muestra el tem (en hex, binario, como una variabl

    16-bit en vez de 8-bit, etc.).Cmo se Marca un Punto de Interrupcin Presione F5 ("Debug>Ejecutar>Detener") para a

    gurarse que el procesador del simulador se ha deteniClique dentro de la ventana del cdigo fuente la lneguiente al rtulo "start", que dice "movlw 0'09'".Preel botn derecho del mouse para que aparezca el mede la figura 46.

    Clique el tem de men"Punto(s) de interrupcin (Break Point)" . El men desaparecer y la lnea donde

    se ubic el cursor cambiar de color, para indicar qusido establecido un punto de interrupcin en dicha ub

    Ed icin y Simulaci n d e Pro gramas

    Figura 45 Figura 45

    PIC p ara Estud iante s y A ficio nad o s 3 1

  • 7/31/2019 Curso de Pic (Saber Electronica)(1)

    32/32

    cin. Presione F6 o ejecute el tem de men"Debug>E- jecutar>Reset (Debug>Run>Reset)" para resetear elsistema. Luego, presionando F9, ejecute el sistema. Elprograma se ejecutar y se detendr en la instruccinubicada luego del punto de interrupcin. "c1", como apa-rece en la ventana de observacin o en la de registro dearchivo, si la tiene an abierta, reflejar el estado reset decero, el modo instruccin por instruccin ejecutar la car-ga