pic 16f628a -manual de practicas

Upload: juan-fco-rocha-paredes

Post on 05-Apr-2018

344 views

Category:

Documents


10 download

TRANSCRIPT

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    1/59

    MANUALDE

    PRCTICASINTRODUCCIN AMECATRNICA

    22/10/2008

    JUAN ANTONIO MOLINA TONDOP.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    2/59

    Entrenador para Microcontroladores PIC con PBP.

    Qu es un entrenador?

    La principal aplicacin de un entrenador, es de servir como elemento de soporte a las personasque desean aprender el manejo del microcontrolador PIC (ya sea para los diferentes familias queutiliza el PIC), tambin ayuda a la persona interesada que pueda realizar los mas variadosexperimentos desde proyectos sencillos hasta los mas variados y complejos.

    El siguiente manual contiene ejercicios simples que nos permiten adquirir nuevos conocimientostanto en la programacin y en las conexiones electrnicas (software y hardware). Los ejercicioscon los que cuenta el entrenador se encuentran basados en el contenido prctico del programade la Universidad Politcnica de Chiapas (Ver Anexo A.) incluyendo tambin ciertos temas parapoder ir desarrollando tcnicas, habilidades y conocimiento en el campo de la Mecatrnica. Entanto el diseo del hardware contiene los siguientes Mdulos:

    Mdulo Fuente de alimentacin (5V, GND y 12V) Modulo de Programacin.

    Modulo Leds.

    Modulo de Potencia.

    Modulo de entrada digital.

    Modulo de entrada analgica.

    Modulo RS232. Mdulo USB.

    Modulo Display de 7 Segmentos. Modulo PWM. Modulo Motor paso a paso.

    Modulo Servo Motor. Modulo Motor CD.

    Modulo Teclado.

    Modulo LCD. Modulo Experimento (Protoboard)

    Adems el entrenador contiene lo siguiente: una base con fuente, un apagador, fusible deproteccin, una prctica caja para guardar tus cables, herramientas y dispositivos y una lmparapara iluminacin del entrenador. Para poder realizar un correcto funcionamiento del entrenadornecesitamos el siguiente sistema:

    IBM PC o una computadora compatible.

    Un puerto USB Windows 98, ME, 2000, NT, XP VISTA

    Y para su correcto funcionamiento:1. El entrenador.2. Programador USB y su correspondiente software.3. Cable de programacin.4. Programa editor y compilador (Microcode Studio y PBP)

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    3/59

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    4/59

    EXPERIMENTO 1.

    Qu es un Microcontrolador?Qu es un Microcontrolador?

    Muchos de nosotros sabemos qu apariencia tiene una computadora. Usualmente tiene teclado,monitor, CPU (Unidad de Procesamiento Central), impresora y mouse. Este tipo decomputadoras, como la Mac o PC, son diseadas principalmente para comunicarse conhumanos.

    Manejo de base de datos, anlisis financieros o incluso procesadores de textos, se encuentrantodos dentro de la gran caja, que contiene CPU, la memoria, el disco rgido, etc. El verdaderocmputo, sin embargo, tiene lugar dentro de la CPU. Si piensa sobre esto, el nico propsitodel monitor, teclado, mouse e incluso la impresora, es conectar a la CPU con el mundo exterior.

    Pero hay computadoras alrededor de nosotros, corriendo programas y haciendo clculossilenciosamente sin interactuar con ningn humano. Estas computadoras estn en su auto, en eltransbordador espacial, en un juguete, e incluso puede haber uno en su secador de pelo.

    Llamamos a stos dispositivos microcontroladores. Micro porque son pequeos, ycontroladores, porque controlan mquinas o incluso otros controladores. Los Microcontroladores,por definicin entonces, son diseados para ser conectados ms a mquinas que a personas.Son muy tiles porque se pueden construir mquinas o artefactos, para controlarlo, y luego

    dejarlo trabajar para usted de manera automtica. El lmite de las aplicaciones para losmicrocontroladores es la imaginacin.

    Microcontrolador. Es un circuito integrado que contiene muchas de las mismas

    cualidades que una computadora de escritorio, tales como la CPU, la memoria,

    etc., pero no incluye ningn dispositivo de comunicacin con humanos, como

    monitor, teclados o mouse. Los microcontroladores son diseados para aplicacin

    de control de mquinas, ms que para interactuar con humanos.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    5/59

    Cuando creamos dispositivos que tienen un microcontrolador actuando como un cerebro, enmuchas formas estamos tratando de imitar cmo acta nuestro cuerpo. Su cerebro necesitacierta informacin para tomar decisiones. Esta informacin es obtenida a travs de variossensores, como la vista, el odo, el tacto, etc. Estos sensores detectan lo que nosotros llamamosel mundo real o mundo exterior, y envan esa informacin al cerebro para procesamiento.

    Recprocamente, cuando su cerebro toma una decisin, manda seales a travs de su cuerpopara hacer algo en el mundo exterior. Utilizando las entradas de sus sentidos, y las salidasde sus piernas, brazos, manos, etc., su cerebro se est comunicando e interactuando con elmundo exterior. Esta entrada/decisin o procesamiento/salida es de lo que se tratan losSistemas y los microcontroladores.

    Para cada experimento se necesita una PC compatible XP o VISTA, una fuente conectada alentrenador.

    Partes Requeridas para el experimento 1:

    (2) LEDs (Diodos emisores de luz)(2) Dos resistores de 330 ohm, watt.

    Cable de programacin.Cables de conexin.El programa editor de PBP para el PIC

    Armelo!

    Cualquier sistema microcontrolador, consiste en dos componentes primarios:hardware y software. El hardware es el componente fsico del sistema. Elsoftware es la lista de instrucciones que residen dentro del hardware. Nosotroscrearemos ahora el hardware que interacte con el mundo exterior, y luegoescribiremos un programa de software para controlarlo.

    Ahora construyamos nuestro circuito. Ver figura 1.1

    AL LABORATORIO.En este experimento conectaremos dos diodos emisores de luz (LEDs) al entrenador PIC.Los LEDs son formas especiales de lmparas que por varias razones son fcilmenteconectadas a dispositivos microcontroladores. Hay dos cosas muy importantes de recordarcuando conecta LEDs al PIC. La primera es que siempre se debe asegurar que haya unaresistencia conectada, como muestra la figura 1.2. En este experimento el resistor debetener un valor de 330 ohms, watt.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    6/59

    Segundo, est seguro que la polaridad del LED es la correcta. Hay una zona liza en uncostado del LED que debera ser conectada como en la figura 1.2, si la polaridad esinvertida, el LED no trabaja. El lado liso tambin tiene la pata ms corta del LED.

    Figura 1.2: LED en el Protoboard. Muestra el LED y el resistor enchufados en el protoboard.Ninguna conexin ha sido hecha an a las entradas/salidas del BASIC Stamp.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    7/59

    Entendiendo la Protoboard.

    Es importante entender cmo trabaja el protoboard. El protoboard tiene muchas tiras

    metlicas que pasan por debajo en fila. Estas tiras conectan los huecos unos a otros; estohace fcil conectar componentes juntos para construir un circuito elctrico. Para usar elprotoboard, las patas del LED y el resistor, sern puestas en los huecos. Estos huecos sonhechos de forma que tendrn al componente en su lugar. Cada hueco es conectado a unade las tiras metlicas que corren por debajo de la plaqueta. Usted puede conectar diferentescomponentes enchufndolos dentro de nodos comunes.

    Figura 1.3: Conexiones del Protoboard.

    Las lneas negras verticales muestran cmo los huecos estn conectados por debajo de la protoboard. Estosignifica que usted no tiene que enchufar dos cables en un mismo hueco, debido a que ese hueco est unido conel de la izquierda o el de la derecha.

    Bien, construyamos el circuito! No conecte la fuente de alimentacin an (la batera de 5volts o el adaptador externo).

    En las Figuras siguiente 1.4 a) se muestra un diagrama elctrico es un diagramaesquemtico del circuito del microcontrolador PIC16F84 con 2 LEDs de salida y susistema mnimo (Componentes necesarios para que pueda funcionar correctamente elmicro). La Figura 1.4 b) es el mismo circuito, pero dibujado como una foto de cmo se verael circuito fsico. Realice las conexiones necesarias en el protoboard.

    Figura 1.4 a) Diagrama esquemtico del circuito. Fig. 1.4 b) Montaje real del cto. en el proto.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    8/59

    Conecte el programador a la PC:

    Programelo!

    1. Enchufe un extremo del cable al programador.

    2. Enchufe el otro extremo del cable de programacin en un conector delpuerto USB disponible en la PC.

    Listo! Ya hemos creado un circuito (hardware). Pero esto no es nada an. As es quenecesitamos... Cuntos de ustedes ya saben escribir un programa de computadora? Silo ha hecho antes, entonces la primera parte de sta seccin puede ser un repaso. Perosi es nuevo en el tema, no se preocupe, en realidad no es tan difcil. Un programa decomputadora no es nada ms que una lista de instrucciones que una computadoraejecuta (o en nuestro caso un microcontrolador). Creamos un programa para elmicrocontrolador escribindolo en una PC (utilizando el teclado y el monitor), luegodescargamos este cdigo a travs del cable de programacin, al microcontrolador. Esteprograma (o lista de instrucciones), entonces se ejecuta dentro del PIC. Si hemosescrito el programa correctamente, har lo que nosotros esperbamos. Sin embargo, sihemos cometido un error, entonces el dispositivo no trabajar (o trabajar mal), ynecesitamos depurarlo. Depurar el programa puede ser una de las experiencias msestresantes de todo el proceso, por lo tanto, cunto ms cuidadoso es en crear elprograma, tericamente ms fcil ser depurarlo. Un debugging es el arte de removererrores (bug). PBP para el PIC, tiene muchos comandos de donde elegir, una lista ydescripcin completas de cada uno de stos comandos puede ser obtenida en cadacomando usado en stas lecciones, o si lo prefiere est descripto en el apndice B,referencia rpida del PBP. Para ste experimento usaremos slo cuatro comandos.

    Estos son: OUTPUT, PAUSE, GOTO, Y OUT. Como se mencion arriba, un programa esuna lista de instrucciones que son ejecutadas en una secuencia determinada por laestructura del programa en s mismo. Por lo tanto, como escribimos el programa, es muyimportante para tener en mente la secuencia de la ejecucin que nosotros deseamos.Por ejemplo, si queremos comprar una gaseosa en una mquina expendedora, nuestrocerebro ejecuta una lista de comandos para realizar esto. Tal vez algo as...

    1. Insertar $1.00 en la ranura.

    2. Esperar que se encienda la luz verde.

    3. Presionar el botn para el tipo de gaseosa.

    4. Ver salir la gaseosa.

    5. Agarrar la gaseosa.

    6. Abrir la gaseosa.

    7. Beber la gaseosa.

    8. Burp.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    9/59

    Ahora, esto se ve bastante lgico, pero slo porque ya lo hemos hecho antes. Si, sinembargo, su cerebro enva el programa siguiente:

    1. Presionar el botn para el tipo de gaseosa.

    2. Abrir la gaseosa.3. Insertar $1.00 en la ranura.

    4. Agarrar la gaseosa.

    5. Burp

    6. Beber la gaseosa.

    7. Esperar que se encienda la luz verde.

    8. Ver salir la gaseosa.

    No pasar mucho. Todos los comandos apropiados estn ah, pero en un orden incorrecto.Una vez que usted ha apretado el botn para tipo de gaseosa (botn 1), su cerebro(programa), se colgar o se detendr, porque no puede ejecutar abrir la gaseosa, que esel punto 2, porque no tiene gaseosa que abrir!.

    Este es un error de programacin (bug). Los humanos podemos modificar nuestroprograma cerebral a medida que la situacin transcurra, y podemos, por supuestoimaginarnos cmo obtener la gaseosa. Los microcontroladores, sin embargo, no tienenla capacidad de adaptar y modificar su propio conjunto de instrucciones; ellos sonsolamente capaces de ejecutar la secuencia exacta de las instrucciones que nosotrosles dimos.

    Bien, suficiente teora, programemos ste microcontrolador para hacer algo! Conecte elprogramador. Conecte el cable USB a su PC. Enchufe el PIC al programador. Enciendasu PC. El software del MicroCode Studio funciona en Windows XP o Vista.

    De doble click en el icono MicroCode Studio, ahora estar corriendo el programa. Este esun programa que fue creado para ayudarlo a escribir y compilar programas almicrocontrolador PIC. La pantalla se ver como en la Figura 1.5:

    Figura 1.5: Software del MicroCode Studio.

    Doble click sobre el icono MicroCode Studio para hacer correr el software. La pantalla que se abre se vercomo sta.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    10/59

    La pantalla, excepto por unas pocas palabras en el ttulo, est en blanco. Ac es dondeusted crear su programa. Ahora recuerde, vamos a escribir nuestro programa usandoun equipo de comunicacin humano (monitor, teclado, etc.), que es parte de su PC Elprograma que escribiremos, no correr en su PC, sino que ser descargado o enviado almicrocontrolador. Una vez que el programa ha sido recibido, el PIC ejecutar lasinstrucciones exactamente como nosotros las hemos creado.

    Escriba el siguiente programa en el editor del MicroCode Studio, y se ver como en lafigura 1.6:

    Figura 1.6: Softwaredel MicroCode Studio.

    Escriba el cdigo en el editor, y se ver como en sta pantalla

    output 0

    titilar:

    high 0pause 1000low 0pause 1000goto titilar

    Es necesario recordar que primeramente una vez terminado de escribir el programa seguarde el archivo con el nombre que usted quiera pero que valla relacionado con lo que seesta haciendo y una vez compilado se genera un archivo extensin .HEX que es estearchivo que se necesita guardar en el PIC y que el programador requiere para descargarlo anuestro microcontrolador.

    Ahora, presione la tecla F9 notara que el programa fue compilado exitosamente, sino le

    apareci ningn mensaje. Si todo est correcto, nos vamos al software del programador queusted utilice y descargamos el programa al PIC.

    El primer comando usado es output. Cada seal del pin del PIC puede ser ajustada comoentrada o salida.

    Debido a que nosotros queremos que el microcontrolador encienda y apague un LED, elmicrocontrolador est manipulando el mundo exterior. Por lo tanto, por definicin,nosotros queremos que B0 sea una salida output.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    11/59

    Resultado del primer comando: output 0 hace B0 una salida. (Aclaracin: si nosotrosbuscbamos hacer B1 una salida, el comando debera haber sido output 1).

    El siguiente tem en el programa titilar:, no es realmente un comando. Es slo unaetiqueta, una marca encierto punto del programa.

    Ahora, el pin B0 como lo llamamos, es una salida. En el mundo de las computadoras,voltajes en stos pines, pueden ser tanto altos o bajos, que significa que pueden tenerun voltaje alto o bajo. Otra forma de referirnos a alto y bajo es 1 y 0. 1 significa alto y 0significa bajo. Piense en una llave de luz en la pared, cuando la llave est en una posicin,la lmpara se enciende, y cuando est en otra posicin, se apaga. Es binaria, hay slo doscombinaciones: encendida o apagada, o 1 o 0. No importa cunto insista, usted nuncapodr poner la llave en medio de las dos posiciones.

    Si queremos encender el LED necesitamos hacer que B0 vaya alto (que tenga un 1). B0est actuando como un interruptor, que puede ser cambiado a encendido o apagado bajoun control de programa.

    Este es el propsito para el segundo comando: High 0. Este causar que B0 vaya a nivelalto, lo que hace que el LED se encienda.

    Tenga en cuenta que los microcontroladores ejecutan su programa muy rpidamente, siapagramos el LED en el siguiente comando, esto pasara demasiado rpido para quepudiramos verlo.

    Por lo tanto necesitamos aletargar el programa; de sta forma podemos ver si estoperando correctamente o no.

    Es el propsito del siguiente comando: Pause 1000. Este comando hace que el programaespere por 1000 milisegundos, o sea 1 segundo.

    El siguiente comando es Low 0. Este comando hace que B0 vaya a nivel bajo y apague elLED, debido a que no hay flujo de corriente.

    A continuacin hacemos una pausa con pause 1000 (otro segundo). El LED est anapagado.

    Goto (ir) es muy simple de entender. Durante el curso de la ejecucin del programa,cuando el comando goto es encontrado, el programa va a algn punto especfico en elprograma. En nuestro ejemplo, le decimos al programa ir a titilar. Donde sea que esttitilar, es donde el programa ir. En nuestro programa, la etiqueta titilar est en lasegunda lnea. Por lo tanto, cuando la instruccin goto titilar es encontrada, el programa

    salta hacia la segunda lnea y lo repite nuevamente. (El programa regresa a la segundalnea cada vez que encuentra el comando goto titilar. Esto es lo que causa que el LEDcontinuamente parpadee. Un buen hbito al que conviene acostumbrarse, esremarremark (comentar) sus programas. Comentar o documentar sus programas, loshace ms fciles de seguir o de depurar si hay algn problema.

    El apstrofe () es usado para decirle al microcontrolador que ignore la siguienteinformacin, es slo para beneficio humano. En otras palabras, cualquier cosa que est

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    12/59

    escrita en una lnea del programa despus de un apstrofe, no es parte del cdigo de lainstruccin.

    Preguntas

    1. En qu se diferencia un microcontrolador de una computadora?

    2. Cul es la diferencia entre hardware y software?

    3. Por qu un microcontrolador es como nuestro cerebro?

    4. Qu significa debug (depurar)?

    5. El siguiente programa debera encender el LED en B0 por 2 segundos, luego apagarlo por2 segundos, y luego repetir. Cuntos errores (bugs) hay en el programa y qu correccionesson necesarias?

    output 0titilo:out0 = 0pause 200out1 = 1pause 2000goto titilar

    Reescriba el programa de la pregunta 5 anterior, para hacer lo siguiente. Cada programadebera ser cargado en el PIC y probado en su protoboard.

    Desafio!

    1. Haga que ambos LED se enciendan y apaguen parpadeando al mismo tiempo, Cuandotermine de hacer el programa, crguelo en la PC (como lo ha hecho antes), y prubelo.

    2. Haga encender y apagar los LED alternativamente; en otras palabras, mientras un LEDest encendido el otro est apagado, y viceversa.

    3. Encienda el primer LED por 2 segundos, luego apguelo. Espere

    5 segundos y encienda el segundo LED por 1 segundo y luego apguelo. Espere 3segundos y repita.

    4. Encienda el primer LED por 1.5 segundos, luego apguelo. Espere 2 segundos y luegoencienda el segundo LED por 1.5 segundos, Luego apguelo. Espere 2 segundos, luegoencienda ambos LED por 0.5 segundos y apguelos por 2 segundos. Repita sta ltimaaccin de 0.5 segundos encendido y 2 segundos apagado.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    13/59

    Qu aprend?

    Complete las siguientes oraciones con las palabras de la lista.

    Los___________________ estn a nuestro alrededor. Incluso cuando no se ven como unacomputadora. (Quin alguna vez se imagin que un juguete tendra una computadoraincluida en su interior?)

    Los Microcontroladores consisten de hardware y _____________. Creamos programas enuna PC, una computadora que est diseada para interactuar con humanos (con teclado,monitor, etc.) y luego _____________ el programa en un microcontrolador, donde esrealmente ________________ (run).

    Un programa de microcontrolador es solo tan inteligente como el que lo program. Al

    contrario que el cerebro humano, el programa del microcontrolador no se__________ por smismo, ni cambiar el orden de las instrucciones del programa.

    El microcontrolador ejecutar un conjunto de instrucciones en la misma____________ en laque fue creado.

    Muchos microcontroladores son verstiles y fciles de usar, porque pueden serreutilizados,______________, y pueden usarse en un sinnmero de productos einnovaciones, desde robots a tostadores

    Software ejecutado microcontroladores adaptar

    re-programados secuencia descargamos

    Por qu aprend esto?

    La gran versatilidad de los microcontroladores est en que pueden ser programadospara controlar cualquier cosa que la mente humana pueda concebir. Aeromodelos,controladores de casas inteligentes o sistemas de coleccin de datos climticos remotos

    operados por batera, son slo ejemplos. Los microcontroladores deben tener doscomponentes trabajando juntos, para que el dispositivo funcione. El primer componentees el hardware (el circuito). Muchas personas pasan su vida diseando hardware paramicrocontroladores para una infinidad de variedad de productos. El segundocomponente es el software. Los programadores se especializan en escribir (cdigo decontrol) para telfonos celulares, juguetes o incluso equipamiento industrial.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    14/59

    Cmo puedo aplicarlo?

    La ventaja de los microcontroladores (y algo que usted puede considerar como unacarrera futura) es que el mundo de los dispositivos inteligentes se est expandiendo auna velocidad increble y no muestran ningn signo de disminuir su velocidad. A medidaque la tecnologa avanza en todas las reas de nuestras vidas, nos vemos rodeados porun creciente nmero de aparatos avanzados tecnolgicamente. Usted puede ayudar adesarrollarlos y tal vez inventar el prximo gran producto, o simplemente divertirseconstruyendo cosas; la tecnologa es la misma, slo que aplicada diferente! Mirealrededor suyo y piense cmo podra usar un microcontrolador para crear una luz deseguridad para su bicicleta, las luces del auto, un proyecto de arte que use la luz parainteractuar con los espectadores. Piense con sus amigos en un desarrollo paracomenzar a fabricar con perspectivas comerciales...

    Quin sabe?

    A continuacin se muestra varios ejemplo para que se practique yaprendan a utilizar diferentes comandos.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    15/59

    ENCENDER Y APAGAR UN LED.

    Bueno aqu esta el primer ejemplo y el ms sencillo y por donde aprend, prender y apagar un led

    conectado a portb.0:

    Varias formas para hacer lo mismo:inicio:

    High 0pause 1000low 0pause 1000goto inicio

    end

    Inicio:High PORTB.0pause 1000low PORTB.0pause 1000goto inicio

    endTRISB.0=0

    inicio:

    PORTB.0 = 1pause 1000PORTB.0 = 0pause 1000goto inicio

    end

    led var PORTB.0

    inicio:

    high ledpause 1000low ledpause 1000goto inicio

    endinicio:TOGGLE PORTB.0PAUSE 1000goto inicioend

    Cuando se quiera cambiar/conmutar el estado de una lnea que est configurada como salida esms fcil usar instruccin TOGGLE. Led intermitente en RB0.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    16/59

    SEMAFORO

    El cdigo de PBP:

    inicio:high 0:low 1:low 2:low 3:low 4: high 5pause 1000high 0:high 1:low 2:low 3:low 4: high 5

    pause 1000low 0:low 1:high 2:high 3:low 4: low 5pause 1000low 0:low 1:high 2:high 3:high 4: low 5pause 1000goto inicio

    end

    otra forma:

    TRISB=%00000000

    inicio:PORTB = %00100001pause 1000PORTB = %00100011

    pause 1000PORTB = %00001100pause 1000PORTB = %00011100pause 1000goto inicio

    end

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    17/59

    JUEGO DE LUCES

    Juego de luces que cuenta en forma binaria de 0 a 255:

    i var byte

    TRISB=0

    inicio:for i=0 to 255

    PORTB=ipause 50

    next Igoto inicio

    end

    i var byteleds var byte[5]

    TRISB=0

    leds[1]=%10000001leds[2]=%01000010leds[3]=%00100100leds[4]=%00011000

    Leds=1inicio:

    for i=1 to 4PORTB=ledspause 100

    next Ifor i=4 to 1 step-1

    PORTB=ledspause 100

    next igoto inicio

    endJuego de luces al estilo AUTO FANTASTICO:

    i var bytecont var wordTRISB=0

    inicio:cont=1

    for i=1 to 7PORTB=contpause 100cont=cont*2

    next ifor i=1 to 7

    PORTB=contpause 100cont=cont/2

    next igoto inicio

    Otra manera de hacerlo:

    i var byteleds var PORTB

    TRISB=0

    Leds=1

    inicio:for i=1 to 7leds=leds1pause 100

    next igoto inicio

    end

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    18/59

    end

    Display

    En este ejemplo se va a utilizar un display de 7 segmentos y aremos un contador de 0-9 con lafuincion Look Up

    vec var bytenum VAR BYTETRISB = 0

    prog:for vec=0 to 9lookup vec,[191,134,219,207,230,237,253,135,255,239],numportb=numpause 500next vec

    goto progEND

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    19/59

    El mismo contador con un display pero ahora con un vector en el cual almacenaremos los valorescorrespondientes a cada numero (Para los dos ejemplos el Display es de Anodo Comun)

    vec var byte [10]pos var byte

    vec[0]=191vec[1]=134vec[2]=219vec[3]=207vec[4]=230vec[5]=237vec[6]=253vec[7]=135vec[8]=255vec[9]=239

    TRISB=%00000000

    loop:for pos=0 to 9

    PORTB=vec[pos]pause 500

    nextgoto loop

    end

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    20/59

    Un contador ascendente y descendente

    vec var bytenum VAR BYTETRISB = 0

    prog:for vec=0 to 9

    lookup vec,[191,134,219,207,230,237,253,135,255,239],numportb=numpause 500

    next vecfor vec=9 to 0 step -1

    lookup vec,[191,134,219,207,230,237,253,135,255,239],numportb=numpause 500

    next vecgoto progEND

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    21/59

    AQUI LES DEJO ALGUNOS EJEMPLOS SENCILLOS DE PWM

    TRISB=%00000000PortB=0cont VAR wordX1:

    forcont=1 to 255PWM PortB.0,cont,1 'la salida de pwm esta en el port.0,el ancho de

    'pulso sera de cont, el cual representarNext

    goto X1

    OTRO EJEMPLO

    a VAR word

    trisa= %00000000 'salidastrisb= %11111111 'entradas

    x1:for a = 1 to 2500

    pwmporta.0,a,1 'la salida de pwm esta en el port.0,el ancho de pulso sera de dato a, el'cual representar

    PAUSE 5next

    'un ancho de pulso en un porcentaje incremental.for a = 2500 to 1 step-1

    pwm porta.1,a,1PAUSE 5

    next

    goto x1

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    22/59

    EXPERIMENTO 2.

    Detectando el Mundo Exterior

    Tomar decisiones. Nuestro cerebro lo hace todo el tiempo. Tomamos decisiones basndonosen lo que vemos, omos, tocamos, etc. Como aprendimos en el experimento 1 (qu es unmicrocontrolador?), los microcontroladores actan como nuestro cerebro. Ellos manipulan elmundo exterior basados en entradas (inputs). El Experimento 2 se centrar en cmopodemos disear un sistema microcontrolado que pueda cambiar sus salidas (outputs),dependiendo de qu tipo de entradas (inputs) digitales detecta.

    Los microcontroladores son dispositivos programables. Esto quiere decir que contienen unacierta lista de instrucciones (llamada programa o cdigo), que dice qu hay que hacer bajo

    ciertas circunstancias.Sensor:

    Un sensor es un dispositivo de entrada usado para detectar o medir presencia fsica.

    Los ejemplos incluyen sensores que detectan luz, calor, temperatura, curvamiento y

    compuestos qumicos (tales como monxido de carbono).

    Partes requeridas.

    El experimento 2 necesita las siguientes partes:

    (1) Un cable de programacin

    (2) Dos LED (diodos emisores de luz)

    (2) Dos pulsadores

    (1) Un PIC16F84

    (1)Programador

    ( 2) Dos resistores de 470 ohm, watt (amarillo, violeta, marrn)

    (2) Dos resistores de 10k ohm, watt (marrn, negro, naranja)

    (1) Una batera de 9 volts o adaptador

    (6) Seis cables conectores

    (1) Un programa editor de MicroCode Studio

    Hay una infinita variedad de sensores que podemos conectar al Microcontrolador. Esteexperimento incluye un pulsador (un tipo de sensor) y un LED (un dispositivo de salida).

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    23/59

    Constryalo!

    Recuerde que el LED debe ser conectado con el lado liso conectado a los pines de salida P0y P1. Asegrese que haya una resistencia de 220 ohm en serie con cada LED, y que hayaun resistor de 10.000 ohm (10K ohm) conectado al lado alto de cada pulsador (a los 5volts).

    Debido a que este experimento usa dos valores diferentes de resistores, y ambos se venparecidos, cmo los puedo separar?. Leyendo las bandas con el cdigo de colores. Siusted no conoce cmo leer el cdigo, mire el Apndice C para averiguarlo.

    Escriba el siguiente programa:

    Programelo!

    Este circuito tiene un tipo de sensor (el pulsador) y un tipo de dispositivo de salida (el LED).Una vez que usted tiene todos los componentes instalados en el rea del prototipo.

    TRISB.0=1

    inicio:if PORTB.0 = 0 then

    high 1else

    low 1

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    24/59

    endifgoto inicio

    end

    Ahora, corra el programa.

    Si su programa est trabajando apropiadamente, el LED debe prender, mientras ustedpresiona el pulsador. Ahora analicemos paso por paso nuestro programa: Nuestro primercomando, TrisB.0=1 hace el pin B0 una entrada (input). La instruccin High 1, fija elregistro de salida de B1 a un valor igual a 1, o alto (high) por lo tanto el LED estencendido.

    Recuerde del Experimento 1, que un comando como inicio: realmente no es un comando,es una etiqueta (simplemente un marcador o puntero a cierto lugar de su programa). Cuandonuestro programa eventualmente encuentre el comando goto inicio, el programa buscarla etiqueta inicio, saltar hasta ella, y luego continuar ejecutando el programa desde esepunto. El comando if PORTB.0=0 then le dice al microcontrolador que revise el estado del

    pin llamado B0. Cuando un microcontrolador revisa el estado de un pin en particular, lo querealmente est haciendo es leer el valor digital de ese pin.

    El campo de la electrnica est generalmente dividido en dos diferentes dominios del tipode seal Digital y Analgico. Nuestra entrada del pulsador es tanto un 0 o un 1 (abiertoo cerrado). Este es un sensor de tipo digital.

    Medir el nivel del volumen de un amplificador de audio, son ejemplos de entrada analgica.Sensores para ste tipo de aplicacin, convierten una medicin, por ejemplo de 10 cm, a unvalor digital que el microcontrolador pueda entender. Exploraremos este mundo fascinantede la Conversin. Analgico a Digital en un experimento futuro.

    En electrnica digital (binaria), cualquier valor distinto de 0 y 1 es considerado invlido. Porlo tanto, cuando el microcontrolador lee el estado de B0, ver un valor de 0 o 1. Nosotrosbuscamos que B0 sea un 0. Si (cuando el microcontrolador lo revisa) es un 1, entonceseste comando har que B1 se apague, por lo tanto no har nada, y el programa secontinuar ejecutando en el siguiente comando (en este caso, goto inicio lo que causaque el programa salte al principio y continuamente revise que B0 se convierta en un 0).Una vez que B0 se convierta en 0 entonces las condiciones para este comando secumplen y el programa har que B0 se ponga en alto, por lo tanto el led se enciende, luegohace que el programa regrese y revise el estado de B0 nuevamente y repita todonuevamente.

    El programa lo ayudar a encontrar errores de sintaxis cuando corra el programa y no se

    ejecute adecuadamente aparecern los errores indicndoles en que lnea e instruccin seencuentra el error, beber aprenderse la sintaxis de cada instruccin para ir adquiriendocada vez mayor experiencia para resolver los diferentes errores que se le presente. Revisenuevamente su programa y asegrese que ha escrito todo correctamente.

    Antes de hacer funcionar este programa, puede usted decir qu va a hacer? El programatomar una decisin basado en qu botn es presionado. Una vez que cualquier botn espresionado, el programa saltar a la rutina apropiada. El microcontrolador est sensando

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    25/59

    una entrada, tomando una decisin, y luego creando una salida. El comando if - then, sefija en la toma una decisin basada en el estado de un pin.

    Una variable nos permite almacenar cierta pieza de informacin (ingresada ahora), para unanlisis posterior.

    Las variables deben ser declaradas antes de ser usadas en un programa. Declarar unavariable simplemente es una instruccin en su programa que le avisa al microcontrolador elnombre de la variable y qu tan grande es.

    Escribamos ahora varios programas diferentes en un programa nuevo.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    26/59

    El mismo ejemplo pero esta ves con unaresistencia de pull down:

    TRISB.0=1

    inicio:

    if PORTB.0 = 1 thenhigh 1

    elselow 1

    endifgoto inicio

    end

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    27/59

    BOTONES Y LEDS

    Este tiene dos botones el uno sirve para subir y el otro para bajar:

    i var bytecont var word

    cmcon=7

    TRISB=0TRISA=%00000011cont=1PORTB=continicio:

    if PORTA.0=0 thencont=cont*2PORTB=contif cont>=256 then

    cont=1PORTB=cont

    endifpause 200

    elsecont=cont

    endifif PORTA.1=0 then

    cont=cont/2PORTB=contif cont

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    28/59

    pause 200else

    cont=contendifgoto inicio

    end

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    29/59

    Contador con Pulsantes

    Este es un contador ascendente y descendente....posee dos pulsantes que sirven para subir ybajar el conteo:

    vec var bytenum VAR BYTE

    TRISA = %00000011TRISB = 0

    cmcon=7vec=0PORTB=64

    inicio:if PORTA.0=0 then

    vec=vec+1lookup vec,[0,191,134,219,207,230,237,253,135,255,239],numportb=numif vec>=10 then

    vec=0endifpause 200

    endif

    if PORTA.1=0 thenvec=vec-1lookup vec,[0,191,134,219,207,230,237,253,135,255,239],numportb=numif vec

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    30/59

    END

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    31/59

    CONTADOR CON PULSANTES

    A diferencia del anterior que el conteo se la hacia cuando se pulsaba aqui es conteo esautomatico y los pulsantes sirven para elegir si se quiere que el conteo sea ascendente o

    descendente...

    vecvar bytenum VAR BYTEflag var byte

    TRISA = %00000011TRISB = 0

    cmcon=7vec=0flag=1

    inicio:if PORTA.0=0 then

    flag=1endifif PORTA.1=0 then

    flag=0endifif flag=1 then

    gosub subir

    endifif flag=0 then

    gosub bajarendif

    goto inicio

    Subir:vec=vec+1lookup vec,[0,191,134,219,207,230,237,253,135,255,239],numportb=num

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    32/59

    if vec>=10 thenvec=0

    endifpause 200return

    Bajar:vec=vec-1lookup vec,[0,191,134,219,207,230,237,253,135,255,239],numportb=numif vec

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    33/59

    Preguntas

    1. Cmo toma una decisin un microcontrolador?

    2. Qu es un sensor y por qu un microcontrolador necesita uno? Mencione algunostipos diferentes de sensores.

    3. Defina una variable y describa cmo puede ser usada en un programa.

    4. Escriba el cdigo para declarar una variable llamada status. La variable podra valertanto 0 como 1.

    5. Agregue comentarios apropiados al siguiente programa:

    output portb.0 ____________________________

    output portb.1 ____________________________

    input porta.0 ____________________________

    input porta.1 ____________________________

    revisar: ____________________________

    if porta.0=0 then titi lar ____________________________

    if porta.1=0 then dobletitilar ____________________________

    goto revisar ____________________________

    titilar: ____________________________

    low 0 ____________________________

    pause 200 ____________________________

    high 0 ____________________________

    pause 200 ____________________________

    goto revisar ____________________________

    doble_titilar: ____________________________

    low 0 ____________________________

    low 1 ____________________________

    pause 200 ____________________________

    high 0 ____________________________

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    34/59

    high 1 ____________________________

    pause 200 ____________________________

    goto revisar ____________________________

    DESAFIO!

    1. Escriba un programa (completo, con comentarios) que haga titilar al LED B0(cada segundo), mientras est presionado el pulsador P2. Cuando el botn no estpresionado, el LED B1 est encendido, pero se apaga cuando el LED B0 est titilando.

    2. Escriba un programa que haga titilar ambos LED (cada 1.2 segundos) cuando cualquierpulsador es presionado. Si ningn pulsador es presionado, los LED estn encendidos y siambos pulsadores son presionados, ambos LED estn apagados.

    3. Escriba un programa que haga titilar alternadamente los LED cada segundo, perosolamente despus de que P2 haya sido presionado y liberado, y luego de que P1 seapresionado. Luego, escriba comentarios en su programa mostrando que cambios hara parainvertir el orden en que presionara los interruptores.

    4. Escriba un programa que haga titilar los LED (cada .2 segundos) cada vez que el pulsadorP2 es presionado. Luego, mientras el pulsador P2 est presionado, el LED B1 es apagadocuando el pulsador P1 es presionado (pero el LED B0 an sigue titilando).

    QUE APRENDI?

    Complete las siguientes oraciones con las palabras de la lista.

    Microcontroladores necesitan tan _______para saber que est pasando en el mundoexterior. Usando comandos PBP tales como _____________, nuestro programapuede determinar que tipo de respuesta es la apropiada. Hay una variedad infinita desensores que pueden ser conectados al PIC. Aunque los interruptores que usamos eneste experimento fueron______________presionndolos, podran fcilmente haber sidolos interruptores de las puertas de un ascensor aquellos que evitan que seamosaplastados al cerrarse las puertas.

    _______________ Son usadas para retener la informacin, permitindole al programaobtener los datos ahora (tal vez de varias entradas diferentes), y ms tarde tomardecisiones en el momento apropiado.

    Las variables pueden ser_____________, o inicializadas (set up), en 4 tamaosdiferentes. Si queremos controlar el estado (alto o bajo) de un_________en particular,entonces fijamos la variable como un simple bit. Las variables pueden tener hasta 32caracteres de longitud. Es importante recordar cuando usamos variables, darle un

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    35/59

    nombre que tenga relacin con el dato que almacena. La longitud del nombre no tieneinfluencia en que tan rpido su_________se ejecuta, pero un nombre muy descriptivohace mucho ms fcil de______su programa.

    l/0 pin

    declaradas

    entradas (o sensores)

    if in1=0

    programa

    activados

    debug (depurar)

    variables

    La verdadera importancia de los microcontroladores es su habilidad para tomardecisiones basndose en las entradas. Las entradas a los microcontroladores, debentener un formato digital, pero muchos tipos de situaciones del mundo exterior sonanalgicas por naturaleza. La tecnologa de los sensores es una de las reas msdesafiantes de la electrnica. Hay cientos de tipos diferentes de sensores en elTransbordador Espacial y en los satlites que l pone en rbita. Mucha gente seespecializa en el diseo de sensores que se comunican con microcontroladores. Si austed le gusta ms trabajar con hardware, en lugar de escribir programas (crearsoftware), ste podra ser un campo muy excitante y an desafiante. Cualquier sistemamicrocontrolador (o para el caso, computado), depende de las entradas digitales paratomar decisiones correctas. Es importante recordar que las decisiones del

    microcontrolador son solamente tan buenas como el programa que estn ejecutando, yde la calidad de los sensores de entrada. Cuanto ms mire a su alrededor, msaplicaciones ver para la tecnologa de sensores y microcontroladores.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    36/59

    CMO PUEDO

    APLICARLO?

    Muchas tiendas tienen una especie de timbre en la puerta, que suena cuando uno laatraviesa. Cada vez que el timbre suena, el dueo mira y se fija quin entr. Usando unsensor de proximidad, que detecta la presencia de un objeto, (similar a un botn queest siendo presionado), usted podra detectar cundo alguien atraviesa una puerta.Usando tres sensores, usted podra determinar en qu direccin la estn atravesando.Entonces, usando dos tonos, podramos saber con uno, si alguien est entrando, y conel otro, si alguien est saliendo.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    37/59

    Apndice A:

    1. Introduccin a la Ingeniera1.1 El alumno distinguir el concepto de ingeniera, identificando sus perfiles profesionales y campos ocupacionales

    Identifique los conceptos de ingeniera

    1.1.1 Distingue los conceptos de tcnica, tecnologa, ciencia y disciplina1.1.2 Distingue las ramas de la ingeniera1.1.3 Distingue el perfil profesional de un ingeniero1.1.4 Distingue el campo ocupacional de un ingeniero

    1.2 El alumno conceptualizara el trmino de ingeniera y del anlisis del plan de estudios, identificara su programa deformacin y campo ocupacional.

    1.2.1 Relacione los antecedentes, conceptos y tendencias de la mecatrnica con la ingeniera1.2.2 Relacione el programa (plan de estudios) de formacin con el perfil profesional y campo ocupacional1.2.3 Identifica al menos una funcin, dos competencias y cinco capacidades del ingeniero mecatrnico.

    2 Introduccin a los sistemas mecatrnicos2.1 El alumno identificara los elementos bsicos de un sistema mecatrnico, analizara su funcionamiento al compararlo conlas partes de un cuerpo humano

    2.1.1 Ejemplifique los conceptos de sistema y sinergia2.1.2 Identifique los elementos que conforman un sistema mecatrnico2.1.3 Compare los elementos de un sistema mecatrnico con las partes del cuerpo humano2.1.4 Distingue un producto y un sistema mecatrnico

    2.2 El alumno identificara el funcionamiento y caractersticas bsicas de los elementos que proporcionan informacin delentorno en sistema mecatrnico

    2.2.1Identifique el funcionamiento bsico de un elemento de al menos dos tipos de botones pulsadores, tresinterruptores y cuatro sensores

    2.3 El alumno identificara el funcionamiento y caractersticas de los elementos que ejecutan la accin de control de unsistema mecatrnico

    2.3.1 Identifique el funcionamiento de los motores de corriente directa, de corriente alterna, servomotores y apasos2.3.2 Identifique el funcionamiento de al menos dos electrovlvulas

    2.3.3 Identifique el funcionamiento de al menos dos tipos de lmparas indicadoras y desplegados.2.4 El alumno identificara el funcionamiento y caractersticas de los elementos que permiten el movimiento a las partesmecnicas de un sistema mecatrnico

    2.4.1 Identifique el funcionamiento bsico de un tren de engranes, una banda y polea, una gua lineal, un tornilloauto embalado, una rueda dentada y trinquete y de un sistema de transporte (banda trasportadora)

    2.5 El alumno identificara el funcionamiento y caractersticas de los dispositivos que controlan un sistema mecatrnico.

    2.5.1 Identifique el funcionamiento bsico de los circuitos digitales basados en compuertas lgicas, dispositivosprogramables, microprocesadores y microcontroladores2.5.2 Identifique el funcionamiento bsico de los circuitos de control basados en relevadores y controladoreslgicos programables

    2.6 El alumno identificara el funcionamiento y caractersticas los dispositivos que acoplan las seales desde y hacia elcontrolador.

    2.6.1 Identifique el funcionamiento bsico de los circuitos acondicionadores de seal y de los circuitosmanejadores para actuadores.

    2.7 El alumno identificara el funcionamiento y caractersticas de los dispositivos que entregan energa a los sistemasmecatrnicos.

    2.7.1 Identifique el funcionamiento bsico de las etapas de una fuente de alimentacin c.d. y c.a.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    38/59

    Apndice B:

    REFERENCIA DE DECLARACIONES PBP

    @ Inserta una linea de codigo ensamblador

    ASM...ENDASM Inserta una seccion de codigo ensamblador

    BRANCH GOTO computado(equiv. a ON..GOTO)

    BRANCHL BRANCH fuera de pagina(BRANCH largo)

    BUTTON Anti-rebote y auto-repeticion de entrada en el pin especificado

    CALL Llamada a subrutina de ensamblador

    CLEAR Hace cero todas las variables

    COUNT Cuenta el numero de pulsos en un pin

    DATA Define el contenido inicial en un chip EEPROM

    DEBUG Seal asincronica de salida en un pin fijo y baud

    DISABLE Deshabilita el procesamiento de ON INTERRUPT

    DTMFOUT Produce tonos en un pin

    EEPROM Define el contenido inicial en un chip EEPROM

    ENABLE Habilita el procesamiento de ON INTERRUPT

    END Detiene la ejecucion e ingresa en modo de baja potencia

    FOR...NEXT Ejecuta declaraciones en forma repetitiva

    FREQOUT Produce hasta 2 freuencias en un pin

    GOSUB Llama a una subrutina BASIC en la etiqueta especificada

    GOTO Continua la ejecucion en la etiqueta especificada

    HIGH Hace alto la salida del pin

    HSERIN Entrada serial asincronica(hardware)

    HSEROUT Salida serial asincronica(hardware)

    I2CREAD Lee bytes de dispositivo I2C

    I2CWRITE Graba bytes en dispositivo I2C

    IF..THEN..ELSE..ENDIF Ejecuta declaraciones en forma condicional

    INPUT Convierte un pin en entrada

    (LET) Asigna el resultado de una expresion a una variable

    LCDOUT Muestra caracteres en LCD

    LOOKDOWN Busca un valor en una tabla de constantes

    LOOKDOWN2 Busca un valor en una tabla de constantes o variables

    LOOKUP Obtiene un valor constante de una tabla

    LOOKUP2 Obtiene un valor constante o variable de una tabla

    LOW Hace bajo la salida de un pin

    NAP Apaga el procesador por un corto periodo de tiempo

    ON INTERRUPT Ejecuta una subrutina BASIC en un interrupt

    OUTPUT Convierte un pin en salida

    PAUSE Demora (resolucion 1mseg.)

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    39/59

    PAUSEUS Demora (resolucion 1 useg.)

    PEEK Lee un byte del registro

    POKE Graba un byte en el registro

    POT Lee el potenciomet ro en el pin especificado

    PULSIN Mide el ancho de pulso en un pin

    PULSOUT Genera pulso hacia un pin

    PWM Salida modulada en ancho de pulso a un pin

    RANDOM Genera numero pseudo-aleatorio

    RCTIME Mide el ancho de pulso en un pin

    READ Lee byte de un chip EEPROM

    RESUME Continua la ejecucion despues de una interrupcion

    RETURN Continua en la declaracion que sigue al ultimo GOSUB

    REVERSE Convierte un pin de salida en entrada o uno de entrada en salida

    SERIN Entrada serial asincronica (tipo BS!)

    SERIN2 Entrada serial asincronica (tipo BS2)

    SEROUT Salida serial asincronica (tipo BS1)

    SEROUT2 Salida serial asincronica (tipo BS2)

    SHIFTIN Entrada serial sincronica

    SHIFTOUT Salida serial sincronica

    SLEEP Apaga el procesador por un periodo de tiempo

    SOUND Genera un tono o ruido blanco en un pin

    STOP Detiene la ejecucion del programa

    SWAP Intercambia los valores de dos variables

    TOGGLE Hace salida a un pin y cambia su estado

    WHILE..WEND Ejecuta declaraciones mientras la condicion sea cierta

    WRITE Graba bytes a un chip EEPROM

    XIN Entrada X - 10

    XOUT Salida X - 10

    5.1. @

    @ declaracion

    Cuando se usa al comienzo de una lnea, provee un atajo para insertar una declaracion en lenguaje ensamblador en un programa PBP. Este atajo se puede usar libremente para unir codigo

    ensamblador con declaraciones PBP.

    I var byte

    Rollme var byte

    For i = 1 to 4

    @ rlf _rollme, F: rotar byte a la izquierda una vez

    next i

    El atajo @ tambien se puede usar para incluir rutinas en lenguaje ensamblador en otro archivo. Por ejemplo

    @ Include fp.asm

    @ resetea a 0 la pgina del registro antes de ejecutar la instruccin en lenguaje ensamblador. La pgina del registro no debe ser alterada usando @

    Vea la seccion de programacion del ensamblador para mayor informacion.

    5.2. ASM..ENDASM

    ASM

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    40/59

    ENDASM

    Estas instrucciones le dicen a PBP que el codigo entre estas dos lneas esta en lenguaje ensamblador y no debe ser interpretado como declaraciones PBP. Se puede usar estas dos

    instrucciones libremente para mezclar cdigo ensamblador con declaraciones PBP.

    El tamao mximo para una seccin de texto ensamblador es 8 K. Este es el tamao mximo para el fuente actual, incluyendo comentarios, no el cdigo generado. Si el bloque de texto es

    mayor, divdalo en mltiples secciones ASM... ENDASM o incluyalo en un archivo separado.

    ASM resetea a 0 el registro de pgina. Debe asegurarse que el registro de pgina sea 0 antes de ENDASM si el cdigo de ensamblador lo ha alterado.

    Vea la seccin de programacin de ensamblador para ms informacin.

    ASM

    Bsf PORTA, 0; setea bit 0 en PORTA

    Bcf PORTB.0; setea bit 0 en PORTB

    ENDASM

    5.3. BRANCH

    BRANCH index, [etiqueta {, etiqueta .....}]

    Causa que el programa salte a una posicin diferente, basada en una variable indexada. Es similar al ON...GOTO de otros BASIC.

    Index selecciona una etiqueta de una lista .La ejecucion comienza en la etiqueta especificada. Por ejemplo, si Index es 0, el programa salta a la primer etiqueta especificada en la lista, si Index

    es 1, salta a la segunda y as s ucesivamente... Si Index es mayor igual al nmero de etiquetas, no se toma ninguna accin y la ejecucin contina con la declaracin siguiente al BRANCH.

    Se pueden usar hasta 256 etiquetas en un BRANCH.

    Etiqueta debe estar en la misma pgina de cdigo que la instruccin BRANCH. Si no est seguro de esto, use BRANCHL.

    BRANCH B4, [dog, cat, fish]

    igual que:

    if B4=0 then dog (goto dog)

    if B4=1 then cat (goto cat)

    if B4=2 then fish (goto fish)

    5.4. BRANCHL

    BRANCHL Index, [etiqueta {, etiqueta....}]

    BRANCHL trabaja en forma similar a BRANCH, haciendo que el programa salte a una localizacin determinada, basndose en una variable indexada. Las principales diferencias son que

    puede saltar a una etiqueta ubicada en otra pgina de cdigo y que genera un cdigo dos veces mayor en tamao al de BRANCH... Si est seguro que las etiquetas estn en la misma pgina

    que el BRANCH si el microcontrolador no tiene ms que una pgina de cdigo (2K menos de ROM), use BRANCH para minimizar el uso de memoria.

    Index selecciona una etiqueta de una lista .La ejecucion comienza en la etiqueta especificada .Por ejemplo, si Index es 0, el programa salta a la primer etiqueta especificada en la lista, si Index

    es 1, salta a la segunda y as sucesivamente... Si Index es mayor igual al nmero de etiquetas, no se toma ninguna accin y la ejecucin contina con la declaracin siguiente al BRANCHL.

    Se pueden usar hasta 128 etiquetas en un BRANCHL.

    BRANCHL B4, [dog, cat, fish]

    igual que:

    if B4=0 then dog (goto dog)

    if B4=1 then cat (goto cat)

    if B4=2 then fish (goto fish)

    5.5. BUTTON

    BUTTON, Pin, Down, Delay, Rate, Bvar, Action, Etiqueta

    Lee Pin y opcionalmente ejecuta anti-rebote y auto-repeticin. Pin automticamente se toma como entrada. Pin debe ser una constante, 0 - 15, o una variable que contenga un nmero 0 - 15

    (p.ej. B0) un nmero de pin (p.ej. PORTA ,0)

    Down Estado del pin cuando se oprime el pulsador ( 0 ...1)

    DelayContador de ciclos antes de que comience la auto-repeticin (0...255). Si es 0, no se efectua anti-rebote ni auto.repeticin .Si es 255 se eliminan rebotes,

    pero no auto-repeticin.

    Rate Valor de auto-repetic in (0..255)

    BvarVariable con tamao de byte usada internamente para conteo de demoras y repeticiones, Dene ser inicializada a 0 antes de ser usada y no ser usada en

    cualquier lugar del programa.

    Action Estado del pulsador a ser actuado.

    Etiqueta La ejecucin comienza en esta etiqueta si es cierto Action.

    goto notpressed if button not pressed on Pin2

    BUTTON PORTB, 2, 0, 100, 10, b2, 0, notpressed

    BUTTON necesita ser usado dentro de un loop para auto-repeticin para funcionar adecuadamente.

    BUTTON permite eliminar rebotes, demorando la ejecucin de un programa por un perodo de milisegundos para permitir que los contactos se asienten. La demora por defecto es 10 ms..

    Para cambiarlo a otro valor use DEFINE.

    setea la demora de anti-rebote a 50 ms

    DEFINE BUTTON_PAUSE 50

    BUTTON_PAUSE debe estar en maysculas.

    En general, es ms fcil leer el estado del pin con un IF. . THEN que usar el comando BUTTON.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    41/59

    IF PORTB, 2 = 1 THEN notpressed

    5.6. CALL CALL etiquetaEjecuta la s ubrutina ensamblador llamada etiqueta.

    Normalmente se usa GOSUB para ejecutar una subrutina PBP. La principal diferencia entre GOSUB y CALL, es que con sta ltima no se chequea la existencia de etiquetas hasta el

    momento de ensamblar. Usando CALL se puede acceder a una etiqueta en una seccin de lenguaje ensamblador, lo que es inaccesible mediante PBP.

    CALL pass ejecuta la subrutina ensamblada, denominada _pass

    5.7. CLEAR

    CLEAR

    Coloca en cero todos los registros en cada banco. Coloca en cero todas las variables, incluyendo las del sistema.Esto no se hace automticamente al comenzar un programa en PBP, como

    sucede en BASIC Stamps.Por lo general, las variables deben ser colocadas en un estado inicial apropiado por el programa, y no usando CLEAR.

    CLEAR Coloca todas las variables en c ero

    5.8. COUNT COUNT Pin, Period, VarCuenta el nmero de pulsos en un Pin, durante un perodo Period, y guarda el resultado en Var. Pin es automticamente colocado como entrada. Pin debe ser una constante, 0-15, una

    variable que contenga un nmero de 0 a 15 (p.ej. B0). un numero de pin.

    La resolucin de Period est dada en milisegundos. Sigue la frecuencia del oscilador basado en DEFINE OSC.

    VCOUNT chequea el estado de Pin mediante un loop y cuenta las transiciones de bajo a alto. Con un oscilador de 4 Mhz chequea el estado del pin cada 20 us. Con un oscilador de 20 Mhz

    chequea el estado cada 4 us. De esto, se infiere que la mayor frecuencia de pulsos que puede ser contada, es de 25 Khz con un oscilador de 4 Mhz y de 125 Khz con un oscilador de 20 Mhz

    si la frecuencia tiene un ciclo til del 50 % (los tiempos altos son iguales a los bajos). cuenta el nmero de pulsos en Pin1 en 100 ms

    COUNT PORTB.1, 100, W1

    determinar la frecuencia en un Pin

    COUNT PORTA.2, 1000, W1 contar por 1 segundo

    Serout PORTB.0, N2400, [W1]

    5.9. DATA

    DATA {@ location,} constante {, constante}

    Guarda constantes en un chip EEPROM cuando este dispositivo se programa por primera vez. Si se omite el valor opcional location, la primer declaracin de DATA comienza a almacenarse

    en la direccin 0 y las declaraciones siguientes, en las direcciones siguientes. Si existe un valor location este indica la direccin de comienzo donde se almacenar la informacin. Una

    etiqueta opcional se le puede asignar a la direccin de comienzo, para futuras referencias del programa.

    Constante puede ser una constante numrica una sarta de constantes. Solo se guarda el byte menos significativo del valor numrico, excepto que se use el modificador WORD. Las sartas

    se guardan como bytes consecutivos de valores ASCII. No se agregan terminadores ni se completa el largo.

    DATA solo funciona con m icro controladores con EEPROM incorporado como el PIC16F84 y PIC16C84 .Dado que el EEPROM es una memoria no-volatil, los datos permanecen intactos an

    cuando se quite la energa.

    Los datos se guardan dentro del EEPROM una sola vez en el momento en que se programa el micro controlador, no cada vez que se ejecuta el programa.

    WRITE se usa para colocar los valores en el EEPROM en el momento de ejecucin.

    guardar 10,20 y 30 comenzando en la posicin 5

    DATA @5, 10, 20, 30

    asignar una etiqueta a un word en la prxima ubicacin

    dlabel DATA word $1234 guarda $34, $12

    saltear 4 posiciones y guardar 10 ceros

    DATA (4), 0 (10)

    5.10. DEBUG

    DEBUG item {, item ...}

    Envia uno ms items a un pin predefinido con un baud rate predefinido en formato standard asincrnico, usando 8 bits de datos, sin paridad y con 1 bit de parada (stop bit) (8N1) El pin,

    automticamente se convierte en salida. Si un signo (#) precede a un item, se enva serialmente la representacin ASCII para cada dgito. DEBUG soporta los m ismos modificadores de datos

    que SEROUT2. DEBUG es una de varias funciones seriales asincronicas pre-construidas. Es la ms pequea de las rutinas seriales generadas por software. Puede ser usada para enviar

    informacin de depuracin (variables, posicin de marcadores , etc).a un programa terminal como HyperTerm. Tambin se puede usar cuando se desee salida serial sobre un pin determinado

    y con un baud rate determinado. Los pin y baud rate seriales son especificadas usando DEFINEs: Set Debug pin port

    DEFINE DEBUG_REG PORTB Set Debug pin bitDEFINE DEBUG_BIT 0

    Set Debug baud rate

    DEFINE DEBUG_BAUD 2400

    Set Debug mode: 0= cierto, 1= invertidoDEFINE DEBUG_MODE 1

    DEBUG asume un oscilador de 4 Mhz, cuando est generando su tiempo de bit. Para mantener el tiempo apropiado del baud rate con otros valores de osciladores, asegurese de DEFINE el

    seteo de OSC al valor de oscilador deseado.

    En algunos casos, la tasa de transmisin de las instrucciones de DEBUG podran presentar los caracteres demasiado rpidamente al dispositivo receptor. Un DEFINE agrega una demora de

    caracteres para las transmisiones seriales de salida. Esto permite un tiempo adicional entre los caracteres a medida que son transmitidos. La demora de caracter DEFINE permite un atraso de

    1 a 65,535 microsegundos (.001 a 65.535 milisegundos) entre cada carcter transmitido. Por ejemplo, para pausar 1 milisegundo entre la transmisin de cada caracter:

    DEFINE DEBUG_PACING 1000

    Si bien los chips convertidores de nivel RS-232 son comunes y econmicos, gracias a la implementacin de corriente RS-232 y a las excelentes especificaciones I/O del micro PIC; la mayora

    de las aplicaciones no requieren convertidores de nivel. Se puede usar TTL invertido (DEBUG_MODE =1) Se sugiere un resistor limitador de corriente (se supone que RS-232 es tolerante a

    los cortocircuitos).

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    42/59

    Enviar el texto B0= s eguido por el valor decimal de B0 y un avance de

    lnea (linefeed) serialmente a la salida

    DEBUG B0= ,dec B0, 10

    5.11. DISABLEDISABLEDISABLE interrumpe el procesamiento siguiente a la instruccin. Pueden ocurrir otras Interrupciones, pero el manipulador de interrupciones del BASIC en el PBP, no se ejecutar hasta que se

    encuentre un ENABLE.

    DISABLE y ENABLE son pseudo-operaciones en el sentido que dan direcciones de compilador, en lugar de producir cdigo. Vea ON INTERRUPT para ms informacin.

    DISABLE Deshablita interrupciones en el handler

    Myint: led = 1 enciende el LED cuando es interrumpido

    Resume Vuelve al programa principal

    Enable ENABLE interrumpe despus del handler

    5.12. DTMFOUT

    DTMFOUT Pin, {Onms, Offms,} [Tone {, Tone}]

    Produce una secue ncia DTMF Touch Tone en Pin, Pin automticamente se convier te en salida. Pin debe ser una consta nte, 0 - 15, una variable que contenga un nmero de 0 a 15 (p.ej. B0)

    un nmero de pin (p.ej. B0)

    Onms es el nmero de milisegundos que suena cada tono y Offms es el nmero de milisegundos de pausa entre cada tono .Si no estn especificados, por defecto Onms es 200 ms y Offms

    es 50 ms.

    Tones tiene un valor de 0 - 15. Los tonos de 0 - 9 son los mismos que en un teclado telefnico. Tone 10 es la clave *, Tone 11 es la clave #, y los Tones 12 - 15 corresponden a las teclas

    extendidas A -D.

    DTMFOUT usa FREQOUT para generar los tonos duales. FREQOUT genera tonos usando una forma de modulacin de ancho de pulso. Los datos en bruto que salen del pin son bastante

    horribles. Usualmente se necesita algn tipo de filtro para suavizar la seal hasta una forma de onda senoidal quitndole algunas armnicas generadas:

    DTMFOUT trabaja mejor con un oscilador de 20 Mhz. Tambin puede trabajar con uno de 10 Mhz y an con uno de 4 Mhz, aunque ser muy difcil de filtrar y tendr muy baja amplitud.

    Cualquier otra frecuencia causar que DTMFOUT genere una frecuencia proporcional al oscilador comparado a 20 Mhz, lo que no ser muy til para enviar touch tones.

    enviar DTMF tones para 212 en Pin1

    DTMFOUT PORTB.1, [ 2, 1, 2 ]

    5.13. EEPROM

    EEPROM {Location,} [constante {, constante ...}]

    Guarda constantes en un chip EEPROM. Si se omite el valor opcional Location, la primera declaracin se guarda en la direccin 0 del EEPROM y las subsiguientes en las siguientes

    direcciones del mismo. Si se indica un valor Location, ste indica la direccin de comienzo para guardar los datos.

    Constante puede ser una constante numrica una sarta de constantes. Solo se guardan los bytes menos significativos de los valores numricos. Las sartas son guardadas como bytes

    consecutivos d valores ASCII. No se agregan automticamente terminadores, ni se completa el largo.

    EEPROM solo trabaja con micro controladores con EEPROM incorporado como el PIC16F84 y PIC16C84. Dado que el EEPROM es una memoria no voltil, los datos permanecern intactos

    an sin alimentacin.

    ps datos son guardados en el EEPROM solo una vez, cuando el micro controlador es programado, no cada vez que s e ejecuta el programa. Se puede usar WRITE para colocar valores en el

    EEPROM en el momento de la ejecucin.

    EEPROM 5, [10, 20, 30] Guardar 10, 20, 30 comenzando en la direccin 5

    5.14. ENABLE

    ENABLE

    ENABLE interrumpe el procesamiento que fue previamente deshabiliyado con DISABLE, siguiendo a esta instruccin.

    DISABLE y ENABLE son pseudo-operaciones en el sentido que dan direcciones de compilador, en lugar de producir cdigo. Vea ON INTERRUPT para ms informacin.

    DISABLE Deshablita interrupciones en el handler

    Myint: led = 1 enciende el LED cuando es interrumpido

    Resume Vuelve al programa principal

    Enable ENABLE interrumpe despus del handler

    5.15. ENDENDDetiene la ejecucin del proceso y entra en modo de baja potencia .Todos los pins de I/O permanecen en el estado en que se encuentran, END trabaja ejecutando una instruccin SLEEP

    continua dentro de un loop.

    Un END, STOP GOTO deben ser colocados al final de un programa para evitar pasar del lmite de la misma u comience nuevamente. END

    5.16. FOR... NEXT

    FOR Count = Start TO End {STEP {-} Inc}

    {Body}

    NEXT {Count}El loop FOR... NEXT permite a los programas ejecutar un nmero de declaraciones (Body) un nmero de veces, usando una variable como contador. Debido a su complejidad y versatilidad,

    es mejor describirla paso a paso. El valor de Start se asigna a la variable ndice, Count, que puede ser una variable de cualquier tipo. Se ejecuta el Body. Body es opcional y puede ser omitido

    (quizs por un loop de demora).

    El valor de Inc es sumado a ( restado si se especifica -) Counr. Si no se define una clusula.

    STEP, se incrementa Count en uno. Si Count no pas End desbord el tipo de variable, la ejecucin vuelve al paso 2). Si el loop necesita contar ms de 255 (Count > 255), se debe usar una

    variable de tamao word.

    FOR i=1 TO 10 cuenta de 1 a 10

    Serout 0, N2400, [ # i, ] enva cada nmero al pin 0 en forma serial

    NEXT i vuelve y efecta la prxima cuenta

    Serout 0, N2400, [10] enva un avance de lnea

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    43/59

    FOR B2=20 TO 10 STEP -2 cuenta de 20 a 10 de a 2

    Serout 0, N2400, [# B2, ] enva cada nmero al pin0 en forma serial

    NEXT B2 vuelve y efecta la prxima cuenta

    Serout 0,N2500,, [ 10 ] enva un avance de lnea

    5.17. FREQOUT

    FREQOUT Pin, Onms, Frequency1 {, Frequency2}

    Produce la las frecuencias especificadas en el Pin, durante Onms milisegundos. Pin se convierte automticamene en salida. Pin puede ser una constante, 0-15, una variable que contenga

    un nmero 0 - 15. (p.ej. B0) un nmero de pin (p.ej. PORTA.0).

    Puede producir una dos frecuencias de 0 a 32767 Hz al mismo tiempo.

    FREQOUT genera tonos usando una forma de modulacin de ancho de pulso. Los datos en bruto que salen del pin son bastante horribles. Usualmente se necesita algn tipo de filtro para

    suavizar la seal hasta una forma de onda senoidal quitndole algunas armnicas generadas:

    FREQOUT trabaja mejor con un oscilador de 20 Mhz. Tambin puede trabajar con uno de 10 Mhz y an con uno de 4 Mhz, aunque ser muy difcil de filtrar y tendr muy baja amplitud.

    Cualquier otra frecuencia causar que FREQOUT genere una frecuencia proporcional al oscilador comparado a 20 Mhz.

    FREQOUT PORTB.1, 2000, 1000 Enviar un tono de 1 Khz al Pin1 durante 2 segundos

    5.18. GOSUB

    GOSUB etiqueta

    Salta a la subrutina indicada en la etiqueta, guardando su direccin de regreso en la pila (stack). A diferencia del GOTO, cuando se llega a un RETURN, la ejecucin sigue con la declaracin

    siguiente al ltimo GOSUB ejecutado. Se puede usar un nmero ilimitado de subrutinas en un programa y pueden estar anidadas. En otras palabras, las subrutinas pueden llamar a otra

    subrutina. Cada anidamiento no debe ser mayor de cuatro niveles.

    GOSUB beep ejecuta la subrutina beep

    Beep: high 0 enciende el LED conectado a Pin0

    Sound 1, [80, 10] hace sonar el parlante conectado a Pin1

    Low 0 apaga el LED conectado a Pin0

    Return vuelve a la rutina principal

    5.19. GOTOGOTO etiquetaLa ejecucin del programa contina en la declaracin de la etiqueta.

    GOTO send salta a la declaracin etiquetada send

    Send: serout 0, N2400, [ Hi] enva Hi como salida al Pin0 en forma serial

    5.20. HIGH

    HIGH Pin

    Hace de valor alto el Pin especificado y lo convierte automticamente en salida. Pin puede ser una constante, 0 - 15, una variable que contenga un nmero de 0-15 (p.ej. B0) un nmero de

    Pin (p.ej. PORTA.0)

    HIGH 0 convierte Pin0 en salida y lo coloca en valor alto (-5 volt)

    HIGH PORTA.0 convierte PORTA, Pin0 en salida y lo coloca en valor alto (-5 volt)

    Led var PORTB. 0 define el pin LED

    HIGH led convierte el Pin LED en salida y lo coloca en valor alto (-5 volt)

    Como alternativa, si el pin ya es salida, hay una forma ms rpida y corta de setearlo en valor alto (desde un codigo generado standpoint):

    PORTB.0 = 1 setea PORTB Pin0 a valor alto.

    5.21. HSERIN

    HSERIN {ParityLabel,} {Timeout, Label,} [Item {. . .}]

    Recibe uno ms Items de un port serial (de hardware) en dispositivos que soportan comunicaciones seriales asincrnicas por hardware.

    HSERIN es una de varias funciones seriales asincrnicas pre-construdas. Slo puede ser usada en dispositivos que posean hardware USART. Vea la hoja de datos del dispositivo para

    informacin de los pin seriales de entrada y otros. Los parametros seriales y el baud-rate son especificados usando DEFINE:

    coloque el registro receptor en receptor habilitado

    DEFINE HSER_RCSTA 90h

    coloque el registro de transmisin en transmisin habilitada

    DEFINE HSER_TSTA 20h

    coloque baud rate

    DEFINE HSER_BAUD 2400

    HSERIN asume un oscilador de 4 Mhz cuando calcula el baud rate .Para mantener una relacin de baud rate apropiada con otros v alores de oscilador, use DEFINE para especificar el nuevo

    valor OSC.

    Timeout y Label pueden ser includos en forma opcional para permitir al programa continuar si un carcter no es recibido dentro de un lmite de tiempo. Timeout est especificado en unidades

    de 1 milisegundo.El formato por defecto de los datos seriales es 8N1, 8 bits de datos, sin paridad y 1 stop bit. 7E1 (7 bits de datos, paridad par, 1 stop bit) 7 O 1 (7 bits de datos, paridad impar1 stop bit)

    pueden ser habilitados usando los siguientes DEFINEs:

    use solo si se desea paridad par

    DEFINE HSER_EVEN 1

    use solo si se desea paridad impar

    DEFINE HSER_ODD 1

    El seteo de paridad igual que todos los DEFINE HSER afectan tanto a HSERIN como a HSEROUT

    Se puede incluir ParityLabel como opcional en la declaracin. El programa continuar en este punto si se recibe un carcter con error de paridad. Solo debe ser usado si se habilit paridad

    con un DEFINE anterior.

    Dado que la recepcin serial se realiza por hardware, no es posible invertir los niveles para eliminar un driver RS - 232. Por esto debe usarse un driver adecuado con HSERIN.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    44/59

    HSERIN soporta los mismos modificadores de datos que SERIN2. Refierase a la seccin de SERIN2 para mayor informacin.

    HSERIN [B0, dec W1]

    5.22. HSEROUT

    HSEROUT [Item {, Item}]

    Enva uno ms Items al port serial de hardware en dispositivos que soportan comunicaciones seriales asincrnicas por hardware.

    HSEROUT es una de varias funciones seriales asincrnicas pre-construdas. Slo puede ser usada en dispositivos que posean hardware USART. Vea la hoja de datos del dispositivo para

    informacin de los pin seriales de entrada y otros. Los parametros seriales y el baud-rate son especificados usando DEFINE:

    coloque el registro receptor en receptor habilitado

    DEFINE HSER_RCSTA 90h

    coloque el registro de transmisin en transmisin habilitada

    DEFINE HSER_TSTA 20h

    coloque baud rate

    DEFINE HSER_BAUD 2400

    HSEROUT asume un oscilador de 4 Mhz cuando calcula el baud rate. Para mantener una relacin de baud rate apropiada con otros valores de oscilador, use DEFINE para especificar el

    nuevo valor OSC.

    El formato por defecto de los datos seriales es 8N1, 8 bits de datos, sin paridad y 1 stop bit. 7E1 (7 bits de datos, paridad par, 1 stop bit) 7 O 1 (7 bits de datos, paridad impar, 1 stop bit)

    pueden ser habilitados usando los siguientes DEFINEs:

    use solo si se desea paridad par

    DEFINE HSER_EVEN 1

    use solo si se desea paridad impar

    DEFINE HSER_ODD 1

    El seteo de paridad igual que todos los DEFINE HSER afectan tanto a HSERIN como a HSEROUT

    Dado que la recepcin serial se realiza por hardware, no es posible invertir los niveles para eliminar un driver RS - 232. Por esto debe usarse un driver adecuado con HSEROUT.

    HSEROUT soporta los mismos modificadores de datos que SEROUT2. Refirase a la seccin de SEROUT2 para mayor informacin.

    enviar el valor decimal de B0 seguido por un linefeed a travs del USART

    HSEROUT [dec B0, 10]

    5.23. I2CREAD

    Copyright 2001 microEngineering Labs, Inc.All rights reserved.

    I2CREAD DataPin, ClockPin, Control, {Address,} [Var {, Var ...}] {. Label}

    Enva los bytes de Control y opcionalmente los de Address, a travs del ClockPin y el DataPin y guarda los bytes recibidos dentro de Var. ClockPin y dataPin pueden ser constantes, 0-15, una

    variable que contenga un nmero (p.ej. B0), un nmero de Pin (p.ej. PORTA.0)

    I2CREAD y I2CWRITE pueden ser usados para leer y grabar datos de un EEPROM serial usando una interfase I2C de 2 cables, como Microchip 24LC01B similar. Esto permite guardar

    datos en una memoria externa no voltil, para que sean mantenidos an sin energa conectada. Estos comandos funcionan en modo I2C master y tambin son usados para comunicarse con

    otros dispositivos con interfase I2C, como sensores de temperatura y convertidores A/D.

    Los 7 bits s uperiores del byte de Control contienen el cdigo de control junto con la seleccin del chip e informacin adicional de direccin., dependiendo de cada dispositivo .El bit inferior es

    una bandera interna que indica si es un comando de lectura escritura y no se debe usar.

    Este formato para el byte de Control es diferente al usado por el PBP original. Asegrese de usar este formato en operaciones PBP I2C.

    Por ejemplo, cuando comunicamos con un 24LC01B, el cdigo de control es %1010 y no se usa la seleccin de chip, por lo que el byte de Control ser %10100000 $A0. Algunos formatos

    de Control son:

    Disposit ivo Capacidad Control Tamao direcci n

    24LC01B 128 bytes %1010xxx0 1 byte

    24LC02B 256 bytes %1010xxx0 1 byte

    24LC04B 512 bytes %1010xxb0 1 byte

    24LC08B 1 Kbytes %1010xbb0 1 byte

    24LC16B 2 Kbytes %1010bbb0 1 byte

    24LC32B 4 Kbytes %1010ddd0 2 bytes

    24LC65 8 Kbytes %1010ddd0 2 bytes

    bbb = bits de seleccin de block (direcciones de orden alto)

    ddd = bits de seleccin de dispositivo

    xxx = no importa

    El tamao de direccin enviado (byte word) es determinado por el tamao de la variable usada. Si se usa una variable con tamao byte se enva una direccin de 8 bits.Si se enva una

    variable de tamao word, se enva una direccin de 16 bits. Asegrese de usar una variable apropiada al dispositivo a comunicar.

    Si se especifica Var con tamao word, se leen 2 bytes y se guarda primero el de mayor orden y luego el de orden inferior dentro de Var. Este orden es el inverso al que se osa normalmente

    con variables.

    Si se usa la opcin Label, se saltar a ella, si no se recibe un reconocimiento del dispositivo I2C.

    Las instrucciones I2C pueden ser usadas para acceder al EEPROM incorporado en los dispositivos 12CExxx y 16CExxx. Simplemente especifique los nombres de pin de las lneas internas

    adecuadas como parte del comando I2C y coloque el siguiente DEFINE en el principio del programa.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    45/59

    DEFINE I2C_INTERNAL 1

    Vea las hojas de datos de Microchip para ms indormacin.

    El tiempo de las instrucciones I2C es tal que los dispositivos de velocidad standard (100 Khz) pueden ser accedidos a velocidad de clock de hasta 8 Mhz. Dispositivos rpidos (400 Mhz)

    pueden ser usados hasta 20 Mhz. Si se desea acceder un dispositivo de velocidad standard a 8 Mhz, se debe usar el siguiente DEFINE en el programa:

    DEFINE I2C_SLOW 1

    El clock I2C y las lneas de datos pueden ser empujados a Vcc con un resistor de 4-7 K de acuerdo al siguiente esquema, ya que ambos trabajan en modo de colector abierto.

    addr var byte

    cont con %10100000

    addr =17 coloca la direccin en 17

    lee datos de la direccin 17 y los deja en B2

    I2CREAD PORTA.0, PORTA. 1, cont, addr, [B2]

    Vea el libro Microchip NON VOLATILE MEMORY PRODUCTS para mayor informacin de este otros dispositivos que pueden ser usados con los comandos I2CREAD y I2CWRITE.

    5.24. I2CWRITE

    I2CWRITE DataPin, ClockPin, Control, {Address,} [Value {, Value ...}] {. Label}

    Enva los bytes de Control y opcionalmente los de Address, a travs del ClockPin y el DataPin seguidos por Value. ClockPin y DataPin pueden ser constantes, 0-15, una variable que contenga

    un nmero (p.ej. B0), un nmero de Pin (p.ej. PORTA.0)

    El tamao de direccin enviado (byte word) es determinado por el tamao de la variable usada. Si se usa una variable con tamao byte se enva una direccin de 8 bits. Si se enva una

    variable de tamao word, se enva una direccin de 16 bits. Asegrese de usar una variable apropiada al dispositivo a comunicar.

    Cuando se escribe un EEPROM serial, es necesario esperar 10 ms (dependiendo del dispositivo) para completar la grabacin, antes de intentar comunicarse nuevamente con el dispositivo. Si

    se intenta un I2CWRITE I2CREAD antes que se complete la grabacin, se ignorar el acceso.

    Aunque una sola declaracin I2CWRITE puede ser usada para grabar mltiples bytes simultaneamente, se puede violar los requerimientos de tiempo de grabacin para los EEPROM seriales.

    Algunos permiten grabar mltiples bytes en una pgina simple antes de necesitar una espera. Revise la hoja de datos del dispositivo que est usando. La opcin de grabacin mltiple puede

    ser til con dispositivos I2C que no deban esperar entre grabaciones.

    Si se usa la opcin Label, se saltar a ella, si no se recibe un reconocimiento del dispositivo I2C.

    Las instrucciones I2C pueden ser usadas para acceder al EEPROM incorporado en los dispositivos 12CExxx y 16CExxx. Simplemente especifique los nombres de pin de las lneas internas

    adecuadas como parte del comando I2C y coloque el siguiente DEFINE en el principio del programa.

    DEFINE I2C_INTERNAL 1

    Vea las hojas de datos de Microchip para ms indormacin.

    El tiempo de las instrucciones I2C es tal que los dispositivos de velocidad standard (100 Khz) pueden ser accedidos a velocidad de clock de hasta 8 Mhz. Dispositivos rpidos (400 Mhz)

    pueden ser usados hasta 20 Mhz. Si se desea acceder un dispositivo de velocidad standard a 8 Mhz, se debe usar el siguiente DEFINE en el programa:

    DEFINE I2C_SLOW 1

    Vea el siguiente comando I2CREAD

    addr var byte

    cont con %10100000

    addr =17 coloca la direccin en 17

    enva el byte 6 a la direccin 17

    I2CWRITE PORTA. 0, PORTA.1, con, addr, [ 6]

    Pause 10 espera 10 ms que se complete la grabacin

    addr =1 coloca la direccin en 1

    enva el byte en B2 a la direccin 1

    I2CWRITE PORTA.0, PORTA.1, cont, addr, [B2 ]

    Pause 10 espera 10 ms que se complete la grabacin

    5.25 IF...THEN

    IF Comp {AND/OR Comp ...} THEN Label

    IF Comp {AND/OR Comp ...} THEN

    Declaracin

    ELSE

    Declatacin

    ENDIF

    Efecta una ms comparaciones. Cada trmino Comp puede relacionar una variable con una constante otra variable e incluye uno de los operadores listados anteriormente.

    IF... THEN evala la comparacin en trminos de CIERTO o FALSO. Si lo considera cierto, se ejecuta la operacin posterior al THEN. Si lo considera falso, no se ejecuta la operacin posterior

    al THEN. Las comparaciones que dan 0 se consideran falso. Cualquier otro valor es c ierto. Todas las comparaciones son sin signo, ya que PBP solo soporta operaciones sin signo.

    Asegurese de usar parntesis para especificar el orden en que se deben realizar las operaciones. De otra manera, la prioridad de los operadores lo determina y el resultado puede no ser elesperado.

    IF...THEN puede operar de dos maneras. De una forma, el THEN en un IF... THEN es esencialmente un GOTO. Si la condicin es cierta, el programa ir hacia la etiqueta que sigue al THEN.

    Si la condicin es falsa, el programa va a continuar hacia la prxima lnea despus del IF...THEN. Otra declaracin no puede ser puesta despus del THEN; sino que debe ser una etiqueta.

    If Pin0 = 0 Then pushd si el botn conectado al pin 0 es oprimido (0), salta

    a la etiqueta pushd

    If B0 >=40 Then old si el valor en la variable B0 es mayor igual a 40, salta a old

    If PORTB.0 Then itson si PORTB, pin 0 es alto (1), salta a itson

    If (B0 = 10) AND (B1 = 20) Then loop

    En la segunda forma, IF...THEN puede ejecutar condicionalmente un grupo de declaraciones que sigan al THEN. Las declaraciones deben estar seguidas por un ELSE o un ENDIF para

    completar la estructura.

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    46/59

    If B0 10 Then

    B0 = B0 + 1

    B1 = B1 - 1

    Endif

    If B0 = 20 Then

    led = 1

    Else

    led = 0

    Endif

    5.26. INPUT

    INPUT Pin. Convierte el Pin especificado en una entrada. Pin debe ser una constante, 0-15, o una variable que contenga un nmero 0-15 (p. ejj., B0) o el nombre de un pin (p. ej., PORTA.0).

    INPUT 0 convierte el Pin0 en entrada

    INPUT PORTA.0 convierte el PORTA, pin 0 en entrada

    En forma alternativa, el pin puede ser colocado como entrada de una forma ms rpida y corta (desde un cdigo generado standpoint):

    TRISB.0 =1 Setea el PORTB, pin 0 como entrada

    Todos los pins en un port pueden ser colocados como entradas seteando el registro TRIS completo de una sola vez:

    TRISB = %11111111 Setea todo el PORTB como entrada

    5.27. {LET}

    {LET} Var = Value

    Asigna un Value a una Variable. El Value puede ser una constante, otra variable o el resultado de una expresin. Refirase a la seccin previa acerca de operadores para ms informacin. La

    palabra clave LET, por s misma, es opcional.

    LET B0 = B1 * B2 + B3

    B0 = Sqr W1

    5.28. LCDOUT

    LCDOUT Item {, Item...}

    Muestra Items en un visor de cristal lquido inteligente (LCD). PBP soporta mdulos LCD con un controlador Hitachi 44780 o equivalente. Estos LCD, usualmente, tienen un cabezal de 14 o 16

    pins simples o duales en un extremo.

    Si el signo (#) est colocado antes de un Item, la representacin ASCII para cada dgito es enviada al LCD. LCDOUT tambin puede usar cualquiera de los modificadores usados con

    SEROUT2. Vea la seccin de SEROUT2 para ms informacin.

    Un programa debe esperar, por lo menos, medio segundo antes de enviar el primer comando a un LCD. Puede tomar bastante tiempo a un LCD arrancar.

    Los comandos son enviados al LCD, enviando un $FE seguido por el comando. Algunos comandos tiles se muestran en la siguiente tabla:

    Comando Operacin

    $FE, 1 Limpia visor

    $FE, 2 Vuelve a inicio (comienzo de la primera lnea)

    $FE, $0C Cursor apagado

    $FE, $0E Subrayado del cursor activo

    $FE, $0F Parpadeo del cursor activo

    $FE, $10 Mueve cursor una posicin hacia la izquierda

    $FE, $14 Mueve cursor una posicin hacia la derecha

    $FE, $C0 Mueve cursor al comienzo de la segunda lnea

    Note que hay un comando para mover el c ursor al comienzo de la segunda lnea en un visor de dos lneas. Para muchos LCD, los caracteres y lneas mostrados no son consecutivos en la

    memoria del visor - puede haber un salto entre las localizaciones. Para muchos visores 16x2, la primera lnea comienza en $0 y la segunda, en $40. El comando:

    LCDOUT $FE, $C0

    Hace que el visor comience a escribir caracteres en el principio de la segunda lnea. Los visores 16x1 usualmente estn formateados como visores de 8x2, con un salto entre las locaciones dememoria para los primeros y segundos caracteres de 8. Los visores de 4 lneas, tambin tienen un mapa de memoria no ordenado.

    Vea la hoja de datos para el dispositivo LCD, en particular el que usted est usando, para las locaciones de memoria de caracter y comandos adicionales.

    LCDOUT $FE, 1, Hello limpia el visor y muestra Hello

    LCDOUT B0, #B1

    El LCD puede estar conectado al micro Pic, usando un bus de 4 bit o uno de 8 bit. Si se usa un bus de 8 bit, todos los 8 bits deben estar en un port. Si se usa un bus de 4 bit, debe estar

    conectado o a los 4 bit inferiores o a los 4 bit superiores de un port. Enable y Register Select deben estar conectados a algn pin del port. R/W debe estar colocado a tierra, ya que el comando

    de LCDOUT solamente es de grabacin.

    PBP supone que el LCD est conectado a pins especfico s, a menos que se le diga de otra manera. Asume que el LCD va a ser usado con un bus de 4 bits, con las lneas de data DB4 - DB7

    conectadas en el micro Pic a PORTA.0 - PORTA.3, Register Select a PORTA.4 y Enable a PORTB.3. Adems, inicializa el LCD como un visor de dos lneas.

    Para cambiar este seteo, coloque uno o ms de los siguientes DEFINEs, todos en maysculas, en el comienzo de su programa PBP:

  • 7/31/2019 Pic 16f628a -Manual de Practicas

    47/59

    Setea el port de datos LCD

    DEFINE LCD_DREG PORTB

    Setea el bit de comienzo de datos (0 o 4) si el bus es de 4-bit

    DEFINE LCD_DBIT 0

    Setea el port LCD Register Select

    DEFINE LCD_RSREG PORTB

    Setea el bit LCD Register Select

    DEFINE LCD_RSBIT 4

    Setea el port LCD Enable

    DEFINE LCD_EREG PORTB

    Setea el bit LCD Enable

    DEFINE LCD_EBIT 5

    Setea el tamao del bus LCD (4 o 8 bits)

    DEFINE LCD_BITS 4

    Setea el numero de lineas en el LCD

    DEFINE LCD_LINES 2

    Este seteo, le dir a PBP que hay conectado un LCD de 2 lneas en modo de 4 bit con el bus de datos en los 4 bit inferiores de PORTB, Register Select en el PORTB.4, y Enable en el

    PORTB.5.

    El siguiente esquema muestra una forma de conectar un LCD a un micro Pic:

    5.29. LOOKDOWN

    LOOKDOWN Search, [Constant {, Constant...}], Var

    La declaracin LOOKDOWN busca en una lista de 8 bit los valores Constant que coincidan con un valor Search. Si se encuentra, el ndice de la constante es guardado en Var as, si el valor

    es el primero de la lista, Var = 0. Si es el segundo, Var = 1 y as, sucesivamente. Si no se encuentra, no se toma ninguna accin y Var permanece sin cambios.

    La lista de constantes puede ser una mezcla de constantes numricas y sartas. Cada carcter en una sarta es tratado como una constante separada con el valor del carcter ASCII. Las

    variables de array con ndice variable no pueden ser usadas en LOOKDOWN, aunque variables de array con ndice constantes son permitidas.

    Serin 1, N2400, B0 Obtiene un carcter hexadecimal de pin1 en

    forma serial

    LOOKDOWN B0, [0123456789ABCDEF], B1 Convierte el carcter hexadecimal en B0 a un valor decimal B1

    Serout 0, N2400, [#B1] Enva un valor decimal a pin0 en forma serial

    5.30. LOOKDOWN2

    LOOKDOWN2 Search, {Test} [Value {, Value...}], Var

    La declaracin LOOKDOWN2 busca un valor Search en una lista de Values. Si lo encuentra, el ndice de la constante es guardado en Var as, si el valor es el primero de la lista, Var = 0. Si es

    el segundo, Var = 1 y as, sucesivamente. Si no se encuentra, no se toma ninguna accin y Var permanece sin cambios.

    El parmetro opcional Test puede ser usado para efectuar una busqueda distinta a la igualdad (=).Por ejemplo, se puede buscar el primer Value que sea mayor que el parmetro Search

    usando (> ), Si no se indica nada, se asume (=).

    La lista de Values puede ser una mezcla de constantes numricas y sartas en 16 bits y variables. Cada carcter en una sarta es tratado como una constante separada con el valor del carcter

    ASCII. No se pueden usar expresiones en una lisia de Values, aunque pueden ser usadas como valor Search Las variables de array con ndice variable no pueden ser usadas en

    LOOKDOWN2, aunque variables de array con ndice constantes son permitidas.

    LOOKDOWN2 genera un cdigo 3 veces ms grande que LOOKDOWN. Si la lista consiste solamente de constantes y sartas de 8 bits, use LOOKDOWN.

    LOOKDOWN2 W0, [512, W1, 1024], B0

    LOOKDOWN2 W0, < [10, 100, 1000], B0

    5.31. LOOKUP

    LOOKUP Index, [Constant {, Constant...}], Var

    LOOKUP puede ser usado para obtener valores de una tabla de constantes de 8 bits, Si Index es cero, Var toma el v alor de la primer Constant. Si Index es 1, Var toma el valor de la segunda

    Constant y as sucesivamente. Si Index es mayor igual que el nmero de entradas en la lista de constantes, no se toma ninguna accin y Var permanece sin cambios.

    La lista de constantes puede ser una mezcla de constantes numricas y sartas. Cada carcter en una sarta es tratado como una constante separada con el valor del carcter ASCII. Las

    variables de array con ndice variable no pueden ser usadas en LOOKUP, aunque variables de array con ndice constantes son permitidas.

    For B0=0 to 5 cuenta de 0 a 5

    LOOKUP B0, [Hello ], B1 obtiene el carcter B0 de la sarta y lo deja en B1

    Serout 0, N2400, [B1] enva el c arcter en B1 al Pin0 en forma Serial

    Next B0 va al segundo carcter

    5.32. LOOKUP2LOOKUP2 Index, [Value [, Value...}], Var

    LOOKUP2 puede ser usado para obtener entradas de una tabla de Values, Si Index es cero, Var toma el valor del primer Value. Si Index es 1, Var toma el valor del segundo Value y as

    sucesivamente. Si Index es mayor igual que el nmero de entradas en la lista, no se toma ninguna accin y Var permanece sin cambios. La lista de Values puede ser una mezcla de

    constantes numricas y sartas en 16 bits y variables. Cada carcter en una sarta es tratado como una constante separada con el valor del carcter ASCII. No se pueden usar expresiones en

    una lisia de Values, aunque pueden ser usadas como valor Index Las variables de array con ndice variable no pueden ser