SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
Microcontroladores PIC                                         Apoyo Técnico 2009




            INTRODUCCIÓN A LOS MICROCONTROLADORES PIC Y
                 PROGRAMACIÓN DE UNA MATRIZ DE LED’s




                                  Elaborado por:


                            Luis Edier Gañan Gañan
                        Víctor Alexander Quintana Trujillo

                             Grupo de Apoyo Técnico




                                  Revisado por:

                                  Saúl Alfredo Erazo


                        Instructor del Área de automatización




                               SENA
      CENTRO DE DISEÑO E INNOVACIÓN TECNOLÓGICA INDUSTRIAL
                      REGIONAL RISARALDA
                          NOVIEMBRE 2009



Centro de Diseño e Innovación Tecnológica Industrial            SENA Dosquebradas
Microcontroladores PIC                                    Apoyo Técnico 2009




 El presente proyecto tiene como objetivo servir de manual para todas aquellas
 personas interesadas en la programación de microcontroladores, consta de un
 conjunto de prácticas de diferente complejidad, así como el funcionamiento de
 estos dispositivos.


 Los microcontroladores PIC suponen un avance significativo en la materia de
 dispositivos digitales empleados en el control de sistemas. Su reducido tamaño
 así como sus elevadas prestaciones lo convierten en un elemento
 indispensable en el campo de los microcontroladores. Por éste motivo, el área
 de Automatización del Centro de Diseño e Innovación Tecnológica del SENA
 regional Risaralda, pretende realizar un conjunto de prácticas que profundicen
 en las prestaciones de los microcontroladores de forma que el aprendiz asimile
 los conceptos fundamentales mediante la realización de una serie de prácticas
 de complejidad creciente, finalizando con la práctica sobre el funcionamiento y
 programación de una matriz de led’s.




Centro de Diseño e Innovación Tecnológica Industrial       SENA Dosquebradas
Microcontroladores PIC                                     Apoyo Técnico 2009



                                    Capitulo 1
                                Introducción a los PIC

 1. Diferencia entre el Microprocesador y Microcontrolador

 El microprocesador es un chip que contiene integrado la Unidad Central de
 Proceso (CPU), también llamada procesador en los computadores. Esta CPU
 es la encargada de interpretar las instrucciones y procesar los datos contenidos
 en el programa, que previamente se han guardado ahí.
 El microprocesador permite conectarle la memoria y los módulos de entrada y
 salida, estos dispositivos se conectan a los pines del microprocesador que
 ponen en el exterior las líneas de sus buses de direcciones, datos y control.
 Se dice que un microprocesador es un sistema abierto porque su configuración
 es variable de acuerdo con la aplicación a la que se destine.




 El microcontrolador es un circuito integrado que incluye en definitiva todos los
 componentes de un computador. En un microcontrolador encontramos la
 Unidad Central de Proceso (CPU), memoria RAM, memoria ROM, EPROM,
 EEPROM, FLASH, líneas de entrada y salida para comunicarse con el exterior,
 módulos para el control de periféricos, entre otros.




Centro de Diseño e Innovación Tecnológica Industrial         SENA Dosquebradas
Microcontroladores PIC                                      Apoyo Técnico 2009




 2. Arquitectura de los Microcontroladores
 La arquitectura de un microcontrolador se define como la estructura,
 funcionalidades, y modelos de programación del Microprocesador. Más
 concretamente nos referimos a su conjunto de instrucciones al número de
 ciclos de reloj por instrucción, a su conjunto de Registros internos, al modelo de
 gestión de la memoria etc.

 2.1 Arquitectura Von Neumann

 Es la arquitectura tradicional de computadores y microprocesadores, que se
 basa en el esquema propuesto por John Von Neumann, en la cual la CPU
 (Unidad Central de Proceso), esta conectada a una memoria única que
 contiene las instrucciones del programa y los datos.
 Cuando la CPU se dirige a la memoria principal, primero saca la instrucción y
 después saca los datos necesarios para ejecutarla, esto retarda el
 funcionamiento de la CPU.




 2.2 Arquitectura Harvard

 La arquitectura conocida como Harvard, consiste simplemente en un esquema
 en el que el CPU esta conectado a dos memorias por intermedio de dos buses
 separados. Una de las memorias contiene solamente las instrucciones del
 programa, y es llamada Memoria de Programa. La otra memoria solo almacena
 los datos y es llamada Memoria de Datos.




Centro de Diseño e Innovación Tecnológica Industrial          SENA Dosquebradas
Microcontroladores PIC                                    Apoyo Técnico 2009




 3- Tipos de Memoria
 La memoria interna de datos del PIC, también llamada archivos de registro,
 esta dividida en dos grupos: Los registros especiales, y los registros de
 propósito general. Los primeros ocupan por lo general los primeros lugares, por
 ejemplo en el PIC 16F877, en el banco 0, los registros especiales están entre
 00h y 1Fh, los registros de propósito general van desde 20h, hasta 7Fh.

 3.1 Memoria ROM
 La información pregrabada electrónicamente en ella (programa o lista de
 instrucciones) Solamente puede ser leída y no es posible alterar su contenido
 por ningún método directo.
 La memoria ROM es escrita, directamente por el fabricante es no Volátil, esto
 significa que su información no se pierde aun cuando se le suspende el
 suministro de energía.
 El precio de los microcrontroladores con este tipo de memoria es elevado.

 3.2 Memoria OTP
 El microcontrolador contiene una memoria no volátil de sólo lectura
 “programable una sola vez” por el usuario. OTP (One Time Programmable).
 El usuario puede grabar solo una vez el programa en el chip.
 Es recomendable usarla en el prototipo y producción en serie del producto en
 cantidades muy pequeñas.

 3.3 Memoria EPROM
 Los microcontroladores que disponen de memoria EPROM (Erasable
 Programmable Read OnIy Memory) pueden borrarse y grabarse muchas veces.
 La grabación del programa se hace igual a los OTP, con un grabador manejado
 por PC. Si, posteriormente se desea borrar el contenido del programa,
 disponen de una ventana de cristal en su superficie por la cual se somete la
 EPROM a rayos ultravioletas durante varios segundos. Su precio es un poco
 más elevado que el de los microcontroladores OTP.

 3.4 Memoria EEPROM
 Se trata de memorias de sólo lectura, programables y borrables eléctricamente
 EEPROM (Electrical Erasable Programmable Read OnIy Memory). Tanto la
 programación como el borrado, se realizan eléctricamente desde el propio
 grabador y bajo el control programado de un PC. Es muy cómoda y rápida la
 operación de grabado y la de borrado. No disponen de ventana de cristal en la
 superficie.

 Los microcontroladores dotados de memoria EEPROM una vez instalados en el
 circuito, pueden grabarse y borrarse cuantas veces se quiera sin ser retirados
 de dicho circuito. Para ello se usan “grabadores en circuito” que confieren una
 gran flexibilidad y rapidez a la hora de realizar modificaciones en el programa
 de trabajo.

 3.5 Memoria FLASH

Centro de Diseño e Innovación Tecnológica Industrial       SENA Dosquebradas
Microcontroladores PIC                                     Apoyo Técnico 2009

 Se trata de una memoria no volátil, de bajo consumo, que se puede escribir y
 borrar. Funciona como una ROM y una RAM pero consume menos y es más
 pequeña.

 A diferencia de la ROM, la memoria FLASH es programable en el circuito. Es
 más rápida que la EEPROM.

 La alternativa FLASH está recomendada frente a la EEPROM cuando se
 precisa gran cantidad de memoria de programa no volátil. Es más veloz y tolera
 más ciclos de escritura/borrado.

 Las memorias EEPROM y FLASH son muy útiles al permitir que los
 microcontroladores que las incorporan puedan ser reprogramados “en circuito”,
 es decir, sin tener que sacar el circuito integrado de la tarjeta. Así, un
 dispositivo con este tipo de memoria incorporado al control del taxímetro de un
 automóvil publico, al variar los valores del precio por recorrido, el programador
 solo tendrá que reprogramar el chip en el circuito, con los valores actuales, sin
 necesidad de extraer el microcontrolador, ni comprando un nuevo taxímetro.

 4- Puertos de entrada y salida

 La principal función de los pines de un microcontrolador es permitir la
 comunicación entre si, con periféricos exteriores.
 Estos pines pueden variar dependiendo del microcontrolador, pueden tener
 más o menos pines, cada pin tendrá un funcionamiento diferente para el
 procesamiento de las señales de entrada, salida o de control, dependiendo del
 fabricante del microcontrolador y su modelo.

 5- Reloj Principal
 Todos los microcontroladores disponen de un circuito oscilador que genera una
 onda cuadrada de alta frecuencia, que configura los impulsos de reloj usados
 en la sincronización de todas las operaciones del sistema.

 Generalmente, el circuito de reloj está incorporado en el microcontrolador y
 sólo se necesitan unos pocos componentes exteriores para seleccionar y
 estabilizar la frecuencia de trabajo. Dichos componentes suelen consistir en un
 cristal de cuarzo junto a elementos pasivos o bien un resonador cerámico o una
 red R-C.

 Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan
 las instrucciones pero lleva aparejado un incremento del consumo de energía.

 6- Recursos especiales
 Cada microcontrolador incorpora características diferentes a los demás, estas
 características dependen del fabricante y versión del microcontrolador,
 simplemente estos recursos deben representar alguna ventaja o facilidad a la
 hora de hacer un diseño.
 La labor del diseñador es encontrar el modelo mínimo que satisfaga todos los
 requerimientos de su aplicación.


Centro de Diseño e Innovación Tecnológica Industrial         SENA Dosquebradas
Microcontroladores PIC                                     Apoyo Técnico 2009

 6.1 Temporizadores o “Timers”

 Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la
 cuenta de acontecimientos que suceden en el exterior (contadores).

 Para la medida de tiempos se carga un registro con el valor adecuado y a
 continuación dicho valor se va incrementando o decrementando al ritmo de los
 impulsos de reloj o algún múltiplo hasta que se desborde y llegue a 0, momento
 en el que se produce un aviso.

 6.2 Perro guardián o “Watchdog

 Cuando el computador personal se bloquea por un fallo del software u otra
 causa, se pulsa el botón del reset y se reinicializa el sistema. Pero un
 microcontrolador funciona sin el control de un supervisor y de forma continuada
 las 24 horas del día. El Perro guardián consiste en un temporizador que,
 cuando se desborda y pasa por 0, provoca un reset automáticamente en el
 sistema.
 Es muy útil cuando se trabaja en ambientes con mucha interferencia o ruido
 electromagnético. Es conformado por un oscilador RC que se encuentra dentro
 del microcontrolador.
 Este oscilador corre de manera independiente al oscilador principal. Cuando se
 habilita su funcionamiento, dicho circuito hace que el microcontrolador sufra un
 reset cada determinado tiempo (que se puede programar entre 18 ms y 2
 segundos). Este reset lo puede evitar el usuario mediante una instrucción
 especial del microcontrolador (CLRWDT: borrar conteo del watchdog), la cual
 se debe ejecutar antes de que termine el período nominal de dicho
 temporizador. De esta manera si el programa se ha salido de su flujo normal,
 por algún ruido o interferencia externa, el sistema se reiniciará (cuando se
 acabe el tiempo programado y no se haya borrado el contador) y el programa
 puede restablecerse para continuar su funcionamiento normal.

 6.3 Protección ante fallo de alimentación o “Brownout”
 Se trata de un circuito que resetea al microcontrolador cuando el voltaje de
 alimentación (VDD) es inferior a un voltaje mínimo (“brownout”). Mientras el
 voltaje de alimentación sea inferior al de brownout el dispositivo se mantiene
 reseteado, comenzando a funcionar normalmente cuando sobrepasa dicho
 valor.

  6.4 Modo de bajo consumo (Sleep)
 Esta característica permite que el microcontrolador entre a un estado pasivo
 donde consume muy poca potencia. Se usa en muchas aplicaciones donde el
 micro debe esperar sin hacer nada, a que se produzca algún acontecimiento
 externo que lo ponga de nuevo en funcionamiento.
 En dicho estado se detiene el reloj principal y se “congelan” sus circuitos
 asociados, quedando sumido en un profundo “sueño” el microcontrolador. Al
 activarse una interrupción ocasionada por el acontecimiento esperado, el
 microcontrolador se despierta y reanuda su trabajo.




Centro de Diseño e Innovación Tecnológica Industrial        SENA Dosquebradas
Microcontroladores PIC                                     Apoyo Técnico 2009

 6.5 Conversor D/A (CDA)
 Transforma los datos digitales obtenidos del procesamiento del computador en
 su correspondiente señal analógica que saca al exterior por una de las patitas
 de la cápsula.

 6.6 Conversor A/D
 Una conversión analógica-digital (CAD) (o ADC) consiste en la transcripción de
 señales analógicas en señales digitales, con el propósito de facilitar su
 procesamiento (codificación, compresión, etc.) y hacer la señal resultante (la
 digital) más inmune al ruido y otras interferencias a las que son más sensibles
 las señales analógicas.

 6.7 Comparador analógico
 Algunos modelos de microcontroladores disponen internamente de un
 Amplificador Operacional que actúa como comparador entre una señal fija de
 referencia y otra variable que se aplica por una de las patitas de la cápsula. La
 salida del comparador proporciona un nivel lógico 1 ó 0 según una señal sea
 mayor o menor que la otra.

 6.8 Modulación por ancho de pulsos o PWM
 La modulación por ancho de pulsos de una señal o fuente de energía es una
 técnica en la que se modifica el ciclo de trabajo de una señal periódica (una
 sinusoidal o una cuadrada, por ejemplo), ya sea para transmitir información a
 través de un canal de comunicaciones o para controlar la cantidad de energía
 que se envía a una carga.
 Estos impulsos de anchura variable, se ofrecen al exterior a través de las pines
 del encapsulado.

 6.9 Puertos de E/S
 Los puertos son el puente entre el microcontrolador y el mundo exterior. Son
 líneas que trabajan entre cero y cinco voltios.
 Las líneas digitales de los Puertos pueden configurarse como Entrada o como
 Salida cargando un 1 ó un 0 en el BIT correspondiente de un registro destinado
 a su configuración.

 6.10 Puertos de comunicación
 Con objeto de dotar al microcontrolador de la posibilidad de comunicarse con
 otros dispositivos externos, otros buses de microprocesadores, buses de
 sistemas, buses de redes y poder adaptarlos con otros elementos bajo otras
 normas y protocolos. Algunos modelos disponen de recursos que permiten
 directamente esta tarea, entre los que destacan:

 •      UART, adaptador de comunicación serie asíncrona.

 •      USART, adaptador de comunicación serie síncrona y asíncrona

 •     Puerta paralela esclava para poder conectarse con los buses de otros
     microprocesadores.

 •      USB (Universal Serial Bus), que es un moderno bus serie para los PC.


Centro de Diseño e Innovación Tecnológica Industrial         SENA Dosquebradas
Microcontroladores PIC                                       Apoyo Técnico 2009


 •      Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips.

 •     CAN (Controller Area Network), para permitir la adaptación con redes de
     conexionado multiplexado desarrollado conjuntamente por Bosch e Intel
     para el cableado de dispositivos en automóviles. En EE.UU. se usa el
     J185O.

 6.11 Interrupciones
 Se trata de un acontecimiento que hace que el micro deje de lado lo que se
 encuentra realizando, atienda ese suceso y luego regrese y continúe con lo
 suyo.
 Existen dos tipos de interrupciones posibles, una es mediante una acción
 externa (es decir por la activación de uno de sus pines), la otra es interna (por
 ejemplo cuando ocurre el desbordamiento de uno de sus registros)


 7. Herramientas para el desarrollo de aplicaciones
 Uno de los factores que más importancia tiene a la hora de seleccionar un
 microcontrolador entre todos los demás es el soporte tanto software como
 hardware de que dispone. Un buen conjunto de herramientas de desarrollo
 puede ser decisivo en la elección, ya que pueden suponer una ayuda
 inestimable en el desarrollo del proyecto.
 Las principales herramientas de ayuda al desarrollo de sistemas basados en
 microcontroladores son:

 •      Desarrollo del software:

 Ensamblador. La programación en lenguaje ensamblador puede resultar un
 tanto ardua para el principiante, pero permite desarrollar programas muy
 eficientes, ya que otorga al programador el dominio absoluto del sistema. Los
 fabricantes suelen proporcionar el programa ensamblador de forma gratuita y
 en cualquier caso siempre se puede encontrar una versión gratuita para los
 microcontroladores más populares.

 Compilador: La programación en un lenguaje de alto nivel (como el C) permite
 disminuir el tiempo de desarrollo de un producto. No obstante, si no se
 programa con cuidado, el código resultante puede ser mucho más ineficiente
 que el programado en ensamblador. Las versiones más potentes suelen ser
 muy caras, aunque para los microcontroladores más populares pueden
 encontrarse versiones demo limitadas e incluso compiladores gratuitos.

 Simulador: Son capaces de ejecutar en un PC programas realizados para el
 microcontrolador. Los simuladores permiten tener un control absoluto sobre la
 ejecución de un programa, siendo ideales para la depuración de los mismos.
 No cuentan con los posibles ruidos en las entradas, pero, al menos, permiten el
 paso físico de la implementación de un modo más seguro y menos costoso. En
 circuitos donde se requiere mucha velocidad para poder ver un efecto, los
 simuladores muchas veces no reaccionan como funcionaria en un medio físico,
 tal es el caso de los displays de 7 segmentos y matrices de led’s.



Centro de Diseño e Innovación Tecnológica Industrial           SENA Dosquebradas
Microcontroladores PIC                                     Apoyo Técnico 2009

 Entrenadores: Se trata de pequeños sistemas con un microcontrolador ya
 montado y que suelen conectarse a un PC desde el que se cargan los
 programas que se ejecutan en el microcontrolador. Las placas suelen incluir
 visualizadores LCD, teclados, LEDs, fácil acceso a los pines de E/S, etc.

 8. Microcontroladores PIC

 Son los dispositivos que más se usan en nuestra región, la realidad es que no
 hay una repuesta concreta de la explicación del uso de PIC en vez del Motorola
 (su uso se esta popularizando en los últimos tiempos) o cualquier otra familia
 de microcontroladores. Pero puede ser su velocidad, el precio, su facilidad de
 uso, la información, su pequeño tamaño… Todo esto es lo que produce esa
 imagen de sencillez y utilidad que al parecer le agradan tanto a un diseñador
 de microcontroladores, pero en un futuro alguna otra familia le puede arrebatar
 ese “algo”.

 Queremos constatar que para las aplicaciones más habituales (casi un 90%) la
 elección de una versión adecuada de PIC es la mejor solución; sin embargo,
 dado su carácter general, otras familias de microcontroladores son más
 eficaces en aplicaciones específicas, especialmente si en ellas predomina una
 característica concreta, que puede estar muy desarrollada en otra familia.

 Los PIC son relativamente más baratos económicamente que el de sus
 competidores, la información es fácil de conseguir y económica, buenos
 parámetros de funcionamiento: velocidad, consumo tamaño, etc.; la
 herramientas de software se pueden bajar libremente por su pagina:
 http://www.microchip.com).

 Una de las razones del éxito de los PIC se basa en su utilización. Cuando se
 aprende a manejar uno de ellos, conociendo su arquitectura y su repertorio de
 instrucciones, es muy fácil emplear otro modelo.


 8.1 Características relevantes.

       Descripción de las características más representativas de los PIC:



 8.1.1 Arquitectura.

       La arquitectura del procesador sigue el modelo Harvard. En esta
 arquitectura, la CPU se conecta de forma independiente y con buses distintos
 con la memoria de instrucciones y con la de datos.


       La arquitectura Harvard permite a la CPU acceder simultáneamente a las
 dos memorias. Además, propicia numerosas ventajas al funcionamiento del
 sistema como se irán describiendo.
Centro de Diseño e Innovación Tecnológica Industrial         SENA Dosquebradas
Microcontroladores PIC                                     Apoyo Técnico 2009


 8.1.2 Arquitectura basada en un “banco de registros”
   Esto significa que todos los objetos del sistema (puertas de E/S,
 temporizadores, posiciones de memoria, etc.) están implementados físicamente
 como registros.

 8.1.3 Diversidad de modelos de microcontroladores con
 prestaciones y recursos diferentes
   La gran variedad de modelos de microcontroladores PIC permite que el
 usuario pueda seleccionar el más conveniente para su proyecto.

 8.1.4 Herramientas de soporte potentes y económicas
 La empresa Microchip y otras que utilizan los PIC ponen a disposición de los
 usuarios numerosas herramientas para desarrollar hardware y software. Son
 muy abundantes los programadores, los simuladores software, los emuladores
 en tiempo real, Ensambladores, Compiladores C, Intérpretes y Compiladores
 BASIC, etc.


 9. Las Gamas de PIC
       Una de las labores más importantes del ingeniero de diseño es la elección
 del microcontrolador que mejor satisfaga las necesidades del proyecto con el
 mínimo presupuesto.
       Para resolver aplicaciones sencillas se precisan pocos recursos, en
 cambio, las aplicaciones grandes requieren numerosos y potentes. Siguiendo
 esta filosofía Microchip construye diversos modelos de microcontroladores
 orientados a cubrir, de forma óptima, las necesidades de cada proyecto. Así,
 hay disponibles microcontroladores sencillos y baratos para atender las
 aplicaciones simples y otros complejos y más costosos para las de mucha
 envergadura.
       Microchip dispone de cuatro familias de microcontroladores de 8 bits para
 adaptarse a las necesidades de la mayoría de los clientes potenciales.
       En la mayor parte de la bibliografía encontraran tan solo tres familias de
 microcontroladores, con lo que habrán despreciado la llamada gama baja, que
 es en realidad una subfamilia formada por componentes pertenecientes a las
 otras gamas. En nuestro caso hemos preferido comentarla dado que los PIC
 bajas son muy apreciados en las aplicaciones de control de personal, en
 sistemas de seguridad y en dispositivos de bajo consumo que gestionan

Centro de Diseño e Innovación Tecnológica Industrial        SENA Dosquebradas
Microcontroladores PIC                                                  Apoyo Técnico 2009

 receptores y transmisores de señales. Su pequeño tamaño los hace ideales en
 muchos proyectos donde esta cualidad es fundamental.

 9.1 La gama baja: PIC12C (F) XXX de 8 pines

 Se trata de un grupo de PIC que ha acaparado la atención del mercado. Su
 principal característica es su reducido tamaño, al disponer todos sus
 componentes de 8 pines. Se alimentan con un voltaje de corriente continua
 comprendido entre 2,5 V y 5,5 V, y consumen menos de 2 mA cuando trabajan
 a 5 V y 4 MHz. El formato de sus instrucciones puede ser de 12 o de 14 bits y
 su repertorio es de 33 o 35 instrucciones, respectivamente.




    Aunque los PIC bajas sólo tienen 8 pines, pueden destinar hasta 6 como
 líneas de E/S para los periféricos porque disponen de un oscilador interno R-C.


    En la Tabla 1.1 se presentan las principales características de los modelos
 de esta subfamilia, que el fabricante tiene la intención de potenciar en un futuro
 próximo. Los modelos 12C5xx pertenecen a la gama baja, siendo el tamaño de
 las instrucciones de 12 bits; mientras que los 12F6xx son de la gama media y
 sus instrucciones tienen 14 bits. Los modelos 12F6xx poseen memoria Flash
 para el programa y EEPROM para los datos.
MODELO       MEMORIA     MEMORIA DATOS     FRECUENCIA   LINEAS    ADC     TEMPORIZADORE   PATITAS
            PROGRAMA                         MAXIMA       E/S    8BITS          S
PIC12C508     512x12           25x8          4 MHz        6                TMR0 + WDT        8
PIC12C509    1024x12           41x8          4 MHz        6                TMR0 + WDT        8
PIC12C670     512x14           80x8          4 MHz        6                TMR0 + WDT        8
PIC12C671    1024x14          128x8          4 MHz        6       2        TMR0 + WDT        8
PIC12C672    2048x14          128x8          4 MHz        6       4        TMR0 + WDT        8
PIC12C680 512X12 FLASH 80x8 16x8 EEPROM      4 MHz        6       4        TMR0 + WDT        8
PIC12C681 1024x14 FLASH 80x8 16x8 EEPROM     4 MHz        6                TMR0 + WDT        8




Centro de Diseño e Innovación Tecnológica Industrial                     SENA Dosquebradas
Microcontroladores PIC                                      Apoyo Técnico 2009


 9.2 Gama baja o básica: PIC16C5X con instrucciones de 12 bits.

 Se trata de una serie de PIC de recursos limitados, pero con una de la mejores
 relaciones coste/prestaciones. Sus versiones están encapsuladas con 18 y 28
 patitas y pueden alimentarse a partir de una tensión de 2,5 V, lo que les hace
 ideales en las aplicaciones que funcionan con pilas teniendo en cuenta su bajo
 consumo (menos de 2 mA a 5 V y 4 MHz). Tienen un repertorio de 33
 instrucciones cuyo formato consta de 12 bits. No admiten ningún tipo de
 interrupción y la Pila sólo dispone de dos niveles.




 Al igual que todos los miembros de la familia PIC16/17, los componentes de la
 gama baja se caracterizan por poseer los siguientes recursos: (en la Tabla 2.2
 se presentan las principales características de los modelos de esta familia).


 a. Sistema POR (“Power On Reset”)
 Todos los PIC tienen la facultad de generar una autoreinicialización o autoreset
 al conectarles la alimentación.


 b. Perro guardián (Watchdog o WDT)
 Existe un temporizador que produce un reset automáticamente si no es
 recargado antes que pase un tiempo prefijado. Así se evita que el sistema
 quede “colgado” dado en esa situación el programa no recarga dicho
 temporizador y se genera un reset.


 c. Código de protección
 Cuando se procede a realizar la grabación del programa, puede protegerse
 para evitar su lectura. También disponen los PIC de posiciones reservadas
 para registrar números de serie, códigos de identificación, prueba, etc.

Centro de Diseño e Innovación Tecnológica Industrial         SENA Dosquebradas
Microcontroladores PIC                                        Apoyo Técnico 2009




 d. Líneas de E/S de alta corriente
 Las líneas de E/S de los PIC pueden proporcionar o absorber una corriente de
 salida comprendida entre 20 y 25 mA, capaz de excitar directamente ciertos
 periféricos.


 e. Modo de reposo (Bajo consumo o “sleep”)
 Ejecutando una instrucción (SLEEP), la CPU y el oscilador principal se
 detienen y se reduce notablemente el consumo.


 Para terminar el comentario introductorio sobre los componentes de la gama
 baja conviene nombrar dos restricciones importantes:
           •    La pila o “stack” sólo dispone de dos niveles lo que supone no
                poder encadenar más de dos subrutinas.
           •    Los   microcontroladores     de    la   gama   baja   no   admiten
                interrupciones.




Centro de Diseño e Innovación Tecnológica Industrial           SENA Dosquebradas
Microcontroladores PIC                                      Apoyo Técnico 2009


 9.3 Gama media. PIC16CXXX con instrucciones de 14 bits

 Es la gama más variada y completa de los PIC. Abarca modelos con
 encapsulado desde 18 patitas hasta 68, cubriendo varias opciones que integran
 abundantes periféricos. Dentro de esta gama se halla el «fabuloso PIC16X84»
 y sus variantes. En la Figura 2.3 se muestra el diagrama de conexionado de
 uno de estos PIC.




 En esta gama sus componentes añaden nuevas prestaciones a las que
 poseían los de la gama baja, haciéndoles más adecuados en las aplicaciones
 complejas. Admiten interrupciones, poseen comparadores de magnitudes
 analógicas, convertidores A/D, puertos serie y diversos temporizadores.


 El repertorio de instrucciones es de 35, de 14 bits cada una y compatible con el
 de la gama baja. Sus distintos modelos contienen todos los recursos que se
 precisan en las aplicaciones de los microcontroladores de 8 bits. También
 dispone de interrupciones y una Pila de 8 niveles que permite el anidamiento
 de subrutinas. Las principales características de los modelos de esta familia:




Centro de Diseño e Innovación Tecnológica Industrial         SENA Dosquebradas
Microcontroladores PIC                                          Apoyo Técnico 2009




 El temporizador TMR1 que hay en esta gama tiene un circuito oscilador que
 puede trabajar asincrónicamente y que puede incrementarse aunque el
 microcontrolador se halle en el modo de reposo (“sleep”), posibilitando la
 implementación de un reloj en tiempo real.
 Las líneas de E/S presentan una carga “pull-up” activada por software.

 9.4 Gama alta: PIC17CXXX con instrucciones de 16 bits.

 Se alcanzan las 58 instrucciones de 16 bits en el repertorio y sus modelos
 disponen de un sistema de gestión de interrupciones vectoriales muy potente.
 También     incluyen    variados   controladores      de   periféricos,   puertas   de
 comunicación serie y paralelo con elementos externos, un multiplicador
 hardware de gran velocidad y mayores capacidades de memoria, que alcanza
 los 8 k palabras en la memoria de instrucciones y 454 bytes en la memoria de
 datos.
 Quizás la característica más destacable de los componentes de esta gama es
 su arquitectura abierta, que consiste en la posibilidad de ampliación del
 microcontrolador con elementos externos. Para este fin, las patitas sacan al
 exterior las líneas de los buses de datos, direcciones y control, a las que se
 conectan memorias o controladores de periféricos. Esta facultad obliga a estos
 componentes a tener un elevado número de patitas comprendido entre 40 y 44.
 Esta filosofía de construcción del sistema es la que se empleaba en los
 microprocesadores y no suele ser una práctica habitual cuando se emplean
 microcontroladores. Las características más relevantes de los modelos de esta
 gama, que sólo se utilizan en aplicaciones muy especiales con grandes
 requerimientos:


Centro de Diseño e Innovación Tecnológica Industrial              SENA Dosquebradas
Microcontroladores PIC                                 Apoyo Técnico 2009




 9.5 PIC18FXXX con instrucciones de 16 bits

 Se alcanzan las 77 instrucciones de 16bits.
 Frecuencia máxima de reloj 40 MHz. Hasta 10 MIPS (Millones de Instrucciones
 por segundo).
 Pila de 32 Niveles.
 Periféricos de comunicación avanzadas (CAN y USB).
 De 18 a 80 pines




Centro de Diseño e Innovación Tecnológica Industrial    SENA Dosquebradas
Microcontroladores PIC                                                Apoyo Técnico 2009




 10. LOS REGISTROS DE LA GAMA MEDIA


 10.1 Organización de la memoria de datos

       La ampliación de recursos en los PIC
                                                       Dirección   BANCO 0 BANCO 1 Dirección
 forzó en los catalogados como de gama                     00        INDF      INDF    80
 media una nueva estructura y la modificación              01        TMR0    OPTION    81
                                                           02         PCL       PCL    82
 de algunas instrucciones (partiendo, claro                03      STATUS STATUS       83
                                                           04         FSR       FSR    84
 está, de la gama baja). Una de las diferencias
                                                           05       PORT A    TRIS A   85
 fundamentales      es,     precisamente,         la       06       PORT B    TRIS B   86
                                                           07                          87
 ampliación de memoria de registros, a los                 08                          88
 que se unieron algunos nuevos de sistema, y               09                          89
                                                           0A      PCLATH PCLATH       8A
 la accesibilidad a parte de los mismos que                0B      INTCON INTCON       8B
 antes quedaban ocultos, como OPTION o                     0C         PIR1      PIE1   8C
                                                           0D                          8D
 TRIS, de los que hablaremos a continuación.               0E                 PCON     8E
                                                           0F                          8F
                                                           10                          90
                                                           11                          91
                                                           12                          92
 De este modo se optó por dos bancos de                    13                          93
 registros de 128 posiciones cada uno, la                  14                          94
                                                           15                          95
 mayoría de los cuales son de propósito                    16                          96
 general. En el siguiente esquema, que                     17                          97
                                                           18                          98
 muestra esta organización, las direcciones                19                          99
                                                           1A                          9A
 con casillas blancas muestran posiciones de
                                                           1B                          9B
 registros específicos, y las grises generales.            1C                          9C
                                                           1D                          9D
                                                           1E                          9E
                                                           1F      CMCON     VRCON     9F
                                                            .      Registros Registros  .
                                                            .          de        de     .
                                                            .      Propósito Propósito  .
                                                                    General   General
                                                          7F                           FF




Centro de Diseño e Innovación Tecnológica Industrial                   SENA Dosquebradas
Microcontroladores PIC                                Apoyo Técnico 2009


 10.2 Registros específicos

 10.2.1 PCL o Contador de programa:

 Se utiliza para direccionar hasta 8K
 palabras, separadas en bancos de 2K,
 del programa del usuario que se
 encuentran     almacenadas     en    la
 memoria ROM; Este contador de
 programa es de 13 bits de ancho. El
 byte de menos peso de la dirección se
 guarda en el registro PCL, situado en
 la posición 0x02 del banco 0, mientras
 los 5 bits de más peso se guardan en
 los 5 bits de menos peso del registro
 PCLATH (dirección 0x08).




 10.2.2 Registro STATUS

 Registro de 8 bits, cada uno de sus bits (Denominados Banderas) es un
 indicador de estado de la CPU o del resultado de la última operación.
 La siguiente figura corresponde al STATUS del microcontrolador PIC 16F877




 C: Acarreo en el 8º bit
       1 = acarreo en la suma y no en la resta.
       0 = acarreo en la resta y no en la suma

 DC: Acarreo en el 4º bit de menor peso.
 Igual que C.

 Z: Zero
        1 = El resultado de alguna operación es 0.
        0 = El resultado es distinto de 0

 /PD: Power Down.
       1 = Recién encendido o tras CLRWDT.
       0 = Tras ejecutar una instrucción SLEEP

 /TO: Timer Out.
       1 = Recién encendido, tras CLRWDT, o SLEEP.
        0 = Saltó el WDT

 RP1:RP0: Página de memoria de programa.
Centro de Diseño e Innovación Tecnológica Industrial   SENA Dosquebradas
Microcontroladores PIC                                        Apoyo Técnico 2009

 IRP: Direccionamiento indirecto para acceder a la paginación de una memoria.


 10.2.3 Registro OPTION:
 Registro de configuración múltiple, posee varios bits para configurar el
 preescalador, la interrupción externa, el timer y las características del puerto B.
 PIC 16F877




 RBPU: Conexión de cargas Pull-Up para la puerta B.
        1 = Cargas Pull-Up desconectadas

 INTDEG: Tipo de flanco para la interrupción.
      1 = RB0/INT sensible a flanco ascendente.
      0 = RB0/INT sensible a flanco descendente.

 T0CS: Fuente de reloj para el contador (registro TMR0).
        1 = Pulsos por pata T0CLK (contador).
        0 = Pulsos igual a reloj interno / 4 (temporizador).

 T0SE: Tipo de flanco activo del T0CLK.
        1 = Incremento TMR0 en flanco descendente.
        0 = Incremento en flanco ascendente

 PSA: Asignación del divisor de frecuencia.
        1 = Divisor asignado al WDT.
        0 = Divisor asignado al TMR0.

 PSA2:PSA0: Valor del divisor de frecuencia.




Centro de Diseño e Innovación Tecnológica Industrial           SENA Dosquebradas
Microcontroladores PIC                                    Apoyo Técnico 2009

 10.2.4 Registro INTCON:
 Registro de Interrupciones, es el encargado del control de las interrupciones y
 contiene estos bits:




 Bit 7 GIE: Activador general de Interrupciones.
        1 = Interrupciones activadas.
        0 = Interrupciones desactivadas.

 Bit 6 PEIE: Habilitación de interrupción por escritura de la EEPROM
            Activación de la interrupción de periféricos (comparador)
        1 = Activada.
        0 = Desactivada.

 Bit 5 TMR0IE: Activación de la interrupción del TMR0.
        1 = Activada.
        0 = Desactivada.

 Bit 4 INTE: Activación de la interrupción externa.
         1 = Activada.
         0 = Desactivada.

 Bit 3 RBIE: Activación de la interrupción del puerto B.
        1 = Activada.
        0 = Desactivada.

 Bit 2 T0IF: Indicador de TMR0 se ha desbordado.
         1 = TMR0 desbordado. Borrar por software.
         0 = No se ha desbordado.

 Bit 1 INTF: Bandera de Interrupción INT, se pone en 1 cuando la interrupción
         INT (RB0) ocurre; debe ser puesta en 0 por el programa.

 Bit 0 RBIF: Bandera de Interrupción por el cambio en el puerto B, se pone en 1
        cuando una de las entradas RB<7:4> cambia, debe ser puesta en 0 por
        el programa.

 Los demás registros que contiene el PIC 16F877, que es el microcontrolador en
 el que se centra este manual, serán estudiados en el caso que los necesite.




Centro de Diseño e Innovación Tecnológica Industrial        SENA Dosquebradas
Microcontroladores PIC                                                         Apoyo Técnico 2009


 11. INSTRUCCIONES
 11.1 Características generales

 Habiendo escogido los diseñadores de PIC la filosofía RISC, su juego de
 instrucciones es reducido (33 instrucciones en la gama baja), siendo éstas,
 además, sencillas y rápidas, puesto que casi todas se ejecutan en un único
 ciclo de máquina (equivalente a 4 del reloj principal). Sus operandos son de
 gran flexibilidad, pudiendo actuar cualquier objeto como fuente y como destino.

 Posee tres tipos bien diferenciados de direccionamiento, estos son:

 1º Inmediato: El valor del dato está incluido en el propio código OP, junto a la
 instrucción.

 2º Directo: La dirección del dato está incluido en el propio código OP, junto a la
 instrucción.

 3º Indirecto: La dirección de la memoria de datos que guarda el operando está
 contenida en un registro.

 Nos centraremos en la gama media, que tiene 35 instrucciones. La mayoría
 son idénticas a las de la gama baja.

 11.2 Instrucciones de la gama media

   ADDLW        Suma un literal        ADDWF              W+F              ANDLW         W AND literal

   Sintaxis: ADDLW B                   Sintaxis: ADDWF A, B                Sintaxis: [label] ANDLW k
   Operandos: 0 ≤ B ≤ 255              Operación:(W) + (A) ⇒ (dest)        Operandos: 0 ≤ k ≤ 255
   Operación: (W) + (B)⇒ (W)           Flags afectados: C, DC, Z           Operación: : (W) AND (k)⇒ (W)
   Flags afectados: C, DC, Z           Código OP: 00 0111 dfff ffff        Flags afectados: Z
                                                                           Código OP: 11 1001 kkkk kkkk
   Código OP: 11 111x kkkk kkkk
                                       Descripción:      Suma      el
                                                                           Descripción: Realiza la operación
   Descripción: Suma el contenido      contenido del registro W y el
                                                                           lógica AND entre el contenido del
   del registro W y B, guardando el    registro A. Si B es 0, el           registro W y k, guardando el
   resultado en W.                     resultado se almacena en W,         resultado en W.
   Ejemplo:        ADDLW 0x05          si d es 1 se almacena en A.
        Antes: W = 0x02                Ejemplo: ADDWF REG, 0               Ejemplo:      ADDLW 0xC2
     Después: W = 0x07                  Antes: W=0x17, REG = 0xC2
                                         Después: W = 0xD9,                 Antes: W = 0x17
                                                 REG = 0xC2                 Después: W = 0xD9



   ANDWF              W AND F          BCF        Borra un bit             BSF        Activa un bit
   Sintaxis:    ANDWF f,d              Sintaxis:   BCF f,b                 Sintaxis:   BSF f,b
   Operandos: d ∈ [0,1], 0 ≤ f ≤ 127   Operandos: 0 ≤ f ≤ 127, 0 ≤ b ≤ 7   Operandos: 0 ≤ f ≤ 127, 0 ≤ b ≤ 7
   Operación:(W) AND (f) ⇒ (dest)      Operación: : 0 ⇒ (f<b>)             Operación: 1 ⇒ (f<b>)
   Flags afectados: Z                  Flags afectados: Ninguno            Flags afectados: Ninguno
   Código OP: 00 0101 dfff ffff        Código OP: 01 00bb bfff ffff        Código OP: 01 01bb bfff ffff

   Descripción:      Realiza     la    Descripción: Borra el bit b del     Descripción: Activa el bit b del
   operación lógica AND entre los      registro f                          registro f
   registros W y f. Si d es 0, el
   resultado se almacena en W, si d                                        Ejemplo:       BSF REG,7
   es 1 se almacena en f.              Ejemplo:          BCF REG,7
   Ejemplo:        ANDWF REG,0                                              Antes: REG = 0x0A
     Antes: W = 0x17., REG = 0xC2       Antes: REG = 0xC7                   Después: REG = 0x8A
     Después: W = 0x17,                 Después: REG = 0x47
             REG = 0x02


Centro de Diseño e Innovación Tecnológica Industrial                             SENA Dosquebradas
Microcontroladores PIC                                                             Apoyo Técnico 2009




 BTFSC Test de bit y salto              BTFSS Test de bit y salto           CALL Salto a subrutina
 Sintaxis: BTFSC f,d                    Sintaxis: BTFSS f,d                 Sintaxis: CALL k
 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127      Operandos: d ∈ [0,1], 0 ≤ f ≤ 127   Operandos: 0 ≤ k ≤ 2047
 Operación: Salto si (f<b>) = 0         Operación: Salto si (f<b>) = 1      Operación: PC ⇒ Pila; k ⇒ PC
 Flags afectados: Ninguno               Flags afectados: Ninguno            Flags afectados: Ninguno
 Código OP:    01 10bb bfff ffff        Código OP:    01 11bb bfff ffff     Código OP: 10 0kkk kkkk kkkk

 Descripción: Si el bit b del           Descripción: Si el bit b del        Descripción:    Salto    a   una
 registro f es 0, se salta una          registro f es 1, se salta una       subrutina. La parte baja de k se
 instrucción y se continúa con la       instrucción y se continúa con la    carga en PCL, y la alta en
 ejecución. En caso de salto,           ejecución. En caso de salto,        PCLATCH. Ocupa 2 ciclos de
 ocupará dos ciclos de reloj.           ocupará dos ciclos de reloj.        reloj.
 Ejemplo:      BTFSC REG,6              Ejemplo:      BTFSS REG,6           Ejemplo: ORIGEN CALL
               GOTO NO_ES_0                           GOTO NO_ES_0          DESTINO
        SI_ES_0 Instrucción                  SI_ES_0 Instrucción              Antes: PC = ORIGEN
        NO_ES_0 Instrucción                  NO_ES_0 Instrucción              Después: PC = DESTINO




 CLRF Borra un registro                 CLRW Borra el registro W            CLRWDT          Borra el WDT
                                                                            Sintaxis:     CLRWDT
 Sintaxis: CLRF f                       Sintaxis: CLRW                      Operandos: Ninguno
 Operandos: 0 ≤ f ≤ 127                 Operandos: Ninguno                  Operación: 0x00 ⇒ WDT,
 Operación: 0x00 ⇒ (f), 1 ⇒ Z           Operación: 0x00 ⇒ W, 1 ⇒ Z                  1 ⇒ /TO       1 ⇒ /PD
 Flags afectados: Z                     Flags afectados: Z                  Flags afectados: /TO, /PD
 Código OP: 00 0001 1fff ffff           Código OP: 00 0001 0xxx xxxx        Código OP:        00 0000 0110
                                                                            0100
 Descripción: El registro f se          Descripción: El registro de         Descripción: Esta instrucción
 carga con 0x00. El flag Z se           trabajo W se carga con 0x00. El     borra tanto el WDT como su
 activa.                                flag Z se activa.                   preescaler. Los bits /TO y /PD del
                                                                            registro de estado se ponen a 1.
 Ejemplo:         CLRF REG              Ejemplo:     CLRW                   Ejemplo: CLRWDT
                                                                              Después: Contador WDT = 0,
  Antes: REG = 0x5A                      Antes: W = 0x5A                                 Preescales WDT = 0,
  Después: REG = 0x00, Z = 1             Después: W = 0x00, Z = 1                       /TO = 1, /PD = 1




 COMF Complemento de f                  DECF Decremento de f                DECFSZ Decremento y
                                                                            salto
 Sintaxis: COMF f,d                     Sintaxis: DECF f,d                  Sintaxis: DECFSZ f,d
 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127      Operandos: d ∈ [0,1], 0 ≤ f ≤ 127   Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
 Operación: (/ f), 1 ⇒ (dest)           Operación: (f) – 1 ⇒ (dest)         Operación:(f) -1⇒ d; Salto si R=0
 Flags afectados: Z                     Flags afectados: Z                  Flags afectados: Ninguno
 Código OP: 00 1001 dfff ffff           Código OP: 00 0011 dfff ffff        Código OP:       00 1011 dfff ffff
                                                                            Descripción: Decrementa el
 Descripción: El registro f es          Descripción: Decrementa en 1 el     contenido del registro f. Si d es 0,
 complementado. El flag Z se            contenido de f. Si d es 0, el       el resultado se almacena en W, si
 activa si el resultado es 0. Si d es   resultado se almacena en W, si d    d es 1 se almacena en f. Si la
 0, el resultado se almacena en W,      es 1 se almacena en f.              resta es 0 salta la siguiente
 si d es 1 se almacena en f.                                                instrucción, en cuyo caso costaría
 Ejemplo:          COMF REG, 0          Ejemplo:        DECF CONT,1         2 ciclos.
   Antes: REG = 0x13                                                        Ejemplo:        DECFSC REG,0
   Después: REG = 0x13,                  Antes: CONT = 0x01, Z = 0                          GOTO NO_ES_0
   W = 0XEC                              Después: CONT = 0x00, Z = 1          SI_ES_0 Instrucción
                                                                              NO_ES_0 Salta instrucción anterior




Centro de Diseño e Innovación Tecnológica Industrial                                 SENA Dosquebradas
Microcontroladores PIC                                                           Apoyo Técnico 2009



   IORLW        W OR literal             IORWF              W AND F          MOVLW Cargar literal en W

                                                                             Sintaxis: MOVLW f
   Sintaxis: IORLW k                     Sintaxis: IORWF f,d
                                                                             Operandos: 0 ≤ f ≤ 255
   Operandos: 0 ≤ k ≤ 255                Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
                                                                             Operación:    (k) ⇒ (W)
   Operación: (W) OR (k)⇒ (W)            Operación: (W) OR (f) ⇒ (dest)
                                                                             Flags afectados: Ninguno
   Flags afectados: Z                    Flags afectados: Z
                                                                             Código OP: 11 00xx kkkk kkkk
   Código OP: 11 1000 kkkk kkkk          Código OP: 00 0100 dfff ffff
                                                                             Descripción: El literal k pasa al
   Descripción: Se realiza la            Descripción:      Realiza     la
                                                                             registro W.
   operación lógica OR entre el          operación lógica OR entre los
   contenido del registro W y k,         registros W y f. Si d es 0, el
                                                                             Ejemplo: MOVLW 0x5A
   guardando el resultado en W.          resultado se almacena en W, si d
                                                                             Después:
                                         es 1 se almacena en f.
                                                                              W = 0x5A
   Ejemplo:        IORLW 0x35
                                         Ejemplo: IORWF REG,0
    Antes: W = 0x9A                       Antes: W = 0x91, REG = 0x13
    Después: W = 0xBF                    Después: W = 0x93, REG = 0x13




   MOVF                Mover a f         MOVWF              Mover a f        NOP               No operar

   Sintaxis: MOVF f, d                   Sintaxis: MOVWF f                   Sintaxis:   NOP
   Operación:      (f) ⇒ (dest)          Operandos: 0 ≤ f ≤ 127              Operandos: Ninguno
   Flags afectados: Z                    Operación:    W ⇒ (f)               Operación: No operar
   Código OP:       00 1000 dfff ffff    Flags afectados: Ninguno            Flags afectados: Ninguno
   Descripción: El contenido del         Código OP:    00 0000 1fff ffff     Código OP: 00 0000 0xx0 0000
   registro f se mueve al destino d.
   Si d es 0, el resultado se            Descripción: El contenido del       Descripción:     No      realiza
   almacena en W, si d es 1 se           registro W pasa el registro f.      operación alguna. En realidad
   almacena en f. Permite verificar el                                       consume un ciclo de instrucción
   registro, puesto que afecta a Z.      Ejemplo:     MOVWF REG,0            sin hacer nada.
   Ejemplo: MOVF REG,0                                                       Ejemplo:     CLRWDT
                                         Antes: REG = 0xFF, W = 0x4F
              Después: W = REG           Después: REG = 0x4F, W = 0x4F         Después: Contador WDT = 0,
                                                                                        Preescales WDT = 0,
                                                                                       /TO = 1, /PD = 1




   GOTO Salto incondicional              INCF       Decremento de f          INCFSZ Incremento y salto
                                                                             Sintaxis: INCFSZ f,d
                                         Sintaxis: INCF f,d                  Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
   Sintaxis: GOTO k
   Operandos: 0 ≤ k ≤ 2047               Operandos: d ∈ [0,1], 0 ≤ f ≤ 127   Operación:(f) -1⇒ d; Salto si R=0
                                         Operación: (f ) + 1 ⇒ (dest)        Flags afectados: Ninguno
   Operación: k ⇒ PC <8:0>
                                         Flags afectados: Z                  Código OP:      00 1111 dfff ffff
   Flags afectados: Ninguno
   Código OP: 10 1kkk kkkk kkkk          Código OP: 00 1010 dfff ffff
                                                                             Descripción:      Incrementa      el
                                         Descripción: Incrementa en 1 el     contenido del registro f. Si d es 0,
   Descripción: Se trata de un salto
                                         contenido de f. Si d es 0, el       el resultado se almacena en W, si
   incondicional. La parte baja de k
                                         resultado se almacena en W, si d    d es 1 se almacena en f. Si la
   se carga en PCL, y la alta en
                                         es 1 se almacena en f.              resta es 0 salta la siguiente
   PCLATCH. Ocupa 2 ciclos de
                                                                             instrucción, en cuyo caso costaría
   reloj.                                Ejemplo:       INCF CONT,1          2 ciclos.
   Ejemplo: ORIGEN GOTO DESTINO                                              Ejemplo:         INCFSC REG,0
                                          Antes: CONT = 0xFF, Z = 0
                                                                                             GOTO NO_ES_0
    Antes: PC = ORIGEN                    Después: CONT = 0x00, Z = 1
                                                                               SI_ES_0 Instrucción
    Después: PC = DESTINO                                                      NO_ES_0        Salta instrucción
                                                                             anterior




Centro de Diseño e Innovación Tecnológica Industrial                               SENA Dosquebradas
Microcontroladores PIC                                                            Apoyo Técnico 2009



   RLF     Rota f a la izquierda         RRF      Rota f a la derecha         SLEEP Modo bajo consumo
   Sintaxis: RLF f,d
   Operandos: d ∈ [0,1], 0 ≤ f ≤ 127     Sintaxis: RRF f,d                    Sintaxis:     SLEEP
   Operación:      Rotación    a    la                                        Operandos: Ninguno
                                         Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
   izquierda                                                                  Operación: 0x00 ⇒ WDT,
                                         Operación: Rotación a la derecha
   Flags afectados: C
                                         Flags afectados: C                   1 ⇒ / TO 0 ⇒ WDT
   Código OP:       00 1101 dfff ffff
                                         Código OP:      00 1100 dfff ffff     Preescaler, 0 ⇒ / PD
   Descripción: El contenido de f se
                                         Descripción: El contenido de f se    Flags afectados: / PD, / TO
   rota a la izquierda. El bit de
                                         rota a la derecha. El bit de menos   Código OP: 00 0000 0110 0011
   menos peso de f pasa al carry
                                         peso de f pasa al carry (C), y el    Descripción: El bit de energía se
   (C), y el carry se coloca en el de
                                         carry se coloca en el de mayor       pone a 0, y a 1 el de descanso. El
   mayor peso. Si d es 0, el
                                         peso. Si d es 0, el resultado se     WDT y su preescaler se borran. El
   resultado se almacena en W, si d
                                         almacena en W, si d es 1 se          micro para el oscilador, yendo al
   es 1 se almacena en f.
                                         almacena en f.                       modo “durmiente”.
   Ejemplo:    RRF REG,0
                                         Ejemplo: RRF REG,0                   Ejemplo: SLEEP
                                         Antes: REG = 1110 0110, C = 1          Preescales WDT = 0,
    Antes: REG = 1110 0110, C = 0
                                          Después: REG = 1110 0110,                     /TO = 1, /PD = 1
    Después: REG = 1110 0110,
                                            W = 01110 0011, C = 0
      W = 1100 1100, C = 1




   SUBLW Resta Literal - W               SUBWF             Resta f – W        SWAPF       Intercambio de f

   Sintaxis: SUBLW k                     Sintaxis: SUBWF f,d                  Sintaxis:    SWAPF f,d
   Operandos: 0 ≤ k ≤ 255                Operandos: d ∈ [0,1], 0 ≤ f ≤ 127    Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
   Operación: (k) - (W) ⇒ (W)            Operación:     (f) – (W)⇒ (dest)     Operación: (f <3: 0>)⇔ (f <7:4>)
   Flags afectados: Z, C, DC             Flags afectados: C, DC, Z            Flags afectados: Ninguno
   Código OP: 11 110x kkkk kkkk          Código OP:      00 0010 dfff ffff    Código OP: 00 1110 dfff ffff
                                         Descripción: Mediante el método      Descripción: Los 4 bits de más
   Descripción: Mediante el método       del complemento a dos el             peso y los 4 de menos son
   del complemento a dos el              contenido de W es restado al de f.   intercambiados. Si d es 0, el
   contenido de W es restado al          Si d es 0, el resultado se           resultado se almacena en W, si d
   literal. El resultado se almacena     almacena en W, si d es 1 se          es 1 se almacena en f.
   en W.                                 almacena en f.
   Ejemplos: SUBLW 0x02                  Ejemplos: SUBWF REG,1                Ejemplo:        SWAPF REG,0
   Antes: W=1, C=? Después: W=1,         Antes: REG=0x03, W=0x02, C=?
   C=1                                   Después: REG=0x01,W=0x4F,C=1           Antes: REG = 0xA5
   Antes: W=2,C=?. Después: W=0,         Antes: REG=0x02, W =0x02,C= ?          Después: REG = 0xA5,
   C=1                                   Desp: REG=0x00,W=0x02,C= 1                      W = 0x5A
   Antes: W=3,C=?.Después: W=FF,         Antes: REG= 0x01,W= 0x02,C= ?
   C=0                                   Desp: REG=0xFF,W=0x02, C=0
     (El resultado es negativo)               (Resultado negativo)




   RETFIE Retorno de interrup.           RETLW Retorno, carga W               RETURN Retorno de rutina

   Sintaxis: RETFIE                      Sintaxis: RETLW k                    Sintaxis: RETURN
   Operandos: Ninguno                    Operandos: 0 ≤ k ≤ 255               Operandos: Ninguno
   Operación: 1 ⇒ GIE; TOS⇒PC            Operación: (k)⇒ (W); TOS⇒PC          Operación: TOS ⇒ PC
   Flags afectados: Ninguno              Flags afectados: Ninguno             Flags afectados: Ninguno
   Código OP: 00 0000 0000 1001          Código OP: 11 01xx kkkk kkkk         Código OP: 00 0000 0000 1000
   Descripción: El PC se carga con       Descripción: El registro W se
   el contenido de la cima de la pila    carga con la constante k. El PC      Descripción: El PC se carga con
   (TOS): dirección de retorno.          se carga con el contenido de la      el contenido de la cima de la pila
   Consume       2     ciclos.   Las     cima de la pila (TOS): dirección     (TOS): dirección de retorno.
   interrupciones vuelven a ser          de retorno. Consume 2 ciclos.        Consume 2 ciclos.
   habilitadas.                          Ejemplo:        RETLW 0x37
   Ejemplo: RETFIE                                                            Ejemplo: RETURN
   Después: PC= dirección de              Después: PC = dirección de          Después: PC = dirección de
   retorno                               retorno                              retorno
              GIE = 1                              W = 0x37




Centro de Diseño e Innovación Tecnológica Industrial                                SENA Dosquebradas
Microcontroladores PIC                                                Apoyo Técnico 2009


   XORLW      W OR literal         XORWF              W AND F

   Sintaxis: XORLW k               Sintaxis: XORWF f,d
   Operandos: 0 ≤ k ≤ 255          Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
   Operación: (W) XOR (k)⇒ (W)     Operación: (W) XOR (f) ⇒ (dest)
   Flags afectados: Z              Flags afectados: Z
   Código OP: 11 1010 kkkk kkkk    Código OP: 00 0110 dfff ffff

   Descripción: Se realiza la      Descripción:      Realiza     la
   operación lógica XOR entre el   operación lógica XOR entre los
   contenido del registro W y k,   registros W y f. Si d es 0, el
   guardando el resultado en W.    resultado se almacena en W, si d
                                   es 1 se almacena en f.
   Ejemplo: XORLW 0xAF             Ejemplo:     XORWF REG,0
     Antes: W = 0xB5                 Antes: W = 0xB5, REG = 0xAF
     Después: W = 0x1A               Después: W = 0xB5,
                                              REG = 0x1A




 12. Programación de los Microcontroladores PIC

 12.1 Conceptos Básicos:
 • Lenguaje de Maquina: El único lenguaje que entienden los
 microcontroladores, formado por ceros y unos del sistema binario.
 • Lenguaje ensamblador: Expresa las instrucciones de una forma más natural
 al hombre a la vez que muy cercana al Microcontrolador, ya que cada una de
 sus instrucciones se corresponde con otra en código máquina.
 • Nemónicos: grupos de caracteres alfanuméricos que simbolizan las órdenes
 o tareas a realizar con los que trabaja el lenguaje ensamblador
 • Programa ensamblador: es una aplicación Software que se encarga de la
 traducción de los nemónicos a código máquina entendible por el
 microcontrolador.
 • Código fuente: es el programa escrito en lenguaje ensamblador al que se le
 asigna una extensión (*.asm).
 • Código máquina, fichero proporcionado por el programa ensamblador al que
 se le asigna una extensión (*.hex.)

 12.2 Introducción a la programación
 Un diagrama de flujo de datos es una descripción gráfica de un procedimiento
 para la resolución de un problema. Son frecuentemente usados para describir
 algoritmos y programas de computador. Los diagramas de flujo de datos están
 conformados por figuras conectadas con flechas. Para ejecutar un proceso
 descrito por un diagrama de flujo de datos se comienza por el INICIO y se
 siguen las flechas de figura a figura, ejecutándose las acciones indicadas por
 cada figura; el tipo de figura indica el tipo de paso que representa.
 Los diagramas de flujo son frecuentemente usados debido a que pueden
 suprimir detalles innecesarios y tener un significado preciso, si son usados
 correctamente.




Centro de Diseño e Innovación Tecnológica Industrial                   SENA Dosquebradas
Microcontroladores PIC                                     Apoyo Técnico 2009




 Para el lenguaje ensamblador utilizamos el software de MPLAB, esté es un
 software gratuito que se encuentra disponible en la página de microchip.
 Para pasar el programa del PC al microcontrolador cada grabador tiene su
 software específico, y es posible encontrar múltiples circuitos y programas en
 Internet. Microchip vende sus propios equipos, así como micros programados
 de fábrica.


 12.3 El código fuente
 Está compuesto por una sucesión de líneas de programa.
 Cada línea de programa puede estar compuesta de hasta cuatro campos o
 Columnas separadas por uno o más espacios o tabulaciones entre sí.

 Campo de etiquetas: Expresiones alfanuméricas escogidas por el
 Usuario para identificar una determinada instrucción del programa.
 Todas las etiquetas tienen asignado el valor de la posición de memoria
 En la que se encuentra la instrucción a la que acompañan.

 Campo del código de operación: Corresponde al nemónico.

Centro de Diseño e Innovación Tecnológica Industrial        SENA Dosquebradas
Microcontroladores PIC                                     Apoyo Técnico 2009

 Campo de operandos y datos: Contiene los operandos que precisa el
 Nemónico utilizado. Según la instrucción, puede haber dos, uno o ningún
 Operando.

 Campo de comentarios: Dentro de una línea, todo lo que se encuentre
 a continuación de un punto y coma (;) será ignorado y considerado como
 Comentario.

 Directivas
 • Controlan el proceso de ensamblado del programa, pero no son parte del
 Mismo (también se conocen como pseudo instrucciones).

 END
 Es la única directiva obligatoria. Indica al ensamblador dónde debe
 Detener el proceso. Debe colocarse en la última línea del programa.

 <Etiqueta> EQU <expresión>
 El valor <expresión> es asignado a <etiqueta>. Estas directivas se
 Suelen colocar al principio del programa y habitualmente se usan
 Para definir constantes y direcciones de memoria.

 [<Etiqueta>] ORG <expresión>
 Las instrucciones del código fuente que siguen a esta directiva se
 Ensamblan a partir de la posición indicada por <expresión>.

 LIST P=16F877
 Indica el tipo de microcontrolador utilizado.

 INCLUDE <p16F877.inc> o INCLUDE “p16F877.inc”
 Incluye en el programa un fichero donde se definen las etiquetas
 con las que se nombra a los diferentes registros y sus bits. Este
 fichero se encuentra en el directorio principal del programa
 ensamblador. Puede usarse esta directiva para incluir cualquier
 Otro fichero.

 13. MPLAB
 El MPLAB es un entorno de desarrollo integrado que permite escribir y codificar
 los microcontroladores PIC de Microchip para ejecutarlos.
 Por medio de este software podremos programar microcontroladores en
 lenguaje C y/o ensamblador. En este manual nos centraremos en la
 programación en ASM, pero también explicaremos el lenguaje C, con un
 diferente compilador.

 13.1 Instalar MPLAB
 MPLAB es un software gratuito, se puede descargar directamente desde la
 página en Internet de Microchip.
 Trabajaremos con la versión 8.30 de MPLAB, pero usted puede instalar la
 versión de MPLAB que tenga en el momento, ya que los cambios físicamente
 no son muy notables entre versiones.
 También con este programa podemos además de ensamblar el código,
 simularlo.

Centro de Diseño e Innovación Tecnológica Industrial        SENA Dosquebradas
Microcontroladores PIC                                     Apoyo Técnico 2009




 13.2 Conociendo el entorno del MPLAB




 13.3 Creando un nuevo proyecto en MPLAB
 1- En la barra de herramientas hay un icono que nos permitirá crear el nuevo
   proyecto. El New Project .
 2- Al dar click sobre esté, nos aparece un cuadro al que debemos introducir el
   nombre del proyecto y la ubicación donde quedara guardado.
 3- Luego de aceptar nos abre el proyecto que recién hemos creado, en donde
   Debemos seleccionar el icono New File , en donde haremos nuestro
   programa.
 4- Ahora seleccionaremos el modelo del PIC que vamos a utilizar. En la barra
   de control hay una opción llamada Configure, al dar click sobre ella
   buscaremos en la lista otro enlace llamado Select device…, al seleccionarlo
   nos abrirá una ventana en donde aparecen en una lista todos los PIC que
   permite programar el MPLAB.




Centro de Diseño e Innovación Tecnológica Industrial        SENA Dosquebradas
Microcontroladores PIC                                  Apoyo Técnico 2009




 5- Antes de comenzar a programar debemos hacer algunas configuraciones al
   microcontrolador. Entrando nuevamente por Configure – Configuración Bits,
   haremos las configuraciones que el micro requiera, por ejemplo el tipo de
   cristal oscilador que usará.




Centro de Diseño e Innovación Tecnológica Industrial      SENA Dosquebradas
Microcontroladores PIC                                     Apoyo Técnico 2009


 13.4 Primer programa en MPLAB
 El siguiente ejemplo será nuestro primer programa en ASM hecho en MPLAB.




 Cada pulsador manejara un LED, cuando se accione un pulsador, un LED
 indicara cual fue pulsado, ya que los diodos son de colores, por lo tanto si se
 pulsa el botón conectado en el BIT 0 del puerto B encenderá el LED AZUL. En
 este ejemplo aprenderemos a usar los puertos de entrada y salida.


 Programa en ASM:
 Abrimos nuevo proyecto en MPLAB, definimos nombre y la ubicación en la cual
 será guardado, abrimos un nuevo documento y seleccionas el PIC 16F877,
 como dispositivo a usar, y la configuración de los BITS.
 En la hoja del documento nuevo empezamos a crear nuestro programa.
 Cuando tenemos el programa listo, debemos guardar este fichero y para esto,
 seleccionamos en la barra de herramientas: “File – Save As” luego
 examinamos la ubicación donde vamos a guardar y por ultimo le asignamos un
 nombre y como extensión le ponemos ASM; por ejemplo si el nombre del
 archivo es display, lo guardaremos como display.asm, si no le ponemos la
 extensión, el programa nos generara error al compilar.




Centro de Diseño e Innovación Tecnológica Industrial         SENA Dosquebradas
Microcontroladores PIC                                     Apoyo Técnico 2009




 Al compilar el programa sin error, nos generara un archivo .hex, este fichero es
 el que cargamos al microcontrolador a programar o simular.



 13.5 Programación de un semáforo
 El siguiente programa tendrá como objetivo controlar un semáforo y crear
 rutinas de temporización en ASM.
 Como ejercicio propuesto para avanzar con la programación de micros se
 puede realizar el programa para controlar dos semáforos en un cruce vial.




Centro de Diseño e Innovación Tecnológica Industrial         SENA Dosquebradas
Microcontroladores PIC                                   Apoyo Técnico 2009




 En la programación se usan instrucciones que no se han usado, como
 DECFSZ, que indica decremente el archivo hasta que la bandera Z se ponga
 en 1.
 CLRF, indica borrar el archivo, clear file, ejemplo: CLRF PORTB, es igual que
 si ponemos MOVLW 0, MOVWF PORTB. El puerto igual queda con 0 en sus
 bits.
 CALL, es la instrucción de llamado, se utiliza al querer llamar una función o
 subrutina.
 EQU, igual, se utiliza para renombrar los registros, por ejemplo:
  EJEMPLO EQU 20h en el programa va a ser lo mismo mandar un dato a 20h
 que a EJEMPLO.




Centro de Diseño e Innovación Tecnológica Industrial       SENA Dosquebradas
Microcontroladores PIC                                Apoyo Técnico 2009




Centro de Diseño e Innovación Tecnológica Industrial   SENA Dosquebradas
Microcontroladores PIC                                     Apoyo Técnico 2009

 14. Funcionamiento de una Matriz de Led’s




 Comenzamos con la segunda parte del manual: ¿Cómo funciona una matriz de
 Led?; en este apartado explicaremos el funcionamiento, ¿Cómo multiplexarla?
 Y su programación.

 Una matriz de Led’s, pantalla de Led’s, visualizador electrónico o publik, se
 utiliza para pasar mensajes publicitarios, demarcar zonas, mostrar la hora y la
 fecha, en general para pasar un mensaje informativo.

 Para la construcción de un publik, se debe tener conocimientos de electrónica y
 de programación de microcontroladores, en esta guia se aprenderá el
 funcionamiento de una matriz de led’s, para que con este conocimiento se
 puedan construir una pantalla con muchas de estas matrices.

 Una matriz de led’s consiste básicamente en una matriz de pixeles similar a los
 de una pantalla de televisor o de un computador, por lo general es de un solo
 color (La mayoria de veces rojo), pero también hay bicolor o multicolores, estos
 ultimos utilizan diodos RGB, que puede mostrar cualquier color.

 Nuestra matriz será de 7 x 5, 5 columnas por 7 filas. 30 Led’s conectados
 internamente.

 En este caso podemos conectar los 13 pines al microcontrolador PIC16F877,
 pero si trabajamos con 3 o más matrices de estas, no podríamos conectar
 todos los pines de las matrices al microcontrolador, ya que 3 matrices serian 39
 pines, y este micro no podría manejar esta cantidad de pines; Para este caso
 se multiplexan las matrices.

 Como dijimos antes, la pantalla está formada por una serie de filas y columnas.
 La intersección entre ambas contiene un LED. Para que este encienda, tiene
 que recibir simultáneamente un “0” en la fila, y un “1” en la columna. Cuando se
 dan estas condiciones, la electrónica de la placa se encarga del encendido del
 LED en cuestión.

 Solo mostraremos los números del 0 al 9 en esta matriz.




Centro de Diseño e Innovación Tecnológica Industrial         SENA Dosquebradas
Microcontroladores PIC                                      Apoyo Técnico 2009




 Tenemos conectado en el puerto B las filas y en el puerto C las columnas,
 entonces para programarla utilizamos el siguiente algoritmo:
    1- Limpiamos puertos
    2- Mandamos el dato a el puerto B
    3- Activamos la columna en la que se va a mostrar el valor
    4- Temporizamos
    5- Limpiamos el puerto B
    6- Activamos la columna siguiente
    7- Mandamos dato a mostrar.
    8- Temporizamos

 Para mostrar el “0”:

                   El valor de la primera columna, de izquierda a derecha, seria
                   en decimal 65 en el puerto B.
                   El valor de la segunda columna: 62

                   El tiempo debe ser menor de 20 ms. para que se no se note el
                   parpadeo entre columnas.




Centro de Diseño e Innovación Tecnológica Industrial         SENA Dosquebradas
Microcontroladores PIC                                Apoyo Técnico 2009




                   1 columna: 111
                   2 columna: 95
                   3 columna: 0
                   4 columna: 255
                   5 columna: 255




 Números del 0 al 9 en una matriz 7x5




 La programación para el número 1 seria esta:




Centro de Diseño e Innovación Tecnológica Industrial   SENA Dosquebradas
Microcontroladores PIC                                Apoyo Técnico 2009




Centro de Diseño e Innovación Tecnológica Industrial   SENA Dosquebradas
Microcontroladores PIC                                     Apoyo Técnico 2009




 Hay que tener en cuenta que esta programación se puede simplificar, por
 ejemplo podemos usar una tabla, en donde se van a guardar los valores de las
 letras.

 Si vamos a utilizar más de dos matrices entonces debemos multiplexar.

 El multiplexado consiste en utilizar unos pocos pines del microcontrolador para
 manejar una serie de circuitos integrados que son los que se encargan de
 encender los led´s. Hay muchas maneras y circuitos integrados para hacer
 esto.




 Este circuito es un ejemplo de cómo se conectarían 4 matrices con un 74LS164
 y un PIC16F628.
 En la programación pones los datos para que el reloj del 74LS164 comience a
 encender de derecha a izquierda todas las columnas de los LED.




Centro de Diseño e Innovación Tecnológica Industrial        SENA Dosquebradas
Microcontroladores PIC                                  Apoyo Técnico 2009



 En la versión 2 de este manual:

     1) Se explicará el hardware y se mostrará la programación en ASM para un
        letrero con matrices de LED.




     2) Comunicación I2C entre un PIC 16f877 y una memoria EEPROM
        externa 24C128.

     3) Construcción de un visualizador de LED fijos.




 Bibliografía:

 www.wikipedia.org
 www.ucontrol.com.ar/
 www.unicrom.com/
 www.neoteo.com/
 Curso Avanzado de Microcontroladores PIC (Cekit)




Centro de Diseño e Innovación Tecnológica Industrial      SENA Dosquebradas

Más contenido relacionado

La actualidad más candente

98622375 contoh-soal-sistem-proteksi
98622375 contoh-soal-sistem-proteksi98622375 contoh-soal-sistem-proteksi
98622375 contoh-soal-sistem-proteksi
Reynold Pardede
 
controlar motor paso a paso por puerto serie
controlar motor paso a paso por puerto seriecontrolar motor paso a paso por puerto serie
controlar motor paso a paso por puerto serie
Miguel Angel Peña
 
Three Phase AC Regulator
Three Phase AC RegulatorThree Phase AC Regulator
Three Phase AC Regulator
Univ of Jember
 

La actualidad más candente (20)

Introduccion a Visual C Sharp
Introduccion a Visual C SharpIntroduccion a Visual C Sharp
Introduccion a Visual C Sharp
 
Ac ac monofasicos
Ac ac monofasicosAc ac monofasicos
Ac ac monofasicos
 
Ciclo De Trabajo De Un Plc
Ciclo De Trabajo De Un PlcCiclo De Trabajo De Un Plc
Ciclo De Trabajo De Un Plc
 
Informe final-1-dispositivos
Informe final-1-dispositivosInforme final-1-dispositivos
Informe final-1-dispositivos
 
Teorema de Thevenin y Norton
Teorema de Thevenin y NortonTeorema de Thevenin y Norton
Teorema de Thevenin y Norton
 
la función de excitación compleja
la función de excitación complejala función de excitación compleja
la función de excitación compleja
 
Memoria sram
Memoria sramMemoria sram
Memoria sram
 
98622375 contoh-soal-sistem-proteksi
98622375 contoh-soal-sistem-proteksi98622375 contoh-soal-sistem-proteksi
98622375 contoh-soal-sistem-proteksi
 
Amplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector ComunAmplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector Comun
 
Tableros electricos
Tableros electricosTableros electricos
Tableros electricos
 
Convertidores dcac (Colección apuntes UJA 96/97)
Convertidores dcac (Colección apuntes UJA 96/97)Convertidores dcac (Colección apuntes UJA 96/97)
Convertidores dcac (Colección apuntes UJA 96/97)
 
Resumen del 555
Resumen del 555Resumen del 555
Resumen del 555
 
controlar motor paso a paso por puerto serie
controlar motor paso a paso por puerto seriecontrolar motor paso a paso por puerto serie
controlar motor paso a paso por puerto serie
 
Interfaz java y arduino
Interfaz java y arduinoInterfaz java y arduino
Interfaz java y arduino
 
Estudio paramétrico de un sistema dinámico de primer orden
Estudio paramétrico de un sistema dinámico de primer ordenEstudio paramétrico de un sistema dinámico de primer orden
Estudio paramétrico de un sistema dinámico de primer orden
 
Labview
LabviewLabview
Labview
 
Circuitos Eléctricos CA - Parte 3
Circuitos Eléctricos CA - Parte 3Circuitos Eléctricos CA - Parte 3
Circuitos Eléctricos CA - Parte 3
 
Arquitectura del JDK.pptx
Arquitectura del JDK.pptxArquitectura del JDK.pptx
Arquitectura del JDK.pptx
 
Three Phase AC Regulator
Three Phase AC RegulatorThree Phase AC Regulator
Three Phase AC Regulator
 
SISTEMAS TRIFASICOS
SISTEMAS TRIFASICOSSISTEMAS TRIFASICOS
SISTEMAS TRIFASICOS
 

Destacado (6)

driver para moto paso a paso unipolar
driver para moto paso a paso unipolardriver para moto paso a paso unipolar
driver para moto paso a paso unipolar
 
Microcontroladores PIC
Microcontroladores PICMicrocontroladores PIC
Microcontroladores PIC
 
Microcontroladores pic
Microcontroladores picMicrocontroladores pic
Microcontroladores pic
 
Microcontroladores pic
Microcontroladores picMicrocontroladores pic
Microcontroladores pic
 
Microcontroladores pic
Microcontroladores picMicrocontroladores pic
Microcontroladores pic
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 

Similar a Introduccion a los microcontroladores pic y programacion de una matriz de led's

Qué es un microcontrolador
Qué es un microcontroladorQué es un microcontrolador
Qué es un microcontrolador
Daysi Morante
 
Sesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladoresSesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladores
Didier Tec
 
Microcontroladores-Microprocesadores
Microcontroladores-MicroprocesadoresMicrocontroladores-Microprocesadores
Microcontroladores-Microprocesadores
Alex Via Paz
 
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docxS14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
ALEJANDRALUCEROCHAMB
 

Similar a Introduccion a los microcontroladores pic y programacion de una matriz de led's (20)

Qué es un microcontrolador
Qué es un microcontroladorQué es un microcontrolador
Qué es un microcontrolador
 
Sesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladoresSesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladores
 
Microcontroladores
MicrocontroladoresMicrocontroladores
Microcontroladores
 
Microcontroladores-Microprocesadores
Microcontroladores-MicroprocesadoresMicrocontroladores-Microprocesadores
Microcontroladores-Microprocesadores
 
Microcontroladores 101108114327-phpapp01
Microcontroladores 101108114327-phpapp01Microcontroladores 101108114327-phpapp01
Microcontroladores 101108114327-phpapp01
 
Microcontroladores 101108114327-phpapp01
Microcontroladores 101108114327-phpapp01Microcontroladores 101108114327-phpapp01
Microcontroladores 101108114327-phpapp01
 
Micro1.ppt
Micro1.pptMicro1.ppt
Micro1.ppt
 
Curso Micro Tema 1
Curso Micro Tema 1Curso Micro Tema 1
Curso Micro Tema 1
 
Apunte de microprocesadores pic
Apunte de microprocesadores picApunte de microprocesadores pic
Apunte de microprocesadores pic
 
Micro1
Micro1Micro1
Micro1
 
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docxS14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
 
Introducción
IntroducciónIntroducción
Introducción
 
Introducción
IntroducciónIntroducción
Introducción
 
microcontroladores.ppt
microcontroladores.pptmicrocontroladores.ppt
microcontroladores.ppt
 
Microcontrolador
MicrocontroladorMicrocontrolador
Microcontrolador
 
Proyecto 30 11-2011
Proyecto 30 11-2011Proyecto 30 11-2011
Proyecto 30 11-2011
 
Electronica aplicada primera presentacion
Electronica aplicada primera presentacionElectronica aplicada primera presentacion
Electronica aplicada primera presentacion
 
Electronica aplicada primera presentacion
Electronica aplicada primera presentacionElectronica aplicada primera presentacion
Electronica aplicada primera presentacion
 
Microcomputadoras
MicrocomputadorasMicrocomputadoras
Microcomputadoras
 
Electronica Aplicada Microcomputadores- UNACH
Electronica Aplicada Microcomputadores- UNACHElectronica Aplicada Microcomputadores- UNACH
Electronica Aplicada Microcomputadores- UNACH
 

Más de Ruderocker Billy

Más de Ruderocker Billy (20)

Microcontroladores tabla de referencia
Microcontroladores tabla de referenciaMicrocontroladores tabla de referencia
Microcontroladores tabla de referencia
 
como programar un pic
como  programar un piccomo  programar un pic
como programar un pic
 
Diseño sala de cirugia
Diseño sala de cirugiaDiseño sala de cirugia
Diseño sala de cirugia
 
Cirugia model instalacion hidraulica y sanitaria
Cirugia model instalacion hidraulica y sanitaria Cirugia model instalacion hidraulica y sanitaria
Cirugia model instalacion hidraulica y sanitaria
 
Plano
PlanoPlano
Plano
 
Sala de cirugia
Sala de cirugiaSala de cirugia
Sala de cirugia
 
Cirugia model
Cirugia modelCirugia model
Cirugia model
 
Litiasis renal1
Litiasis renal1Litiasis renal1
Litiasis renal1
 
Sv 300 spare parts list
Sv 300 spare parts listSv 300 spare parts list
Sv 300 spare parts list
 
Sv300service manual
Sv300service manualSv300service manual
Sv300service manual
 
Ventilacion mecanica
Ventilacion mecanicaVentilacion mecanica
Ventilacion mecanica
 
Siemens 300 a_service_manual
Siemens 300 a_service_manualSiemens 300 a_service_manual
Siemens 300 a_service_manual
 
Siemens product & accessory price list
Siemens product & accessory price listSiemens product & accessory price list
Siemens product & accessory price list
 
Siemens300 300 apart2
Siemens300 300 apart2Siemens300 300 apart2
Siemens300 300 apart2
 
Siemens300 300 apart1
Siemens300 300 apart1Siemens300 300 apart1
Siemens300 300 apart1
 
Servo 300 function check (each use)
Servo 300 function check (each use)Servo 300 function check (each use)
Servo 300 function check (each use)
 
Servo 300 exchange 0 2 cell
Servo 300 exchange 0 2 cellServo 300 exchange 0 2 cell
Servo 300 exchange 0 2 cell
 
Servo 300 calibaration(2)
Servo 300 calibaration(2)Servo 300 calibaration(2)
Servo 300 calibaration(2)
 
Servo 300 3000 hour pm
Servo 300 3000 hour pmServo 300 3000 hour pm
Servo 300 3000 hour pm
 
Servo 300 1000 hour pm
Servo 300 1000 hour pmServo 300 1000 hour pm
Servo 300 1000 hour pm
 

Introduccion a los microcontroladores pic y programacion de una matriz de led's

  • 1. Microcontroladores PIC Apoyo Técnico 2009 INTRODUCCIÓN A LOS MICROCONTROLADORES PIC Y PROGRAMACIÓN DE UNA MATRIZ DE LED’s Elaborado por: Luis Edier Gañan Gañan Víctor Alexander Quintana Trujillo Grupo de Apoyo Técnico Revisado por: Saúl Alfredo Erazo Instructor del Área de automatización SENA CENTRO DE DISEÑO E INNOVACIÓN TECNOLÓGICA INDUSTRIAL REGIONAL RISARALDA NOVIEMBRE 2009 Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 2. Microcontroladores PIC Apoyo Técnico 2009 El presente proyecto tiene como objetivo servir de manual para todas aquellas personas interesadas en la programación de microcontroladores, consta de un conjunto de prácticas de diferente complejidad, así como el funcionamiento de estos dispositivos. Los microcontroladores PIC suponen un avance significativo en la materia de dispositivos digitales empleados en el control de sistemas. Su reducido tamaño así como sus elevadas prestaciones lo convierten en un elemento indispensable en el campo de los microcontroladores. Por éste motivo, el área de Automatización del Centro de Diseño e Innovación Tecnológica del SENA regional Risaralda, pretende realizar un conjunto de prácticas que profundicen en las prestaciones de los microcontroladores de forma que el aprendiz asimile los conceptos fundamentales mediante la realización de una serie de prácticas de complejidad creciente, finalizando con la práctica sobre el funcionamiento y programación de una matriz de led’s. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 3. Microcontroladores PIC Apoyo Técnico 2009 Capitulo 1 Introducción a los PIC 1. Diferencia entre el Microprocesador y Microcontrolador El microprocesador es un chip que contiene integrado la Unidad Central de Proceso (CPU), también llamada procesador en los computadores. Esta CPU es la encargada de interpretar las instrucciones y procesar los datos contenidos en el programa, que previamente se han guardado ahí. El microprocesador permite conectarle la memoria y los módulos de entrada y salida, estos dispositivos se conectan a los pines del microprocesador que ponen en el exterior las líneas de sus buses de direcciones, datos y control. Se dice que un microprocesador es un sistema abierto porque su configuración es variable de acuerdo con la aplicación a la que se destine. El microcontrolador es un circuito integrado que incluye en definitiva todos los componentes de un computador. En un microcontrolador encontramos la Unidad Central de Proceso (CPU), memoria RAM, memoria ROM, EPROM, EEPROM, FLASH, líneas de entrada y salida para comunicarse con el exterior, módulos para el control de periféricos, entre otros. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 4. Microcontroladores PIC Apoyo Técnico 2009 2. Arquitectura de los Microcontroladores La arquitectura de un microcontrolador se define como la estructura, funcionalidades, y modelos de programación del Microprocesador. Más concretamente nos referimos a su conjunto de instrucciones al número de ciclos de reloj por instrucción, a su conjunto de Registros internos, al modelo de gestión de la memoria etc. 2.1 Arquitectura Von Neumann Es la arquitectura tradicional de computadores y microprocesadores, que se basa en el esquema propuesto por John Von Neumann, en la cual la CPU (Unidad Central de Proceso), esta conectada a una memoria única que contiene las instrucciones del programa y los datos. Cuando la CPU se dirige a la memoria principal, primero saca la instrucción y después saca los datos necesarios para ejecutarla, esto retarda el funcionamiento de la CPU. 2.2 Arquitectura Harvard La arquitectura conocida como Harvard, consiste simplemente en un esquema en el que el CPU esta conectado a dos memorias por intermedio de dos buses separados. Una de las memorias contiene solamente las instrucciones del programa, y es llamada Memoria de Programa. La otra memoria solo almacena los datos y es llamada Memoria de Datos. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 5. Microcontroladores PIC Apoyo Técnico 2009 3- Tipos de Memoria La memoria interna de datos del PIC, también llamada archivos de registro, esta dividida en dos grupos: Los registros especiales, y los registros de propósito general. Los primeros ocupan por lo general los primeros lugares, por ejemplo en el PIC 16F877, en el banco 0, los registros especiales están entre 00h y 1Fh, los registros de propósito general van desde 20h, hasta 7Fh. 3.1 Memoria ROM La información pregrabada electrónicamente en ella (programa o lista de instrucciones) Solamente puede ser leída y no es posible alterar su contenido por ningún método directo. La memoria ROM es escrita, directamente por el fabricante es no Volátil, esto significa que su información no se pierde aun cuando se le suspende el suministro de energía. El precio de los microcrontroladores con este tipo de memoria es elevado. 3.2 Memoria OTP El microcontrolador contiene una memoria no volátil de sólo lectura “programable una sola vez” por el usuario. OTP (One Time Programmable). El usuario puede grabar solo una vez el programa en el chip. Es recomendable usarla en el prototipo y producción en serie del producto en cantidades muy pequeñas. 3.3 Memoria EPROM Los microcontroladores que disponen de memoria EPROM (Erasable Programmable Read OnIy Memory) pueden borrarse y grabarse muchas veces. La grabación del programa se hace igual a los OTP, con un grabador manejado por PC. Si, posteriormente se desea borrar el contenido del programa, disponen de una ventana de cristal en su superficie por la cual se somete la EPROM a rayos ultravioletas durante varios segundos. Su precio es un poco más elevado que el de los microcontroladores OTP. 3.4 Memoria EEPROM Se trata de memorias de sólo lectura, programables y borrables eléctricamente EEPROM (Electrical Erasable Programmable Read OnIy Memory). Tanto la programación como el borrado, se realizan eléctricamente desde el propio grabador y bajo el control programado de un PC. Es muy cómoda y rápida la operación de grabado y la de borrado. No disponen de ventana de cristal en la superficie. Los microcontroladores dotados de memoria EEPROM una vez instalados en el circuito, pueden grabarse y borrarse cuantas veces se quiera sin ser retirados de dicho circuito. Para ello se usan “grabadores en circuito” que confieren una gran flexibilidad y rapidez a la hora de realizar modificaciones en el programa de trabajo. 3.5 Memoria FLASH Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 6. Microcontroladores PIC Apoyo Técnico 2009 Se trata de una memoria no volátil, de bajo consumo, que se puede escribir y borrar. Funciona como una ROM y una RAM pero consume menos y es más pequeña. A diferencia de la ROM, la memoria FLASH es programable en el circuito. Es más rápida que la EEPROM. La alternativa FLASH está recomendada frente a la EEPROM cuando se precisa gran cantidad de memoria de programa no volátil. Es más veloz y tolera más ciclos de escritura/borrado. Las memorias EEPROM y FLASH son muy útiles al permitir que los microcontroladores que las incorporan puedan ser reprogramados “en circuito”, es decir, sin tener que sacar el circuito integrado de la tarjeta. Así, un dispositivo con este tipo de memoria incorporado al control del taxímetro de un automóvil publico, al variar los valores del precio por recorrido, el programador solo tendrá que reprogramar el chip en el circuito, con los valores actuales, sin necesidad de extraer el microcontrolador, ni comprando un nuevo taxímetro. 4- Puertos de entrada y salida La principal función de los pines de un microcontrolador es permitir la comunicación entre si, con periféricos exteriores. Estos pines pueden variar dependiendo del microcontrolador, pueden tener más o menos pines, cada pin tendrá un funcionamiento diferente para el procesamiento de las señales de entrada, salida o de control, dependiendo del fabricante del microcontrolador y su modelo. 5- Reloj Principal Todos los microcontroladores disponen de un circuito oscilador que genera una onda cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la sincronización de todas las operaciones del sistema. Generalmente, el circuito de reloj está incorporado en el microcontrolador y sólo se necesitan unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia de trabajo. Dichos componentes suelen consistir en un cristal de cuarzo junto a elementos pasivos o bien un resonador cerámico o una red R-C. Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las instrucciones pero lleva aparejado un incremento del consumo de energía. 6- Recursos especiales Cada microcontrolador incorpora características diferentes a los demás, estas características dependen del fabricante y versión del microcontrolador, simplemente estos recursos deben representar alguna ventaja o facilidad a la hora de hacer un diseño. La labor del diseñador es encontrar el modelo mínimo que satisfaga todos los requerimientos de su aplicación. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 7. Microcontroladores PIC Apoyo Técnico 2009 6.1 Temporizadores o “Timers” Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la cuenta de acontecimientos que suceden en el exterior (contadores). Para la medida de tiempos se carga un registro con el valor adecuado y a continuación dicho valor se va incrementando o decrementando al ritmo de los impulsos de reloj o algún múltiplo hasta que se desborde y llegue a 0, momento en el que se produce un aviso. 6.2 Perro guardián o “Watchdog Cuando el computador personal se bloquea por un fallo del software u otra causa, se pulsa el botón del reset y se reinicializa el sistema. Pero un microcontrolador funciona sin el control de un supervisor y de forma continuada las 24 horas del día. El Perro guardián consiste en un temporizador que, cuando se desborda y pasa por 0, provoca un reset automáticamente en el sistema. Es muy útil cuando se trabaja en ambientes con mucha interferencia o ruido electromagnético. Es conformado por un oscilador RC que se encuentra dentro del microcontrolador. Este oscilador corre de manera independiente al oscilador principal. Cuando se habilita su funcionamiento, dicho circuito hace que el microcontrolador sufra un reset cada determinado tiempo (que se puede programar entre 18 ms y 2 segundos). Este reset lo puede evitar el usuario mediante una instrucción especial del microcontrolador (CLRWDT: borrar conteo del watchdog), la cual se debe ejecutar antes de que termine el período nominal de dicho temporizador. De esta manera si el programa se ha salido de su flujo normal, por algún ruido o interferencia externa, el sistema se reiniciará (cuando se acabe el tiempo programado y no se haya borrado el contador) y el programa puede restablecerse para continuar su funcionamiento normal. 6.3 Protección ante fallo de alimentación o “Brownout” Se trata de un circuito que resetea al microcontrolador cuando el voltaje de alimentación (VDD) es inferior a un voltaje mínimo (“brownout”). Mientras el voltaje de alimentación sea inferior al de brownout el dispositivo se mantiene reseteado, comenzando a funcionar normalmente cuando sobrepasa dicho valor. 6.4 Modo de bajo consumo (Sleep) Esta característica permite que el microcontrolador entre a un estado pasivo donde consume muy poca potencia. Se usa en muchas aplicaciones donde el micro debe esperar sin hacer nada, a que se produzca algún acontecimiento externo que lo ponga de nuevo en funcionamiento. En dicho estado se detiene el reloj principal y se “congelan” sus circuitos asociados, quedando sumido en un profundo “sueño” el microcontrolador. Al activarse una interrupción ocasionada por el acontecimiento esperado, el microcontrolador se despierta y reanuda su trabajo. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 8. Microcontroladores PIC Apoyo Técnico 2009 6.5 Conversor D/A (CDA) Transforma los datos digitales obtenidos del procesamiento del computador en su correspondiente señal analógica que saca al exterior por una de las patitas de la cápsula. 6.6 Conversor A/D Una conversión analógica-digital (CAD) (o ADC) consiste en la transcripción de señales analógicas en señales digitales, con el propósito de facilitar su procesamiento (codificación, compresión, etc.) y hacer la señal resultante (la digital) más inmune al ruido y otras interferencias a las que son más sensibles las señales analógicas. 6.7 Comparador analógico Algunos modelos de microcontroladores disponen internamente de un Amplificador Operacional que actúa como comparador entre una señal fija de referencia y otra variable que se aplica por una de las patitas de la cápsula. La salida del comparador proporciona un nivel lógico 1 ó 0 según una señal sea mayor o menor que la otra. 6.8 Modulación por ancho de pulsos o PWM La modulación por ancho de pulsos de una señal o fuente de energía es una técnica en la que se modifica el ciclo de trabajo de una señal periódica (una sinusoidal o una cuadrada, por ejemplo), ya sea para transmitir información a través de un canal de comunicaciones o para controlar la cantidad de energía que se envía a una carga. Estos impulsos de anchura variable, se ofrecen al exterior a través de las pines del encapsulado. 6.9 Puertos de E/S Los puertos son el puente entre el microcontrolador y el mundo exterior. Son líneas que trabajan entre cero y cinco voltios. Las líneas digitales de los Puertos pueden configurarse como Entrada o como Salida cargando un 1 ó un 0 en el BIT correspondiente de un registro destinado a su configuración. 6.10 Puertos de comunicación Con objeto de dotar al microcontrolador de la posibilidad de comunicarse con otros dispositivos externos, otros buses de microprocesadores, buses de sistemas, buses de redes y poder adaptarlos con otros elementos bajo otras normas y protocolos. Algunos modelos disponen de recursos que permiten directamente esta tarea, entre los que destacan: • UART, adaptador de comunicación serie asíncrona. • USART, adaptador de comunicación serie síncrona y asíncrona • Puerta paralela esclava para poder conectarse con los buses de otros microprocesadores. • USB (Universal Serial Bus), que es un moderno bus serie para los PC. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 9. Microcontroladores PIC Apoyo Técnico 2009 • Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips. • CAN (Controller Area Network), para permitir la adaptación con redes de conexionado multiplexado desarrollado conjuntamente por Bosch e Intel para el cableado de dispositivos en automóviles. En EE.UU. se usa el J185O. 6.11 Interrupciones Se trata de un acontecimiento que hace que el micro deje de lado lo que se encuentra realizando, atienda ese suceso y luego regrese y continúe con lo suyo. Existen dos tipos de interrupciones posibles, una es mediante una acción externa (es decir por la activación de uno de sus pines), la otra es interna (por ejemplo cuando ocurre el desbordamiento de uno de sus registros) 7. Herramientas para el desarrollo de aplicaciones Uno de los factores que más importancia tiene a la hora de seleccionar un microcontrolador entre todos los demás es el soporte tanto software como hardware de que dispone. Un buen conjunto de herramientas de desarrollo puede ser decisivo en la elección, ya que pueden suponer una ayuda inestimable en el desarrollo del proyecto. Las principales herramientas de ayuda al desarrollo de sistemas basados en microcontroladores son: • Desarrollo del software: Ensamblador. La programación en lenguaje ensamblador puede resultar un tanto ardua para el principiante, pero permite desarrollar programas muy eficientes, ya que otorga al programador el dominio absoluto del sistema. Los fabricantes suelen proporcionar el programa ensamblador de forma gratuita y en cualquier caso siempre se puede encontrar una versión gratuita para los microcontroladores más populares. Compilador: La programación en un lenguaje de alto nivel (como el C) permite disminuir el tiempo de desarrollo de un producto. No obstante, si no se programa con cuidado, el código resultante puede ser mucho más ineficiente que el programado en ensamblador. Las versiones más potentes suelen ser muy caras, aunque para los microcontroladores más populares pueden encontrarse versiones demo limitadas e incluso compiladores gratuitos. Simulador: Son capaces de ejecutar en un PC programas realizados para el microcontrolador. Los simuladores permiten tener un control absoluto sobre la ejecución de un programa, siendo ideales para la depuración de los mismos. No cuentan con los posibles ruidos en las entradas, pero, al menos, permiten el paso físico de la implementación de un modo más seguro y menos costoso. En circuitos donde se requiere mucha velocidad para poder ver un efecto, los simuladores muchas veces no reaccionan como funcionaria en un medio físico, tal es el caso de los displays de 7 segmentos y matrices de led’s. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 10. Microcontroladores PIC Apoyo Técnico 2009 Entrenadores: Se trata de pequeños sistemas con un microcontrolador ya montado y que suelen conectarse a un PC desde el que se cargan los programas que se ejecutan en el microcontrolador. Las placas suelen incluir visualizadores LCD, teclados, LEDs, fácil acceso a los pines de E/S, etc. 8. Microcontroladores PIC Son los dispositivos que más se usan en nuestra región, la realidad es que no hay una repuesta concreta de la explicación del uso de PIC en vez del Motorola (su uso se esta popularizando en los últimos tiempos) o cualquier otra familia de microcontroladores. Pero puede ser su velocidad, el precio, su facilidad de uso, la información, su pequeño tamaño… Todo esto es lo que produce esa imagen de sencillez y utilidad que al parecer le agradan tanto a un diseñador de microcontroladores, pero en un futuro alguna otra familia le puede arrebatar ese “algo”. Queremos constatar que para las aplicaciones más habituales (casi un 90%) la elección de una versión adecuada de PIC es la mejor solución; sin embargo, dado su carácter general, otras familias de microcontroladores son más eficaces en aplicaciones específicas, especialmente si en ellas predomina una característica concreta, que puede estar muy desarrollada en otra familia. Los PIC son relativamente más baratos económicamente que el de sus competidores, la información es fácil de conseguir y económica, buenos parámetros de funcionamiento: velocidad, consumo tamaño, etc.; la herramientas de software se pueden bajar libremente por su pagina: http://www.microchip.com). Una de las razones del éxito de los PIC se basa en su utilización. Cuando se aprende a manejar uno de ellos, conociendo su arquitectura y su repertorio de instrucciones, es muy fácil emplear otro modelo. 8.1 Características relevantes. Descripción de las características más representativas de los PIC: 8.1.1 Arquitectura. La arquitectura del procesador sigue el modelo Harvard. En esta arquitectura, la CPU se conecta de forma independiente y con buses distintos con la memoria de instrucciones y con la de datos. La arquitectura Harvard permite a la CPU acceder simultáneamente a las dos memorias. Además, propicia numerosas ventajas al funcionamiento del sistema como se irán describiendo. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 11. Microcontroladores PIC Apoyo Técnico 2009 8.1.2 Arquitectura basada en un “banco de registros” Esto significa que todos los objetos del sistema (puertas de E/S, temporizadores, posiciones de memoria, etc.) están implementados físicamente como registros. 8.1.3 Diversidad de modelos de microcontroladores con prestaciones y recursos diferentes La gran variedad de modelos de microcontroladores PIC permite que el usuario pueda seleccionar el más conveniente para su proyecto. 8.1.4 Herramientas de soporte potentes y económicas La empresa Microchip y otras que utilizan los PIC ponen a disposición de los usuarios numerosas herramientas para desarrollar hardware y software. Son muy abundantes los programadores, los simuladores software, los emuladores en tiempo real, Ensambladores, Compiladores C, Intérpretes y Compiladores BASIC, etc. 9. Las Gamas de PIC Una de las labores más importantes del ingeniero de diseño es la elección del microcontrolador que mejor satisfaga las necesidades del proyecto con el mínimo presupuesto. Para resolver aplicaciones sencillas se precisan pocos recursos, en cambio, las aplicaciones grandes requieren numerosos y potentes. Siguiendo esta filosofía Microchip construye diversos modelos de microcontroladores orientados a cubrir, de forma óptima, las necesidades de cada proyecto. Así, hay disponibles microcontroladores sencillos y baratos para atender las aplicaciones simples y otros complejos y más costosos para las de mucha envergadura. Microchip dispone de cuatro familias de microcontroladores de 8 bits para adaptarse a las necesidades de la mayoría de los clientes potenciales. En la mayor parte de la bibliografía encontraran tan solo tres familias de microcontroladores, con lo que habrán despreciado la llamada gama baja, que es en realidad una subfamilia formada por componentes pertenecientes a las otras gamas. En nuestro caso hemos preferido comentarla dado que los PIC bajas son muy apreciados en las aplicaciones de control de personal, en sistemas de seguridad y en dispositivos de bajo consumo que gestionan Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 12. Microcontroladores PIC Apoyo Técnico 2009 receptores y transmisores de señales. Su pequeño tamaño los hace ideales en muchos proyectos donde esta cualidad es fundamental. 9.1 La gama baja: PIC12C (F) XXX de 8 pines Se trata de un grupo de PIC que ha acaparado la atención del mercado. Su principal característica es su reducido tamaño, al disponer todos sus componentes de 8 pines. Se alimentan con un voltaje de corriente continua comprendido entre 2,5 V y 5,5 V, y consumen menos de 2 mA cuando trabajan a 5 V y 4 MHz. El formato de sus instrucciones puede ser de 12 o de 14 bits y su repertorio es de 33 o 35 instrucciones, respectivamente. Aunque los PIC bajas sólo tienen 8 pines, pueden destinar hasta 6 como líneas de E/S para los periféricos porque disponen de un oscilador interno R-C. En la Tabla 1.1 se presentan las principales características de los modelos de esta subfamilia, que el fabricante tiene la intención de potenciar en un futuro próximo. Los modelos 12C5xx pertenecen a la gama baja, siendo el tamaño de las instrucciones de 12 bits; mientras que los 12F6xx son de la gama media y sus instrucciones tienen 14 bits. Los modelos 12F6xx poseen memoria Flash para el programa y EEPROM para los datos. MODELO MEMORIA MEMORIA DATOS FRECUENCIA LINEAS ADC TEMPORIZADORE PATITAS PROGRAMA MAXIMA E/S 8BITS S PIC12C508 512x12 25x8 4 MHz 6 TMR0 + WDT 8 PIC12C509 1024x12 41x8 4 MHz 6 TMR0 + WDT 8 PIC12C670 512x14 80x8 4 MHz 6 TMR0 + WDT 8 PIC12C671 1024x14 128x8 4 MHz 6 2 TMR0 + WDT 8 PIC12C672 2048x14 128x8 4 MHz 6 4 TMR0 + WDT 8 PIC12C680 512X12 FLASH 80x8 16x8 EEPROM 4 MHz 6 4 TMR0 + WDT 8 PIC12C681 1024x14 FLASH 80x8 16x8 EEPROM 4 MHz 6 TMR0 + WDT 8 Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 13. Microcontroladores PIC Apoyo Técnico 2009 9.2 Gama baja o básica: PIC16C5X con instrucciones de 12 bits. Se trata de una serie de PIC de recursos limitados, pero con una de la mejores relaciones coste/prestaciones. Sus versiones están encapsuladas con 18 y 28 patitas y pueden alimentarse a partir de una tensión de 2,5 V, lo que les hace ideales en las aplicaciones que funcionan con pilas teniendo en cuenta su bajo consumo (menos de 2 mA a 5 V y 4 MHz). Tienen un repertorio de 33 instrucciones cuyo formato consta de 12 bits. No admiten ningún tipo de interrupción y la Pila sólo dispone de dos niveles. Al igual que todos los miembros de la familia PIC16/17, los componentes de la gama baja se caracterizan por poseer los siguientes recursos: (en la Tabla 2.2 se presentan las principales características de los modelos de esta familia). a. Sistema POR (“Power On Reset”) Todos los PIC tienen la facultad de generar una autoreinicialización o autoreset al conectarles la alimentación. b. Perro guardián (Watchdog o WDT) Existe un temporizador que produce un reset automáticamente si no es recargado antes que pase un tiempo prefijado. Así se evita que el sistema quede “colgado” dado en esa situación el programa no recarga dicho temporizador y se genera un reset. c. Código de protección Cuando se procede a realizar la grabación del programa, puede protegerse para evitar su lectura. También disponen los PIC de posiciones reservadas para registrar números de serie, códigos de identificación, prueba, etc. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 14. Microcontroladores PIC Apoyo Técnico 2009 d. Líneas de E/S de alta corriente Las líneas de E/S de los PIC pueden proporcionar o absorber una corriente de salida comprendida entre 20 y 25 mA, capaz de excitar directamente ciertos periféricos. e. Modo de reposo (Bajo consumo o “sleep”) Ejecutando una instrucción (SLEEP), la CPU y el oscilador principal se detienen y se reduce notablemente el consumo. Para terminar el comentario introductorio sobre los componentes de la gama baja conviene nombrar dos restricciones importantes: • La pila o “stack” sólo dispone de dos niveles lo que supone no poder encadenar más de dos subrutinas. • Los microcontroladores de la gama baja no admiten interrupciones. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 15. Microcontroladores PIC Apoyo Técnico 2009 9.3 Gama media. PIC16CXXX con instrucciones de 14 bits Es la gama más variada y completa de los PIC. Abarca modelos con encapsulado desde 18 patitas hasta 68, cubriendo varias opciones que integran abundantes periféricos. Dentro de esta gama se halla el «fabuloso PIC16X84» y sus variantes. En la Figura 2.3 se muestra el diagrama de conexionado de uno de estos PIC. En esta gama sus componentes añaden nuevas prestaciones a las que poseían los de la gama baja, haciéndoles más adecuados en las aplicaciones complejas. Admiten interrupciones, poseen comparadores de magnitudes analógicas, convertidores A/D, puertos serie y diversos temporizadores. El repertorio de instrucciones es de 35, de 14 bits cada una y compatible con el de la gama baja. Sus distintos modelos contienen todos los recursos que se precisan en las aplicaciones de los microcontroladores de 8 bits. También dispone de interrupciones y una Pila de 8 niveles que permite el anidamiento de subrutinas. Las principales características de los modelos de esta familia: Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 16. Microcontroladores PIC Apoyo Técnico 2009 El temporizador TMR1 que hay en esta gama tiene un circuito oscilador que puede trabajar asincrónicamente y que puede incrementarse aunque el microcontrolador se halle en el modo de reposo (“sleep”), posibilitando la implementación de un reloj en tiempo real. Las líneas de E/S presentan una carga “pull-up” activada por software. 9.4 Gama alta: PIC17CXXX con instrucciones de 16 bits. Se alcanzan las 58 instrucciones de 16 bits en el repertorio y sus modelos disponen de un sistema de gestión de interrupciones vectoriales muy potente. También incluyen variados controladores de periféricos, puertas de comunicación serie y paralelo con elementos externos, un multiplicador hardware de gran velocidad y mayores capacidades de memoria, que alcanza los 8 k palabras en la memoria de instrucciones y 454 bytes en la memoria de datos. Quizás la característica más destacable de los componentes de esta gama es su arquitectura abierta, que consiste en la posibilidad de ampliación del microcontrolador con elementos externos. Para este fin, las patitas sacan al exterior las líneas de los buses de datos, direcciones y control, a las que se conectan memorias o controladores de periféricos. Esta facultad obliga a estos componentes a tener un elevado número de patitas comprendido entre 40 y 44. Esta filosofía de construcción del sistema es la que se empleaba en los microprocesadores y no suele ser una práctica habitual cuando se emplean microcontroladores. Las características más relevantes de los modelos de esta gama, que sólo se utilizan en aplicaciones muy especiales con grandes requerimientos: Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 17. Microcontroladores PIC Apoyo Técnico 2009 9.5 PIC18FXXX con instrucciones de 16 bits Se alcanzan las 77 instrucciones de 16bits. Frecuencia máxima de reloj 40 MHz. Hasta 10 MIPS (Millones de Instrucciones por segundo). Pila de 32 Niveles. Periféricos de comunicación avanzadas (CAN y USB). De 18 a 80 pines Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 18. Microcontroladores PIC Apoyo Técnico 2009 10. LOS REGISTROS DE LA GAMA MEDIA 10.1 Organización de la memoria de datos La ampliación de recursos en los PIC Dirección BANCO 0 BANCO 1 Dirección forzó en los catalogados como de gama 00 INDF INDF 80 media una nueva estructura y la modificación 01 TMR0 OPTION 81 02 PCL PCL 82 de algunas instrucciones (partiendo, claro 03 STATUS STATUS 83 04 FSR FSR 84 está, de la gama baja). Una de las diferencias 05 PORT A TRIS A 85 fundamentales es, precisamente, la 06 PORT B TRIS B 86 07 87 ampliación de memoria de registros, a los 08 88 que se unieron algunos nuevos de sistema, y 09 89 0A PCLATH PCLATH 8A la accesibilidad a parte de los mismos que 0B INTCON INTCON 8B antes quedaban ocultos, como OPTION o 0C PIR1 PIE1 8C 0D 8D TRIS, de los que hablaremos a continuación. 0E PCON 8E 0F 8F 10 90 11 91 12 92 De este modo se optó por dos bancos de 13 93 registros de 128 posiciones cada uno, la 14 94 15 95 mayoría de los cuales son de propósito 16 96 general. En el siguiente esquema, que 17 97 18 98 muestra esta organización, las direcciones 19 99 1A 9A con casillas blancas muestran posiciones de 1B 9B registros específicos, y las grises generales. 1C 9C 1D 9D 1E 9E 1F CMCON VRCON 9F . Registros Registros . . de de . . Propósito Propósito . General General 7F FF Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 19. Microcontroladores PIC Apoyo Técnico 2009 10.2 Registros específicos 10.2.1 PCL o Contador de programa: Se utiliza para direccionar hasta 8K palabras, separadas en bancos de 2K, del programa del usuario que se encuentran almacenadas en la memoria ROM; Este contador de programa es de 13 bits de ancho. El byte de menos peso de la dirección se guarda en el registro PCL, situado en la posición 0x02 del banco 0, mientras los 5 bits de más peso se guardan en los 5 bits de menos peso del registro PCLATH (dirección 0x08). 10.2.2 Registro STATUS Registro de 8 bits, cada uno de sus bits (Denominados Banderas) es un indicador de estado de la CPU o del resultado de la última operación. La siguiente figura corresponde al STATUS del microcontrolador PIC 16F877 C: Acarreo en el 8º bit 1 = acarreo en la suma y no en la resta. 0 = acarreo en la resta y no en la suma DC: Acarreo en el 4º bit de menor peso. Igual que C. Z: Zero 1 = El resultado de alguna operación es 0. 0 = El resultado es distinto de 0 /PD: Power Down. 1 = Recién encendido o tras CLRWDT. 0 = Tras ejecutar una instrucción SLEEP /TO: Timer Out. 1 = Recién encendido, tras CLRWDT, o SLEEP. 0 = Saltó el WDT RP1:RP0: Página de memoria de programa. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 20. Microcontroladores PIC Apoyo Técnico 2009 IRP: Direccionamiento indirecto para acceder a la paginación de una memoria. 10.2.3 Registro OPTION: Registro de configuración múltiple, posee varios bits para configurar el preescalador, la interrupción externa, el timer y las características del puerto B. PIC 16F877 RBPU: Conexión de cargas Pull-Up para la puerta B. 1 = Cargas Pull-Up desconectadas INTDEG: Tipo de flanco para la interrupción. 1 = RB0/INT sensible a flanco ascendente. 0 = RB0/INT sensible a flanco descendente. T0CS: Fuente de reloj para el contador (registro TMR0). 1 = Pulsos por pata T0CLK (contador). 0 = Pulsos igual a reloj interno / 4 (temporizador). T0SE: Tipo de flanco activo del T0CLK. 1 = Incremento TMR0 en flanco descendente. 0 = Incremento en flanco ascendente PSA: Asignación del divisor de frecuencia. 1 = Divisor asignado al WDT. 0 = Divisor asignado al TMR0. PSA2:PSA0: Valor del divisor de frecuencia. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 21. Microcontroladores PIC Apoyo Técnico 2009 10.2.4 Registro INTCON: Registro de Interrupciones, es el encargado del control de las interrupciones y contiene estos bits: Bit 7 GIE: Activador general de Interrupciones. 1 = Interrupciones activadas. 0 = Interrupciones desactivadas. Bit 6 PEIE: Habilitación de interrupción por escritura de la EEPROM Activación de la interrupción de periféricos (comparador) 1 = Activada. 0 = Desactivada. Bit 5 TMR0IE: Activación de la interrupción del TMR0. 1 = Activada. 0 = Desactivada. Bit 4 INTE: Activación de la interrupción externa. 1 = Activada. 0 = Desactivada. Bit 3 RBIE: Activación de la interrupción del puerto B. 1 = Activada. 0 = Desactivada. Bit 2 T0IF: Indicador de TMR0 se ha desbordado. 1 = TMR0 desbordado. Borrar por software. 0 = No se ha desbordado. Bit 1 INTF: Bandera de Interrupción INT, se pone en 1 cuando la interrupción INT (RB0) ocurre; debe ser puesta en 0 por el programa. Bit 0 RBIF: Bandera de Interrupción por el cambio en el puerto B, se pone en 1 cuando una de las entradas RB<7:4> cambia, debe ser puesta en 0 por el programa. Los demás registros que contiene el PIC 16F877, que es el microcontrolador en el que se centra este manual, serán estudiados en el caso que los necesite. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 22. Microcontroladores PIC Apoyo Técnico 2009 11. INSTRUCCIONES 11.1 Características generales Habiendo escogido los diseñadores de PIC la filosofía RISC, su juego de instrucciones es reducido (33 instrucciones en la gama baja), siendo éstas, además, sencillas y rápidas, puesto que casi todas se ejecutan en un único ciclo de máquina (equivalente a 4 del reloj principal). Sus operandos son de gran flexibilidad, pudiendo actuar cualquier objeto como fuente y como destino. Posee tres tipos bien diferenciados de direccionamiento, estos son: 1º Inmediato: El valor del dato está incluido en el propio código OP, junto a la instrucción. 2º Directo: La dirección del dato está incluido en el propio código OP, junto a la instrucción. 3º Indirecto: La dirección de la memoria de datos que guarda el operando está contenida en un registro. Nos centraremos en la gama media, que tiene 35 instrucciones. La mayoría son idénticas a las de la gama baja. 11.2 Instrucciones de la gama media ADDLW Suma un literal ADDWF W+F ANDLW W AND literal Sintaxis: ADDLW B Sintaxis: ADDWF A, B Sintaxis: [label] ANDLW k Operandos: 0 ≤ B ≤ 255 Operación:(W) + (A) ⇒ (dest) Operandos: 0 ≤ k ≤ 255 Operación: (W) + (B)⇒ (W) Flags afectados: C, DC, Z Operación: : (W) AND (k)⇒ (W) Flags afectados: C, DC, Z Código OP: 00 0111 dfff ffff Flags afectados: Z Código OP: 11 1001 kkkk kkkk Código OP: 11 111x kkkk kkkk Descripción: Suma el Descripción: Realiza la operación Descripción: Suma el contenido contenido del registro W y el lógica AND entre el contenido del del registro W y B, guardando el registro A. Si B es 0, el registro W y k, guardando el resultado en W. resultado se almacena en W, resultado en W. Ejemplo: ADDLW 0x05 si d es 1 se almacena en A. Antes: W = 0x02 Ejemplo: ADDWF REG, 0 Ejemplo: ADDLW 0xC2 Después: W = 0x07 Antes: W=0x17, REG = 0xC2 Después: W = 0xD9, Antes: W = 0x17 REG = 0xC2 Después: W = 0xD9 ANDWF W AND F BCF Borra un bit BSF Activa un bit Sintaxis: ANDWF f,d Sintaxis: BCF f,b Sintaxis: BSF f,b Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: 0 ≤ f ≤ 127, 0 ≤ b ≤ 7 Operandos: 0 ≤ f ≤ 127, 0 ≤ b ≤ 7 Operación:(W) AND (f) ⇒ (dest) Operación: : 0 ⇒ (f<b>) Operación: 1 ⇒ (f<b>) Flags afectados: Z Flags afectados: Ninguno Flags afectados: Ninguno Código OP: 00 0101 dfff ffff Código OP: 01 00bb bfff ffff Código OP: 01 01bb bfff ffff Descripción: Realiza la Descripción: Borra el bit b del Descripción: Activa el bit b del operación lógica AND entre los registro f registro f registros W y f. Si d es 0, el resultado se almacena en W, si d Ejemplo: BSF REG,7 es 1 se almacena en f. Ejemplo: BCF REG,7 Ejemplo: ANDWF REG,0 Antes: REG = 0x0A Antes: W = 0x17., REG = 0xC2 Antes: REG = 0xC7 Después: REG = 0x8A Después: W = 0x17, Después: REG = 0x47 REG = 0x02 Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 23. Microcontroladores PIC Apoyo Técnico 2009 BTFSC Test de bit y salto BTFSS Test de bit y salto CALL Salto a subrutina Sintaxis: BTFSC f,d Sintaxis: BTFSS f,d Sintaxis: CALL k Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: 0 ≤ k ≤ 2047 Operación: Salto si (f<b>) = 0 Operación: Salto si (f<b>) = 1 Operación: PC ⇒ Pila; k ⇒ PC Flags afectados: Ninguno Flags afectados: Ninguno Flags afectados: Ninguno Código OP: 01 10bb bfff ffff Código OP: 01 11bb bfff ffff Código OP: 10 0kkk kkkk kkkk Descripción: Si el bit b del Descripción: Si el bit b del Descripción: Salto a una registro f es 0, se salta una registro f es 1, se salta una subrutina. La parte baja de k se instrucción y se continúa con la instrucción y se continúa con la carga en PCL, y la alta en ejecución. En caso de salto, ejecución. En caso de salto, PCLATCH. Ocupa 2 ciclos de ocupará dos ciclos de reloj. ocupará dos ciclos de reloj. reloj. Ejemplo: BTFSC REG,6 Ejemplo: BTFSS REG,6 Ejemplo: ORIGEN CALL GOTO NO_ES_0 GOTO NO_ES_0 DESTINO SI_ES_0 Instrucción SI_ES_0 Instrucción Antes: PC = ORIGEN NO_ES_0 Instrucción NO_ES_0 Instrucción Después: PC = DESTINO CLRF Borra un registro CLRW Borra el registro W CLRWDT Borra el WDT Sintaxis: CLRWDT Sintaxis: CLRF f Sintaxis: CLRW Operandos: Ninguno Operandos: 0 ≤ f ≤ 127 Operandos: Ninguno Operación: 0x00 ⇒ WDT, Operación: 0x00 ⇒ (f), 1 ⇒ Z Operación: 0x00 ⇒ W, 1 ⇒ Z 1 ⇒ /TO 1 ⇒ /PD Flags afectados: Z Flags afectados: Z Flags afectados: /TO, /PD Código OP: 00 0001 1fff ffff Código OP: 00 0001 0xxx xxxx Código OP: 00 0000 0110 0100 Descripción: El registro f se Descripción: El registro de Descripción: Esta instrucción carga con 0x00. El flag Z se trabajo W se carga con 0x00. El borra tanto el WDT como su activa. flag Z se activa. preescaler. Los bits /TO y /PD del registro de estado se ponen a 1. Ejemplo: CLRF REG Ejemplo: CLRW Ejemplo: CLRWDT Después: Contador WDT = 0, Antes: REG = 0x5A Antes: W = 0x5A Preescales WDT = 0, Después: REG = 0x00, Z = 1 Después: W = 0x00, Z = 1 /TO = 1, /PD = 1 COMF Complemento de f DECF Decremento de f DECFSZ Decremento y salto Sintaxis: COMF f,d Sintaxis: DECF f,d Sintaxis: DECFSZ f,d Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operación: (/ f), 1 ⇒ (dest) Operación: (f) – 1 ⇒ (dest) Operación:(f) -1⇒ d; Salto si R=0 Flags afectados: Z Flags afectados: Z Flags afectados: Ninguno Código OP: 00 1001 dfff ffff Código OP: 00 0011 dfff ffff Código OP: 00 1011 dfff ffff Descripción: Decrementa el Descripción: El registro f es Descripción: Decrementa en 1 el contenido del registro f. Si d es 0, complementado. El flag Z se contenido de f. Si d es 0, el el resultado se almacena en W, si activa si el resultado es 0. Si d es resultado se almacena en W, si d d es 1 se almacena en f. Si la 0, el resultado se almacena en W, es 1 se almacena en f. resta es 0 salta la siguiente si d es 1 se almacena en f. instrucción, en cuyo caso costaría Ejemplo: COMF REG, 0 Ejemplo: DECF CONT,1 2 ciclos. Antes: REG = 0x13 Ejemplo: DECFSC REG,0 Después: REG = 0x13, Antes: CONT = 0x01, Z = 0 GOTO NO_ES_0 W = 0XEC Después: CONT = 0x00, Z = 1 SI_ES_0 Instrucción NO_ES_0 Salta instrucción anterior Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 24. Microcontroladores PIC Apoyo Técnico 2009 IORLW W OR literal IORWF W AND F MOVLW Cargar literal en W Sintaxis: MOVLW f Sintaxis: IORLW k Sintaxis: IORWF f,d Operandos: 0 ≤ f ≤ 255 Operandos: 0 ≤ k ≤ 255 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operación: (k) ⇒ (W) Operación: (W) OR (k)⇒ (W) Operación: (W) OR (f) ⇒ (dest) Flags afectados: Ninguno Flags afectados: Z Flags afectados: Z Código OP: 11 00xx kkkk kkkk Código OP: 11 1000 kkkk kkkk Código OP: 00 0100 dfff ffff Descripción: El literal k pasa al Descripción: Se realiza la Descripción: Realiza la registro W. operación lógica OR entre el operación lógica OR entre los contenido del registro W y k, registros W y f. Si d es 0, el Ejemplo: MOVLW 0x5A guardando el resultado en W. resultado se almacena en W, si d Después: es 1 se almacena en f. W = 0x5A Ejemplo: IORLW 0x35 Ejemplo: IORWF REG,0 Antes: W = 0x9A Antes: W = 0x91, REG = 0x13 Después: W = 0xBF Después: W = 0x93, REG = 0x13 MOVF Mover a f MOVWF Mover a f NOP No operar Sintaxis: MOVF f, d Sintaxis: MOVWF f Sintaxis: NOP Operación: (f) ⇒ (dest) Operandos: 0 ≤ f ≤ 127 Operandos: Ninguno Flags afectados: Z Operación: W ⇒ (f) Operación: No operar Código OP: 00 1000 dfff ffff Flags afectados: Ninguno Flags afectados: Ninguno Descripción: El contenido del Código OP: 00 0000 1fff ffff Código OP: 00 0000 0xx0 0000 registro f se mueve al destino d. Si d es 0, el resultado se Descripción: El contenido del Descripción: No realiza almacena en W, si d es 1 se registro W pasa el registro f. operación alguna. En realidad almacena en f. Permite verificar el consume un ciclo de instrucción registro, puesto que afecta a Z. Ejemplo: MOVWF REG,0 sin hacer nada. Ejemplo: MOVF REG,0 Ejemplo: CLRWDT Antes: REG = 0xFF, W = 0x4F Después: W = REG Después: REG = 0x4F, W = 0x4F Después: Contador WDT = 0, Preescales WDT = 0, /TO = 1, /PD = 1 GOTO Salto incondicional INCF Decremento de f INCFSZ Incremento y salto Sintaxis: INCFSZ f,d Sintaxis: INCF f,d Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Sintaxis: GOTO k Operandos: 0 ≤ k ≤ 2047 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operación:(f) -1⇒ d; Salto si R=0 Operación: (f ) + 1 ⇒ (dest) Flags afectados: Ninguno Operación: k ⇒ PC <8:0> Flags afectados: Z Código OP: 00 1111 dfff ffff Flags afectados: Ninguno Código OP: 10 1kkk kkkk kkkk Código OP: 00 1010 dfff ffff Descripción: Incrementa el Descripción: Incrementa en 1 el contenido del registro f. Si d es 0, Descripción: Se trata de un salto contenido de f. Si d es 0, el el resultado se almacena en W, si incondicional. La parte baja de k resultado se almacena en W, si d d es 1 se almacena en f. Si la se carga en PCL, y la alta en es 1 se almacena en f. resta es 0 salta la siguiente PCLATCH. Ocupa 2 ciclos de instrucción, en cuyo caso costaría reloj. Ejemplo: INCF CONT,1 2 ciclos. Ejemplo: ORIGEN GOTO DESTINO Ejemplo: INCFSC REG,0 Antes: CONT = 0xFF, Z = 0 GOTO NO_ES_0 Antes: PC = ORIGEN Después: CONT = 0x00, Z = 1 SI_ES_0 Instrucción Después: PC = DESTINO NO_ES_0 Salta instrucción anterior Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 25. Microcontroladores PIC Apoyo Técnico 2009 RLF Rota f a la izquierda RRF Rota f a la derecha SLEEP Modo bajo consumo Sintaxis: RLF f,d Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Sintaxis: RRF f,d Sintaxis: SLEEP Operación: Rotación a la Operandos: Ninguno Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 izquierda Operación: 0x00 ⇒ WDT, Operación: Rotación a la derecha Flags afectados: C Flags afectados: C 1 ⇒ / TO 0 ⇒ WDT Código OP: 00 1101 dfff ffff Código OP: 00 1100 dfff ffff Preescaler, 0 ⇒ / PD Descripción: El contenido de f se Descripción: El contenido de f se Flags afectados: / PD, / TO rota a la izquierda. El bit de rota a la derecha. El bit de menos Código OP: 00 0000 0110 0011 menos peso de f pasa al carry peso de f pasa al carry (C), y el Descripción: El bit de energía se (C), y el carry se coloca en el de carry se coloca en el de mayor pone a 0, y a 1 el de descanso. El mayor peso. Si d es 0, el peso. Si d es 0, el resultado se WDT y su preescaler se borran. El resultado se almacena en W, si d almacena en W, si d es 1 se micro para el oscilador, yendo al es 1 se almacena en f. almacena en f. modo “durmiente”. Ejemplo: RRF REG,0 Ejemplo: RRF REG,0 Ejemplo: SLEEP Antes: REG = 1110 0110, C = 1 Preescales WDT = 0, Antes: REG = 1110 0110, C = 0 Después: REG = 1110 0110, /TO = 1, /PD = 1 Después: REG = 1110 0110, W = 01110 0011, C = 0 W = 1100 1100, C = 1 SUBLW Resta Literal - W SUBWF Resta f – W SWAPF Intercambio de f Sintaxis: SUBLW k Sintaxis: SUBWF f,d Sintaxis: SWAPF f,d Operandos: 0 ≤ k ≤ 255 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operación: (k) - (W) ⇒ (W) Operación: (f) – (W)⇒ (dest) Operación: (f <3: 0>)⇔ (f <7:4>) Flags afectados: Z, C, DC Flags afectados: C, DC, Z Flags afectados: Ninguno Código OP: 11 110x kkkk kkkk Código OP: 00 0010 dfff ffff Código OP: 00 1110 dfff ffff Descripción: Mediante el método Descripción: Los 4 bits de más Descripción: Mediante el método del complemento a dos el peso y los 4 de menos son del complemento a dos el contenido de W es restado al de f. intercambiados. Si d es 0, el contenido de W es restado al Si d es 0, el resultado se resultado se almacena en W, si d literal. El resultado se almacena almacena en W, si d es 1 se es 1 se almacena en f. en W. almacena en f. Ejemplos: SUBLW 0x02 Ejemplos: SUBWF REG,1 Ejemplo: SWAPF REG,0 Antes: W=1, C=? Después: W=1, Antes: REG=0x03, W=0x02, C=? C=1 Después: REG=0x01,W=0x4F,C=1 Antes: REG = 0xA5 Antes: W=2,C=?. Después: W=0, Antes: REG=0x02, W =0x02,C= ? Después: REG = 0xA5, C=1 Desp: REG=0x00,W=0x02,C= 1 W = 0x5A Antes: W=3,C=?.Después: W=FF, Antes: REG= 0x01,W= 0x02,C= ? C=0 Desp: REG=0xFF,W=0x02, C=0 (El resultado es negativo) (Resultado negativo) RETFIE Retorno de interrup. RETLW Retorno, carga W RETURN Retorno de rutina Sintaxis: RETFIE Sintaxis: RETLW k Sintaxis: RETURN Operandos: Ninguno Operandos: 0 ≤ k ≤ 255 Operandos: Ninguno Operación: 1 ⇒ GIE; TOS⇒PC Operación: (k)⇒ (W); TOS⇒PC Operación: TOS ⇒ PC Flags afectados: Ninguno Flags afectados: Ninguno Flags afectados: Ninguno Código OP: 00 0000 0000 1001 Código OP: 11 01xx kkkk kkkk Código OP: 00 0000 0000 1000 Descripción: El PC se carga con Descripción: El registro W se el contenido de la cima de la pila carga con la constante k. El PC Descripción: El PC se carga con (TOS): dirección de retorno. se carga con el contenido de la el contenido de la cima de la pila Consume 2 ciclos. Las cima de la pila (TOS): dirección (TOS): dirección de retorno. interrupciones vuelven a ser de retorno. Consume 2 ciclos. Consume 2 ciclos. habilitadas. Ejemplo: RETLW 0x37 Ejemplo: RETFIE Ejemplo: RETURN Después: PC= dirección de Después: PC = dirección de Después: PC = dirección de retorno retorno retorno GIE = 1 W = 0x37 Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 26. Microcontroladores PIC Apoyo Técnico 2009 XORLW W OR literal XORWF W AND F Sintaxis: XORLW k Sintaxis: XORWF f,d Operandos: 0 ≤ k ≤ 255 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operación: (W) XOR (k)⇒ (W) Operación: (W) XOR (f) ⇒ (dest) Flags afectados: Z Flags afectados: Z Código OP: 11 1010 kkkk kkkk Código OP: 00 0110 dfff ffff Descripción: Se realiza la Descripción: Realiza la operación lógica XOR entre el operación lógica XOR entre los contenido del registro W y k, registros W y f. Si d es 0, el guardando el resultado en W. resultado se almacena en W, si d es 1 se almacena en f. Ejemplo: XORLW 0xAF Ejemplo: XORWF REG,0 Antes: W = 0xB5 Antes: W = 0xB5, REG = 0xAF Después: W = 0x1A Después: W = 0xB5, REG = 0x1A 12. Programación de los Microcontroladores PIC 12.1 Conceptos Básicos: • Lenguaje de Maquina: El único lenguaje que entienden los microcontroladores, formado por ceros y unos del sistema binario. • Lenguaje ensamblador: Expresa las instrucciones de una forma más natural al hombre a la vez que muy cercana al Microcontrolador, ya que cada una de sus instrucciones se corresponde con otra en código máquina. • Nemónicos: grupos de caracteres alfanuméricos que simbolizan las órdenes o tareas a realizar con los que trabaja el lenguaje ensamblador • Programa ensamblador: es una aplicación Software que se encarga de la traducción de los nemónicos a código máquina entendible por el microcontrolador. • Código fuente: es el programa escrito en lenguaje ensamblador al que se le asigna una extensión (*.asm). • Código máquina, fichero proporcionado por el programa ensamblador al que se le asigna una extensión (*.hex.) 12.2 Introducción a la programación Un diagrama de flujo de datos es una descripción gráfica de un procedimiento para la resolución de un problema. Son frecuentemente usados para describir algoritmos y programas de computador. Los diagramas de flujo de datos están conformados por figuras conectadas con flechas. Para ejecutar un proceso descrito por un diagrama de flujo de datos se comienza por el INICIO y se siguen las flechas de figura a figura, ejecutándose las acciones indicadas por cada figura; el tipo de figura indica el tipo de paso que representa. Los diagramas de flujo son frecuentemente usados debido a que pueden suprimir detalles innecesarios y tener un significado preciso, si son usados correctamente. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 27. Microcontroladores PIC Apoyo Técnico 2009 Para el lenguaje ensamblador utilizamos el software de MPLAB, esté es un software gratuito que se encuentra disponible en la página de microchip. Para pasar el programa del PC al microcontrolador cada grabador tiene su software específico, y es posible encontrar múltiples circuitos y programas en Internet. Microchip vende sus propios equipos, así como micros programados de fábrica. 12.3 El código fuente Está compuesto por una sucesión de líneas de programa. Cada línea de programa puede estar compuesta de hasta cuatro campos o Columnas separadas por uno o más espacios o tabulaciones entre sí. Campo de etiquetas: Expresiones alfanuméricas escogidas por el Usuario para identificar una determinada instrucción del programa. Todas las etiquetas tienen asignado el valor de la posición de memoria En la que se encuentra la instrucción a la que acompañan. Campo del código de operación: Corresponde al nemónico. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 28. Microcontroladores PIC Apoyo Técnico 2009 Campo de operandos y datos: Contiene los operandos que precisa el Nemónico utilizado. Según la instrucción, puede haber dos, uno o ningún Operando. Campo de comentarios: Dentro de una línea, todo lo que se encuentre a continuación de un punto y coma (;) será ignorado y considerado como Comentario. Directivas • Controlan el proceso de ensamblado del programa, pero no son parte del Mismo (también se conocen como pseudo instrucciones). END Es la única directiva obligatoria. Indica al ensamblador dónde debe Detener el proceso. Debe colocarse en la última línea del programa. <Etiqueta> EQU <expresión> El valor <expresión> es asignado a <etiqueta>. Estas directivas se Suelen colocar al principio del programa y habitualmente se usan Para definir constantes y direcciones de memoria. [<Etiqueta>] ORG <expresión> Las instrucciones del código fuente que siguen a esta directiva se Ensamblan a partir de la posición indicada por <expresión>. LIST P=16F877 Indica el tipo de microcontrolador utilizado. INCLUDE <p16F877.inc> o INCLUDE “p16F877.inc” Incluye en el programa un fichero donde se definen las etiquetas con las que se nombra a los diferentes registros y sus bits. Este fichero se encuentra en el directorio principal del programa ensamblador. Puede usarse esta directiva para incluir cualquier Otro fichero. 13. MPLAB El MPLAB es un entorno de desarrollo integrado que permite escribir y codificar los microcontroladores PIC de Microchip para ejecutarlos. Por medio de este software podremos programar microcontroladores en lenguaje C y/o ensamblador. En este manual nos centraremos en la programación en ASM, pero también explicaremos el lenguaje C, con un diferente compilador. 13.1 Instalar MPLAB MPLAB es un software gratuito, se puede descargar directamente desde la página en Internet de Microchip. Trabajaremos con la versión 8.30 de MPLAB, pero usted puede instalar la versión de MPLAB que tenga en el momento, ya que los cambios físicamente no son muy notables entre versiones. También con este programa podemos además de ensamblar el código, simularlo. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 29. Microcontroladores PIC Apoyo Técnico 2009 13.2 Conociendo el entorno del MPLAB 13.3 Creando un nuevo proyecto en MPLAB 1- En la barra de herramientas hay un icono que nos permitirá crear el nuevo proyecto. El New Project . 2- Al dar click sobre esté, nos aparece un cuadro al que debemos introducir el nombre del proyecto y la ubicación donde quedara guardado. 3- Luego de aceptar nos abre el proyecto que recién hemos creado, en donde Debemos seleccionar el icono New File , en donde haremos nuestro programa. 4- Ahora seleccionaremos el modelo del PIC que vamos a utilizar. En la barra de control hay una opción llamada Configure, al dar click sobre ella buscaremos en la lista otro enlace llamado Select device…, al seleccionarlo nos abrirá una ventana en donde aparecen en una lista todos los PIC que permite programar el MPLAB. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 30. Microcontroladores PIC Apoyo Técnico 2009 5- Antes de comenzar a programar debemos hacer algunas configuraciones al microcontrolador. Entrando nuevamente por Configure – Configuración Bits, haremos las configuraciones que el micro requiera, por ejemplo el tipo de cristal oscilador que usará. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 31. Microcontroladores PIC Apoyo Técnico 2009 13.4 Primer programa en MPLAB El siguiente ejemplo será nuestro primer programa en ASM hecho en MPLAB. Cada pulsador manejara un LED, cuando se accione un pulsador, un LED indicara cual fue pulsado, ya que los diodos son de colores, por lo tanto si se pulsa el botón conectado en el BIT 0 del puerto B encenderá el LED AZUL. En este ejemplo aprenderemos a usar los puertos de entrada y salida. Programa en ASM: Abrimos nuevo proyecto en MPLAB, definimos nombre y la ubicación en la cual será guardado, abrimos un nuevo documento y seleccionas el PIC 16F877, como dispositivo a usar, y la configuración de los BITS. En la hoja del documento nuevo empezamos a crear nuestro programa. Cuando tenemos el programa listo, debemos guardar este fichero y para esto, seleccionamos en la barra de herramientas: “File – Save As” luego examinamos la ubicación donde vamos a guardar y por ultimo le asignamos un nombre y como extensión le ponemos ASM; por ejemplo si el nombre del archivo es display, lo guardaremos como display.asm, si no le ponemos la extensión, el programa nos generara error al compilar. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 32. Microcontroladores PIC Apoyo Técnico 2009 Al compilar el programa sin error, nos generara un archivo .hex, este fichero es el que cargamos al microcontrolador a programar o simular. 13.5 Programación de un semáforo El siguiente programa tendrá como objetivo controlar un semáforo y crear rutinas de temporización en ASM. Como ejercicio propuesto para avanzar con la programación de micros se puede realizar el programa para controlar dos semáforos en un cruce vial. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 33. Microcontroladores PIC Apoyo Técnico 2009 En la programación se usan instrucciones que no se han usado, como DECFSZ, que indica decremente el archivo hasta que la bandera Z se ponga en 1. CLRF, indica borrar el archivo, clear file, ejemplo: CLRF PORTB, es igual que si ponemos MOVLW 0, MOVWF PORTB. El puerto igual queda con 0 en sus bits. CALL, es la instrucción de llamado, se utiliza al querer llamar una función o subrutina. EQU, igual, se utiliza para renombrar los registros, por ejemplo: EJEMPLO EQU 20h en el programa va a ser lo mismo mandar un dato a 20h que a EJEMPLO. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 34. Microcontroladores PIC Apoyo Técnico 2009 Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 35. Microcontroladores PIC Apoyo Técnico 2009 14. Funcionamiento de una Matriz de Led’s Comenzamos con la segunda parte del manual: ¿Cómo funciona una matriz de Led?; en este apartado explicaremos el funcionamiento, ¿Cómo multiplexarla? Y su programación. Una matriz de Led’s, pantalla de Led’s, visualizador electrónico o publik, se utiliza para pasar mensajes publicitarios, demarcar zonas, mostrar la hora y la fecha, en general para pasar un mensaje informativo. Para la construcción de un publik, se debe tener conocimientos de electrónica y de programación de microcontroladores, en esta guia se aprenderá el funcionamiento de una matriz de led’s, para que con este conocimiento se puedan construir una pantalla con muchas de estas matrices. Una matriz de led’s consiste básicamente en una matriz de pixeles similar a los de una pantalla de televisor o de un computador, por lo general es de un solo color (La mayoria de veces rojo), pero también hay bicolor o multicolores, estos ultimos utilizan diodos RGB, que puede mostrar cualquier color. Nuestra matriz será de 7 x 5, 5 columnas por 7 filas. 30 Led’s conectados internamente. En este caso podemos conectar los 13 pines al microcontrolador PIC16F877, pero si trabajamos con 3 o más matrices de estas, no podríamos conectar todos los pines de las matrices al microcontrolador, ya que 3 matrices serian 39 pines, y este micro no podría manejar esta cantidad de pines; Para este caso se multiplexan las matrices. Como dijimos antes, la pantalla está formada por una serie de filas y columnas. La intersección entre ambas contiene un LED. Para que este encienda, tiene que recibir simultáneamente un “0” en la fila, y un “1” en la columna. Cuando se dan estas condiciones, la electrónica de la placa se encarga del encendido del LED en cuestión. Solo mostraremos los números del 0 al 9 en esta matriz. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 36. Microcontroladores PIC Apoyo Técnico 2009 Tenemos conectado en el puerto B las filas y en el puerto C las columnas, entonces para programarla utilizamos el siguiente algoritmo: 1- Limpiamos puertos 2- Mandamos el dato a el puerto B 3- Activamos la columna en la que se va a mostrar el valor 4- Temporizamos 5- Limpiamos el puerto B 6- Activamos la columna siguiente 7- Mandamos dato a mostrar. 8- Temporizamos Para mostrar el “0”: El valor de la primera columna, de izquierda a derecha, seria en decimal 65 en el puerto B. El valor de la segunda columna: 62 El tiempo debe ser menor de 20 ms. para que se no se note el parpadeo entre columnas. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 37. Microcontroladores PIC Apoyo Técnico 2009 1 columna: 111 2 columna: 95 3 columna: 0 4 columna: 255 5 columna: 255 Números del 0 al 9 en una matriz 7x5 La programación para el número 1 seria esta: Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 38. Microcontroladores PIC Apoyo Técnico 2009 Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 39. Microcontroladores PIC Apoyo Técnico 2009 Hay que tener en cuenta que esta programación se puede simplificar, por ejemplo podemos usar una tabla, en donde se van a guardar los valores de las letras. Si vamos a utilizar más de dos matrices entonces debemos multiplexar. El multiplexado consiste en utilizar unos pocos pines del microcontrolador para manejar una serie de circuitos integrados que son los que se encargan de encender los led´s. Hay muchas maneras y circuitos integrados para hacer esto. Este circuito es un ejemplo de cómo se conectarían 4 matrices con un 74LS164 y un PIC16F628. En la programación pones los datos para que el reloj del 74LS164 comience a encender de derecha a izquierda todas las columnas de los LED. Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas
  • 40. Microcontroladores PIC Apoyo Técnico 2009 En la versión 2 de este manual: 1) Se explicará el hardware y se mostrará la programación en ASM para un letrero con matrices de LED. 2) Comunicación I2C entre un PIC 16f877 y una memoria EEPROM externa 24C128. 3) Construcción de un visualizador de LED fijos. Bibliografía: www.wikipedia.org www.ucontrol.com.ar/ www.unicrom.com/ www.neoteo.com/ Curso Avanzado de Microcontroladores PIC (Cekit) Centro de Diseño e Innovación Tecnológica Industrial SENA Dosquebradas