Introduccion a los microcontroladores pic y programacion de una matriz de led's
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

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

  • 15,292 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
15,292
On Slideshare
15,292
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
567
Comments
2
Likes
5

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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 2009Centro 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 FLASHCentro 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 gestionanCentro 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 SPIC12C508 512x12 25x8 4 MHz 6 TMR0 + WDT 8PIC12C509 1024x12 41x8 4 MHz 6 TMR0 + WDT 8PIC12C670 512x14 80x8 4 MHz 6 TMR0 + WDT 8PIC12C671 1024x14 128x8 4 MHz 6 2 TMR0 + WDT 8PIC12C672 2048x14 128x8 4 MHz 6 4 TMR0 + WDT 8PIC12C680 512X12 FLASH 80x8 16x8 EEPROM 4 MHz 6 4 TMR0 + WDT 8PIC12C681 1024x14 FLASH 80x8 16x8 EEPROM 4 MHz 6 TMR0 + WDT 8Centro 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 pinesCentro 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 FFCentro 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 = 0x02Centro 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 anteriorCentro 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 anteriorCentro 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 = 0x37Centro 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 2009Centro 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 2009Centro 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