71
Tecnológico de Tlalnepantla Subdirección Académica Microcontroladores Fecha: 25-07-2012. Prácticas de laboratorio de microcontroladores Materia: Microcontroladores. Profesor: Ing. Cabrera Hernández Luis. Ing. Cabrera Hernández Luis

Practicas de Microcontroladores

Embed Size (px)

Citation preview

Page 1: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

Fecha: 25-07-2012.

Prácticas de laboratorio de microcontroladores

Materia: Microcontroladores.

Profesor: Ing. Cabrera Hernández Luis.

Alumno: Diego Alberto García Eligio.

No. de Control: 09250138.

Carrera: Ingeniería Mecatrónica.

Ing. Cabrera Hernández Luis

Page 2: Practicas de Microcontroladores

Nombre:García Eligio Diego Alberto No. 09250138

Tecnológico de Tlalnepantla

Microcontroladores

Carrera Plan de Estudios

Nombre de la Asignatura Clave de la Asignatura

Ing. Mecatrónica Siglo XXI Microcontroladores MTF0582Trabajo Laboratorio de Nombre del Trabajo02 Electrónica Practicas de Microcontroladores

I. Marco teórico.¿Qué es un microcontrolador?

Un microcontrolador es un dispositivo electrónico capaz de llevar a cabo procesos lógicos. Estos procesos o acciones son programados en lenguaje ensamblador por el usuario, y son introducidos en este a través de un programador. Esto suena un poco complicado, pero sólo es un resumen de 3 líneas.

Inicialmente cuando no existían los microprocesadores las personas se ingeniaban en diseñar sus circuitos electrónicos y los resultados estaban expresados en diseños que implicaban muchos componentes electrónicos y cálculos matemáticos. Un circuito lógico básico requería de muchos elementos electrónicos basados en transistores, resistencias, etc, lo cual desembocaba en circuitos con muchos ajustes y fallos; pero en el año 1971 apareció el primer microprocesador el cual originó un cambio decisivo en las técnicas de diseño de la mayoría de los equipos. Al principio se creía que el manejo de un microprocesador era para aquellas personas con un coeficiente intelectual muy alto; por lo contrario con la aparición de este circuito integrado todo sería mucho más fácil de entender y los diseños electrónicos serian mucho más pequeños y simplificados. Los diseñadores de equipos electrónicos ahora tenían equipos que podían realizar mayor cantidad de tareas en menos tiempo y su tamaño se redujo considerablemente; sin embargo, después de cierto tiempo aparece una nueva tecnología llamada microcontrolador que simplifica aun más el diseño electrónico.

Diferencias entre microprocesador y microcontrolador

Si has tenido la oportunidad de realizar un diseño con un microprocesador pudiste observar que dependiendo del circuito se requerían algunos circuitos integrados adicionales además del microprocesador como por ejemplo: memorias RAM para almacenar los datos temporalmente y memorias ROM para almacenar el programa que se encargaría del proceso del equipo, un circuito integrado para los puertos de entrada y salida y finalmente un decodificador de direcciones.

Un microcontrolador es un solo circuito integrado que contiene todos los elementos electrónicos que se utilizaban para hacer funcionar un sistema basado con un microprocesador; es decir contiene en un solo integrado la Unidad de Proceso, la memoria RAM, memoria ROM , puertos de entrada, salidas y otros periféricos, con la consiguiente reducción de espacio.

El microcontrolador es en definitiva un circuito integrado que incluye todos los

Ing. Cabrera Hernández Luis

Page 3: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

componentes de un computador. Debido a su reducido tamaño es posible montar el controlador en el propio dispositivo al que gobierna. En este caso el controlador recibe el nombre de controlador empotrado o embebido (embedded controller).

Ventajas de un microcontrolador frente a un microprocesador

Estas ventajas son reconocidas inmediatamente para aquellas personas que han trabajado con los microprocesadores y después pasaron a trabajar con los microcontroladores. Estas son las diferencias más importantes: Por ejemplo la configuración mínima básica de un microprocesador estaba constituida por un Micro de 40 Pines, Una memoria RAM de 28 Pines, una memoria ROM de 28 Pines y un decodificador de direcciones de 18 pines; pero un microcontrolador incluye todo estos elementos en un solo Circuito Integrado por lo que implica una gran ventaja en varios factores: En el circuito impreso por su amplia simplificación de circuitería, el costo para un sistema basado

Estructura de un sistema abierto basado en un microprocesador. La disponibilidad de los buses en el exterior permite que se configure a la medida de la aplicación

Ing. Cabrera Hernández Luis

Page 4: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

El microcontrolador es un sistema cerrado. Todas las partes del procesador están contenidas en su interior y sólo salen al exterior las líneas que gobiernan los periféricos.

En microcontrolador es mucho menor y, lo mejor de todo, el tiempo de desarrollo de su proyecto electrónico se disminuye considerablemente.

Los microcontroladores hoy día

Los microcontroladores están conquistando el mundo. Están presentes en nuestro trabajo, en nuestra casa y en nuestra vida, en general. Se pueden encontrar controlando el funcionamiento de los ratones y teclados de los computadores, en los teléfonos, en los hornos microondas y los televisores de nuestro hogar. Pero la invasión acaba de comenzar y el nacimiento del siglo XXI será testigo de la conquista masiva de estos diminutos computadores, que gobernarán la mayor parte de los aparatos que fabricaremos y usamos los humanos. Cada vez existen más productos que incorporan un microcontrolador con el fin de aumentar sustancialmente sus prestaciones, reducir su tamaño y coste, mejorar su fiabilidad y disminuir el consumo. Algunos fabricantes de microcontroladores superan el millón de unidades de un modelo determinado producidas en una semana. Este dato puede dar una idea de la masiva utilización de estos componentes. Los microcontroladores están siendo empleados en multitud de sistemas presentes en nuestra vida diaria, como pueden ser juguetes, horno microondas, frigoríficos, televisores, computadoras, impresoras, módems, el sistema de arranque de nuestro coche, etc. Y otras aplicaciones con las que seguramente no estaremos tan familiarizados como instrumentación electrónica, control de sistemas en una nave espacial, etc. Una aplicación típica podría emplear varios microcontroladores para controlar pequeñas partes del sistema. Estos pequeños controladores podrían comunicarse entre ellos y con un procesador central, probablemente más potente, para compartir la información y coordinar sus acciones, como, de hecho, ocurre ya habitualmente en cualquier PC.

Tipos de arquitecturas de microcontroladores

Arquitectura Von Neumann

Ing. Cabrera Hernández Luis

Page 5: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

La arquitectura tradicional de computadoras y microprocesadores está basada en la arquitectura Von Neumann, en la cual la unidad central de proceso (CPU), está conectada a una memoria única donde se guardan las instrucciones del programa y los datos. El tamaño de la unidad de datos o instrucciones está fijado por el ancho del bus que comunica la memoria con la CPU. Así un microprocesador de 8 bits con un bus de 8 bits, tendrá que manejar datos e instrucciones de una o más unidades de 8 bits (bytes) de longitud. Si tiene que acceder a una instrucción o dato de más de un byte de longitud, tendrá que realizar más de un acceso a la memoria. Y el tener un único bus hace que el microprocesador sea más lento en su respuesta, ya que no puede buscar en memoria una nueva instrucción mientras no finalicen las transferencias de datos de la instrucción anterior. Resumiendo todo lo anterior, las principales limitaciones que nos encontramos con la arquitectura Von Neumann son:

1. La limitación de la longitud de las instrucciones por el bus de datos, que hace que el microprocesador tenga que realizar varios accesos a memoria para buscar instrucciones complejas.

2. La limitación de la velocidad de operación a causa del bus único para datos e instrucciones que no deja acceder simultáneamente a unos y otras, lo cual impide superponer ambos tiempos de acceso.

Arquitectura Harvard

La arquitectura Harvard tiene la unidad central de proceso (CPU) conectada a dos memorias (una con las instrucciones y otra con los datos) por medio de dos buses diferentes. Una de las memorias contiene solamente las instrucciones del programa (Memoria de Programa), y los otros sólo almacenos datos (Memoria de Datos). Ambos buses son totalmente independientes y pueden ser de distintos anchos. Para un procesador de Set de Instrucciones Reducido, o RISC (Reduced Instrucción Set Computer), el set de instrucciones y el bus de memoria de programa pueden diseñarse de tal manera que todas las instrucciones tengan una sola posición de memoria de programa de longitud. Además, al ser los buses independientes, la CPU puede acceder a los datos para completar la ejecución de una instrucción, y al mismo tiempo leer la siguiente instrucción a ejecutar. Ventajas de esta arquitectura:

1. El tamaño de las instrucciones no está relacionado con el de los datos, y por lo tanto puede ser optimizado para que cualquier instrucción ocupe una sola posición de memoria de programa, logrando así mayor velocidad y menor longitud de programa.

Ing. Cabrera Hernández Luis

Page 6: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

2. El tiempo de acceso a las instrucciones puede superponerse con el de los datos, logrando una mayor velocidad en cada operación. Una pequeña desventaja de los procesadores con arquitectura Harvard, es que deben poseer instrucciones especiales para acceder a tablas de valores constantes que pueda ser necesario incluir en los programas, ya que estas tablas se encontraran físicamente en la memoria de programa (por ejemplo en la EPROM de un microprocesador).

El microcontrolador PIC 16F84 posee arquitectura Harvard, con una memoria de datos de 8 bits, y una memoria de programa de 14 bits.

En la Figura vemos la arquitectura interna organizada en bloques interconectados, en donde se incluye la memoria RAM, la memoria EEPROM, los puertos de entrada y salida (I/O), etc.

ESTRUCTURA Y ELEMENTOS DE LOS MICROCONTROLADORES

A continuación pasamos a describir los elementos más comunes en todo tipo de microcontroladores y sistemas.

El procesador

Es el elemento más importante del microcontrolador y determina sus principales características, tanto a nivel hardware como software. Se encarga de direccionar la memoria de instrucciones, recibir el código OP de la instrucción en curso, su decodificación y la ejecución de la operación que implica la instrucción, así como la búsqueda de los operandos y el almacenamiento del resultado. Existen tres orientaciones en cuanto a la arquitectura y funcionalidad de los procesadores actuales.

CISC

Un gran número de procesadores usados en los microcontroladores están basados en la filosofía CISC (Computadores de Juego de Instrucciones Complejo). Disponen de más de 80 instrucciones máquina en su repertorio,

Ing. Cabrera Hernández Luis

Page 7: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

Diagrama de bloques del microcontrolador PIC16F84

Algunas de las cuales son muy sofisticadas y potentes, requiriendo muchos ciclos para su ejecución. Una ventaja de los procesadores CISC es que ofrecen al programador instrucciones complejas que actúan como macros, es decir, que si las tuviésemos que implementar con instrucciones básicas, acabaríamos con dolor de cabeza.

RISC

Tanto la industria de los computadores comerciales como la de los microcontroladores están decantándose hacia la filosofía RISC (Computadores de Juego de Instrucciones Reducido). En estos procesadores el repertorio de instrucciones máquina es muy reducido y las instrucciones son simples y, generalmente, se ejecutan en un ciclo.

La sencillez y rapidez de las instrucciones permiten optimizar el hardware y el software del procesador.

SISC

En los microcontroladores destinados a aplicaciones muy concretas, el juego de instrucciones, además de ser reducido, es específico, o sea, las instrucciones se adaptan a las necesidades de la aplicación prevista. Esta filosofía se ha bautizado con el

Ing. Cabrera Hernández Luis

Page 8: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

nombre de SISC (Computadores de Juego de Instrucciones Específico).

Memoria

En los microcontroladores la memoria de instrucciones y datos está integrada en el propio chip. Una parte debe ser no volátil, tipo ROM, y se destina a contener el programa de instrucciones que gobierna la aplicación. Otra parte de memoria será tipo RAM, volátil, y se destina a guardar las variables y los datos.

Hay dos peculiaridades que diferencian a los microcontroladores de los computadores personales:

No existen sistemas de almacenamiento masivo como disco duro o disquetes. Como el microcontrolador sólo se destina a una tarea en la memoria ROM, sólo hay que almacenar un único programa de trabajo.

La RAM en estos dispositivos es de poca capacidad pues sólo debe contener las variables y los cambios de información que se produzcan en el transcurso del programa. Por otra parte, como sólo existe un programa activo, no se requiere guarda r una copia del mismo en la RAM pues se ejecuta directamente desde la ROM.

Los usuarios de computadores personales están habituados a manejar Megabytes de memoria, pero, los diseñadores con microcontroladores trabajan con capacidades de ROM comprendidas entre 512 bytes y 8 k bytes y de RAM comprendidas entre 20 y 512 bytes.

Según el tipo de memoria ROM que dispongan los microcontroladores, la aplicación y utilización de los mismos es diferente. Se describen las cinco versiones de memoria no volátil que se pueden encontrar en los microcontroladores del mercado.

ROM con máscara

Es una memoria no volátil de sólo lectura cuyo contenido se graba durante la fabricación del chip. Si tenemos idea de cómo se fabrican los circuitos integrados, sabremos de donde viene el nombre. Estos se fabrican en obleas que contienen varias decenas de chips. Estas obleas se fabrican a partir de procesos fotoquímicos, donde se impregnan capas de silicio y oxido de silicio, y según convenga, se erosionan al exponerlos a la luz. Como no todos los puntos han de ser erosionados, se sitúa entre la luz y la oblea una máscara con agujeros, de manera que donde deba incidir la luz, esta pasará. Con varios procesos similares pero más complicados se consigue fabricar los transistores y diodos micrométricos que componen un chip. Ahora ya sabes de donde viene la máscara y no te acostarás sin saber una cosa más. El elevado coste del diseño de la máscara sólo hace aconsejable el empleo de los microcontroladores con este tipo de memoria cuando se precisan cantidades superiores a varios miles de unidades.

OTP

El microcontrolador contiene una memoria no volátil de sólo lectura programable una sola vez por el usuario. OTP (One Time Programmable). Es el usuario quien puede

Ing. Cabrera Hernández Luis

Page 9: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

escribir el programa en el chip mediante un sencillo grabador controlado por un programa desde un PC. La versión OTP es recomendable cuando es muy corto el ciclo de diseño del producto, o bien, en la construcción de prototipos y series muy pequeñas. Tanto en este tipo de memoria como en la EPROM, se suele usar la encriptación mediante fusibles para proteger el código contenido.

EPROM

Los microcontroladores que disponen de memoria EPROM (Erasable Programmable Read OnIy Memory) pueden borrarse y grabarse muchas veces. La grabación se realiza, como en el caso de los OTP, con un grabador gobernado desde un PC. Si, posteriormente, se desea borrar el contenido, disponen de una ventana de cristal en su superficie por la que se somete a la EPROM a rayos ultravioleta durante varios minutos.

Las cápsulas son de material cerámico y son más caros que los microcontroladores con memoria OTP que están hechos con material plástico.

EEPROM, E2PROM o E2PROM

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. El número de veces que puede grabarse y borrarse una memoria EEPROM es _nito, por lo que no es recomendable una reprogramación continúa. Son muy idóneos para la enseñanza y la Ingeniería de diseño. Se va extendiendo en los fabricantes la tendencia de incluir una pequeña zona de memoria EEPROM en los circuitos programables para guardar y modificar cómodamente una serie de parámetros que adecuan el dispositivo a las condiciones del entorno. Este tipo de memoria es relativamente lenta, como ya veremos más adelante.

FLASH

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 y de mayor densidad 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 motor de un automóvil permite que pueda modificarse el programa durante la rutina de mantenimiento periódico, compensando los desgastes y otros factores tales como la compresión, la instalación de nuevas piezas, etc. La reprogramación del microcontrolador puede

Ing. Cabrera Hernández Luis

Page 10: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

convertirse en una labor rutinaria dentro de la puesta a punto.

Puertas de Entrada y Salida

Las puertas de Entrada y Salida (E/S) permiten comunicar al procesador con el mundo exterior, a través de interfaces, o con otros dispositivos. Estas puertas, también llamadas puertos, son la principal utilidad de las patas o pines de un microprocesador. Según los controladores de periféricos que posea cada modelo de microcontrolador, las líneas de E/S se destinan a proporcionar el soporte a las señales de entrada, salida y control.

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. Esta señal del reloj es el motor del sistema y la que hace que el programa y los contadores avancen.

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 y de calor generado.

RECURSOS ESPECIALES

Cada fabricante oferta numerosas versiones de una arquitectura básica de microcontrolador. En algunas amplía las capacidades de las memorias, en otras incorpora nuevos recursos, en otras reduce las prestaciones al mínimo para aplicaciones muy simples, etc. La labor del diseñador es encontrar el modelo mínimo que satisfaga todos los requerimientos de su aplicación. De esta forma, minimizará el coste, el hardware y el software. Los principales recursos específicos que incorporan los microcontroladores son:

Temporizadores o Timers.Perro guardián oWatchdog.Protección ante fallo de alimentación o Brownout.Estado de reposo o de bajo consumo (Sleep mode).Conversor A/D (Analógico ->Digital).Conversor D/A (Digital ->Analógico).Comparador analógico.Modulador de anchura de impulsos o PWM (PulseWide Modulation).Puertas de E/S digitales.Puertas de comunicación.A continuación pasamos a ver con un poco más de detalle cada uno de ellos

Temporizadores o Timers

Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la cuenta

Ing. Cabrera Hernández Luis

Page 11: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

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. Cuando se desean contar acontecimientos que se materializan por cambios de nivel o bancos en alguna de las patitas del microcontrolador, el mencionado registro se va incrementando o decrementando al ritmo de dichos impulsos. Vaya, nos hemos metido en términos de microcontroladores demasiado pronto. Bueno, con el fin de aclarar que es un registro, anticipamos que es un valor numérico en una posición la de memoria. Un ejemplo: esto es igual que el segundero de nuestro reloj digital, este va aumentando hasta que llega a 60 segundos, pero en la pantalla pone 00, esto quiere decir que se desborda. Pero cuando cambia da un aviso y se incrementan los minutos. En este ejemplo, el registro es el segundero; estos son fijos ya que sabemos que son los de la derecha del todo y no se van a cambiar.

Perro guardián Watchdog

Cuando el computador personal se bloquea por un fallo del software u otra causa, se pulsa el botón del reset y se reinicia 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 contador que, cuando llega al máximo, provoca un reset automáticamente en el sistema.

Se debe diseñar el programa de trabajo que controla la tarea de forma que resetee al Perro Guardián de vez en cuando antes de que provoque el reset. Si falla el programa o se bloquea (si cae en bucle infinito), no se refrescará al Perro guardián y, al completar su temporización, provocará el reset del sistema.

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. Esto es muy útil para evitar datos erróneos por transiciones y ruidos en la línea de alimentación

Estado de reposo ó de bajo consumo

Son abundantes las situaciones reales de trabajo en que el microcontrolador debe esperar, sin hacer nada, a que se produzca algún acontecimiento externo que le ponga de nuevo en funcionamiento. Para ahorrar energía, (factor clave en los aparatos portátiles), los microcontroladores disponen de una instrucción especial (SLEEP en los PIC), que les pasa al estado de reposo o de bajo consumo, en el cual los requerimientos de potencia son mínimos. En dicho estado se detiene el reloj principal y se congelan sus circuitos asociados, quedando sumido en un profundo sueño. Al activarse una interrupción ocasionada por el acontecimiento esperado, el microcontrolador se despierta y reanuda su trabajo. Para hacernos una idea, esta función es parecida a la opción de Suspender en el menú para apagar el equipo (en aquellos PCs con administración

Ing. Cabrera Hernández Luis

Page 12: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

avanzada de energía)

Conversor A/D (CAD)

Los microcontroladores que incorporan un Conversor A/D (Analógico/Digital) pueden procesar señales analógicas, tan abundantes en las aplicaciones. Suelen disponer de un multiplexor que permite aplicar a la entrada del CAD diversas señales analógicas desde las patillas del circuito integrado.

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 patillas del chip. Existen muchos circuitos que trabajan con señales analógicas.

Comparador analógico

Algunos modelos de microcontroladores disponen internamente de un Amplificador Operacional que actúa como comparador entre una señal 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. También hay modelos de microcontroladores con un módulo de tensión de referencia que proporciona diversas tensiones de referencia que se pueden aplicar en los comparadores.

Modulador de anchura de impulsos o PWM

Son circuitos que proporcionan en su salida impulsos de anchura variable, que se ofrecen al exterior a través de las patitas del encapsulado.

Puertos digitales de E/S

Todos los microcontroladores destinan parte de su patillaje a soportar líneas de E/S digitales. Por lo general, estas líneas se agrupan de ocho en ocho formando Puertos.Las líneas digitales de las 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. Otra vez más nos volvemos a meter con unos ceros y registros paciencia que pronto llega lo mejor.

Puertas 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 quedestacan:

UART, adaptador de comunicación serie asíncrona.(Ej: Puerto Serie)USART, adaptador de comunicación serie síncrona y asíncronaPuerta paralela esclava para poder conectarse con los buses de otros

Ing. Cabrera Hernández Luis

Page 13: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

microprocesadores.USB (Universal Serial Bus), que es un moderno bus serie para los PC.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 elJ185O.

Tanto el I2C en televisores, como el Bus CAN en automóviles, fueron diseñados para simplificar la circuitería que supone un bus paralelo de 8 líneas dentro de un televisor, así como para librar de la carga que supone una cantidad ingente de cables en un vehículo.

MPLAB

Bienvenido a esta sección,

"El Entorno Integrado de Desarrollo"

MPLAB, la mejor herramienta para desarrollar proyectos con PIC's, según yo.

Instalación y Configuración

Algunas de las cosas más importantes serían:

- Archivos MPLAB IDE- Archivos MPASM/MPLINK/MPLIB- Archivos de Protección del Simulador- MPLAB-SIM

y por supuesto, los Archivos de Ayuda. Luego seleccionas los componentes de lenguaje Microchip que debes instalar (Todos por defecto), bien termines la instalación, lo ejecutas y veras el IDE de MPLAB.

Ahora lo vamos a preparar para nuestra ardua tarea de programar y simular nuestros proyectos según el Micro del que disponemos.

Te diriges al menú Options --> Development Mode... y verás un cuadro de diálogo algo así

Ing. Cabrera Hernández Luis

Page 14: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

En la pestaña Tools seleccionas el procesador PIC16F84 y del otro lado el modo en que lo vas a utilizar MPLAB-SIM Simulador eso te permitirá programar, depurar, simular, etc., el resto lo dejas como está, finalmente le das a Ok y verás en la barra de estado los cambios que hiciste.

Menú Debug:

De lo más importante, desde aquí haremos las simulaciones de nuestro programa, los tres primeros submenús son los de mayor interés, veamos de qué se trata cada uno de ellos.

RUN: Aquí tenemos varias opciones;

RUN: Como su nombre lo indica, Runnnnnn. inicia la simulación a una velocidad que la verdad, no se distingue nada de lo que ocurre a lo largo del código, verás la parte inferior de la ventana toda pintada de amarillo (señal de que la simulación está en proceso). Útil cuando colocas algunos puntos de ruptura (breakpoints) para detener la ejecución y así no estar esperando que se ejecute todo aquello que sabes que esta correcto.

RESET: Nada, Resetea el micro y te ubica en la primer línea donde comenzará la simulación (en ese caso verás toda la línea pintada de negro y las letras blancas) "listo para comenzar la simulación"

HALT: Detiene la ejecución.

HALT TRACE: Detiene un traceo que se esté haciendo (yo aun no lo utilicé).

ANIMATE: es igual que RUN pero lo hace más lento, para que vayas siguiendo la ejecución, mostrándote línea por línea todo lo que se está ejecutando.

STEP: paso, es decir, un paso por cada vez que lo presionas (en la barra de herramientas verás dos huellas de zapato, pues es eso, paso a paso). Simplemente ejecuta una a una cada línea de código por cada vez que lo

Ing. Cabrera Hernández Luis

Page 15: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

presionas.

STEP OVER: Igual que el anterior pero con un pequeño detalle, cada vez que se encuentre con un call lo ejecuta de modo tan rápido que ni tú te enteras de que ya pasó, es decir, utilízalo si no quieres perder tiempo con el call.

UPDATE ALL REGISTER: Actualiza el valor de todos los registros.

CHANGE PROGRAM COUNTER: Carga el Programa Counter Strike es que cambia el valor del PC y te ubica en la etiqueta del código a la que quieres ir.

EXECUTE: Bueno, tiene dos opciones, veamos.

EXECUTE AN OPCODE: te permite ejecutar un código cualquiera desde cualquier sitio en el que te encuentras, por ejemplo ingresas un goto inicio y hacia allí irá. independiente a la secuencia del programa.

CONDITIONAL BREAK: Para ejecutar un breakpoint en forma condicional, Por ejemplo por que cambió el valor de un registro, o por qué quieres ver que paso hasta ese punto, o bueno, en fin. (por si las moscas, para quien no tenga idea de que es un Breakpoint, es un punto de ruptura en el código del programa, es decir, si se está ejecutando..., cuando se encuentre con el breakpoint se detendrá y allí se quedará hasta que le des la orden de continuar), habré sido claro.

SIMULATOR STIMULUS: Con este nos vamos a lucir, desde aquí podrás simular que le envías señales al micro por uno de sus pines, este submenú tiene 4 opciones.

ASYNCHRONOUS STIMULUS: te abrirá un pequeño diálogo con 12 botones como el que se muestra en la imagen, vendrían a ser como interruptores, nota que al primero le asigné el pin RA0 (pin 17) y entre paréntesis una T (de TOGGLE)

Si presionas con el botón derecho del mouse en uno de esos botones verás las opciones de configuración de estos estímulos, desde donde los puedes configurar, es algo así.

Ing. Cabrera Hernández Luis

Page 16: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

o ASSIGN PIN: muestra los pines del puerto para que selecciones aquel que llevará un estímulo.

o PULSE: un pulso, hasta ahora no hice uso de él...o LOW: Le asigna un nivel bajo permanenteo HIGH: Lo contrario, nivel alto permanenteo TOGGLE: Cada vez que lo pulses cambiará de nivel de alto a bajo o

de bajo a alto.o HELP: tampoco lo utilicé así que no preguntes.

PIN STIMULUS: Es para cuando creas un archivo de texto con extensión .sti, desde aquí lo cargas o lo quitas, se trata de utilizar un archivo que creaste con esta extensión y que contiene los estímulos ya asignados para cada uno de los pines.

CLOCK STIMULUS: Desde aquí puedes enviarle pulsos de reloj a un determinado pin, indicando el tiempo que se mantendrá en nivel alto y el tiempo en nivel bajo, tipo (timer).

Tiene un par de opciones como ser; Guardarlo como un archivo .sti, Abrir alguno si es que ya lo tienes creado, Aplicar los cambios, agregarle más impulsos a otros pines, y el help (por supuesto, la ayuda).

REGISTER STIMULUS: Es exactamente lo mismo que con los pines, solo que lleva la extensión .reg. y sirve para que en una determinada posición del programa se cargue un registro con el valor que tú le quieras dar.

CENTER DEBUG LOCATION: te ubica en la posición en la cual el programa se está ejecutando, por si perdiste la línea de ejecución, se suele utilizar cuando detienes la ejecución, empiezas a husmear por otro lado y luego no sabes donde andabas, pues bueno, ahí te lo acercas.

BREAK SETTINGS, Te muestra un diálogo para que le des nombre a los

Ing. Cabrera Hernández Luis

Page 17: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

breakpoints y luego desde aquí los habilitas, los quitas, los guardas etc

TRIGGER IN/OUT SETTINGS: Son Para los emuladores MPLABICE y PICMASTER.

TRIGGER OUTPUT POINTS: Para PICMASTER.

CLEAR ALL POINT limpia todos los breakpoints y los tracepoints que pusiste a lo largo del programa.

COMPLEX TRIGGER SETTING y ENABLE CODE COVERAGE Para MPLAB-ICE

CLEAR PROGRAM MEMORY: Borra la memoria de programa, yo nunca lo utilicé, pero según leí por ahí... Cuando simulamos un programa, lo que la máquina en realidad hace, es seguir a través de la memoria de programa. Luego desde allí mismo, puedes grabar el PIC, si es que cuentas con el programador PICSTART PLUS, así es que ahí lo dejé.

SYSTEM RESET: Eso mismo, Resetea el sistema.

POWER ON RESET: Para el caso en que se podría producir un reset en el micro, y así saber que ocurre o que es lo que hace el micro si esto llegara a ocurrir.

Menú Options:

DEVELOPMENT MODE: simplemente es donde hacemos las configuraciones del proyecto.

WINDOW SETUP: como estamos en la sección de personalización, puedes personalizar totalmente la forma en que vas a trabajar, tus preferencias, luego Guardarlas (Save Setup), Cargarlas (Load Setup) si es que ya las tienes guardadas, o utilizar una por defecto (Default Configuration).

CURRENT EDITOR MODES: Es para que personalices el modo de edición, por ejemplo las tabulaciones de 8 espacios, que se mantenga la identificación de la línea anterior, que se muestre el número de líneas al margen del código, hacer un backup cada cierto tiempo (por si olvidas que de vez en cuando es bueno

Ing. Cabrera Hernández Luis

Page 18: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

guardar...), etc. aquí tienes una imagen de esas opciones...

RESET EDITOR MODES: Elimina los cambios que hiciste anteriormente

ENVIRONMENT SETUP: cuadro de diálogo para una personalización completa.

PROGRAMMER OPTIONS: Son las opciones para configurar el programador que usarás con MPLAB.

Menú Windows:

El más importante de todos, ya que desde aquí nos veremos cara a cara con cada uno de los bits de los registros del micro, el estado que tienen y como se modifican, claro que lo verás cuando lo ejecutes en modo "step" (paso a paso) o "Animate" (de forma animada).

PROGRAM MEMORY: Verás la memoria de programa, y así sabes cuánto espacio te queda disponible.

STACK: La pila.

FILE REGISTER: Para que veas cómo se modifican los registros mientras el programa se está ejecutando, solo en modo "Step" o "Animate".

Ing. Cabrera Hernández Luis

Page 19: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

SPECIAL FUNCTION REGISTER: Los Registros de funciones especiales, con nombre y todo, trisa/b, porta/b, status, w, creo que lo que más quieres es ver cómo se modifican los bits de entrada y salida de los puertos, pues aquí los tienes, como antes, sólo los verás cuando lo ejecutas en modo "Step" o "Animate".

SHOW SIMBOL LIST: todos los símbolos utilizados y su respectiva ubicación (dirección de registro), aquello que definimos al iniciar nuestro código, como "status equ 0x03". Del otro lado las etiquetas utilizadas a lo largo del programa, en fin...

Ing. Cabrera Hernández Luis

Page 20: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

STOPWATCH: Para que veas el tiempo en milisegundo consumidos por el micro.

PROJECT: Los datos del proyecto que estas realizando

WATCH WINDOW: Para crear tu propia ventana de registros.

MODIFY: Para modificar los valores de algún registro determinado, en caso de que no quieras esperar demasiado por ejemplo cuando haces un retardo.

Preparando el entorno para la simulación.

Aquí comienza la diversión, lo que haremos será preparar todo lo que necesitemos, primero vamos por la ventana que nos muestra los registros de las funciones especiales, entonces ve al menú.

Windows --> Special Function Registers

Y esto es lo que verás.

Ing. Cabrera Hernández Luis

Page 21: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

En esta ventana verás cómo se modifican los registros cuando comencemos a simular.

Ahora vamos por otra, dirígete al menú.

Debug --> Simulator Stimulus --> Asynchronous Stimulus...

Programa RA0 como Toggle, ok de acuerdo, cuando lo abres todos los botones están sin configurar con la leyenda Stim 1(P), Stim2(P), etc. con el botón derecho del mouse haz clic en Stim 1(P) y verás un menú emergente, selecciona Assign pin.. --> RA0 ahora Stim 1(P) es RA0 (P), nuevamente haz click con el botón derecho sobre el mismo botón pero esta vez selecciona Toggle

Debug --> Run --> Reset

o presiona F6 o bien, presiona este botón...

Ahora estamos en esta situación.

Ing. Cabrera Hernández Luis

Page 22: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

Observa que el micro se ubicó en la posición donde se inicia cada vez que el secuenciador se encienda.

Debug --> Run --> Animate

Ing. Cabrera Hernández Luis

Page 23: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

Windows --> File Register

Ejecuta el código en modo Animate y verás cómo cambian los registros.

Bueno ahora sí, sólo quería mostrarte algunas de las opciones que tienes cuando ejecutas tu programa.

Ing. Cabrera Hernández Luis

Page 24: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

II. Desarrollo.

Bueno ya comentamos como son los microcontroladores y como es su funcionamiento, su estructura y características, para el desarrollo de estas prácticas utilizaremos el PIC16F887, del cual mostraremos su características así como algunas instrucciones que este utiliza:

Estos microcontroladores responden a una serie de instrucciones o códigos que se deben grabar en su memoria de programa, en total son 35. A continuación se encuentra una tabla con la lista completa y después una descripción de cada una de ellas con el fin de facilitar su aprendizaje.

Ing. Cabrera Hernández Luis

Page 25: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

Características del pic 16f887.

Diagrama de bloques.

Ing. Cabrera Hernández Luis

Page 26: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

Organización de la memoria:

Ing. Cabrera Hernández Luis

Page 27: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

Periféricos 16F877

Ing. Cabrera Hernández Luis

Page 28: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

· Puertos programables de E/S· Timers/Counters· Puertos de captura/comparación de datos· Moduladores de ancho de pulso (PWM)· Conversor Analógico/Digital de 10 bits· Puerto serie síncrono· USART· Parallel Slave Port

Circuito de 40 pines en formato.

Salvo 7 pines, todos los demás están asociados al menos con los puertos de E/S.Los 7 pines son:

· 4 pines para alimentación, están duplicados.· 1 pin para MCLR y Vpp que es una tensión de 12 a 14 V. usada cuando está en modo programación.· 2 pines relacionados con entradas o salidas de reloj, en función del tipo de reloj utilizado.

Puertos programables de E/S.

Disponemos de hasta 33 pines. A medida que se usan otros periféricos internos se detraen pines de E/S

Las principales características son:

· Programables como entradas o salidas individualmente.· Capaces de trabajar con corrientes de 25 mA. En cada línea. No obstante la corriente

Ing. Cabrera Hernández Luis

Page 29: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

total en los puertos A, B y E no puede superar los 200 mA. Y en los puertos C y D otros 200 mA.· Entradas tipo TTL o ST (Schmitt Trigger).· Resistencias Pull-up (habilitables por programa) en el puerto B

Las líneas de E/S están agrupadas en 5 puertos: A (6 bits), B (8 bits), C (8 bits), D (8 bits) y E (3 bits).

Cada puerto de E/S tiene asociados dos registros TRISX y PORTX. El primer registro dispone de un bit por cada línea del puerto, y controlará si funciona como entrada (Input, 1) o como salida (Output, 0).

El segundo registro nos permite acceder al puerto. Con una escritura se modifican los bits configurados como salida, y con una lectura accedemos tanto a los de entrada como a los de salida. Si se realiza una escritura y de forma inmediata una lectura, puede que la salida no haya alcanzado el nivel adecuado generando incoherencias.

El puerto A tiene todas sus salidas Totem pole, excepto la RA4 que es del tipo Open collector (open drain de forma más exacta) lo que obliga a poner una resistencia de Pull Up para poder obtener '1'. Además después de un reset las líneas del puerto A están configuradas como entradas analógicas (como digitales devuelven '0'). Escribiendo el valor 6 en el registro ADCON1 se pueden convertir en entradas digitales.

El puerto B dispone de resistencias Pull-up que pueden activarse por software cuando funcionan como entradas. La activación se realiza con el bit RBPU (bit 7) del registro OPTION_REG (direcciones 81h y 181h).

Además la línea RB0 puede funcionar como entrada de petición de interrupción. Para ello se debe activar el bit

INTE (bit 4) del registro INTCON (direcciones 0Bh, 8Bh, 10Bh y 18Bh). Con el bit INTDEG (bit 6) de OPTION_REG (direcciones 81h y 181h) se selecciona si se activa la interrupción con flanco de subida (1) o de bajada (0).

Los puertos A y B cuando se configuran como entradas, trabaja con niveles TTL (salvo la línea RA4) y los puertos C, D y E como Schmitt Trigger (también RA4).

TTL: VIL = 0, 8 V., VIH = 2 V.ST: VIL = 1 V., VIH = 4 V. Permite cambios de tensión lentos en su entrada.

Timers

Disponemos de 3 timers numerados del 0 al 2 y del Watch Dog Timer.

Timer0

Timer de 8 bits Puede ser leído y escrito a través del registro TMR0 (direcciones 1 y 101h)

Ing. Cabrera Hernández Luis

Page 30: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

La entrada de reloj del temporizador puede seleccionarse que sea interna o externa.Interna: Frecuencia de reloj CPU dividida por 4. Externa: Entrada RA4/T0CKI Bit T0CS (bit 5) del OPTION_REG (direcciones 81h y 181h). 0 = reloj interno, 1 = reloj externo. Si se usa un reloj externo, su frecuencia como máximo será la mitad de la frecuencia de la entrada de reloj de la CPU.

Si se selecciona el reloj externo, se puede utilizar como contador de pulsos en dicha entrada. En este caso se puede seleccionar si se activa la entrada por flanco de subida o de bajada: T0SE (bit 5) del OPTION_REG (direcciones 81h y 181h). 0 = flanco de subida, 1 = flanco de bajada.

A este timer se le puede asociar un circuito divisor de la frecuencia de la entrada de reloj. Se le denomina Prescaler. Este circuito puede ser utilizado también por el Watch dog. En cualquier caso debe ser asignado a uno u otro. Esto es seleccionado por el bit PSA (bit 3) del OPTION_REG (direcciones 81h y 181h). 0 = Timer 0, 1 = Watch dog.

También es posible seleccionar el factor de división. Se dispone de tres bits: PS2, PS1 y PS0, (bits 2, 1 y 0) del OPTION_REG (direcciones 81h y 181h) que introducen los factores de división que se muestran en la siguiente tabla:

Finalmente existen los dos bits mencionados en las interrupciones que permiten generar una interrupción cada vez que se desborda el Timer0 cuando pasa de FFH a 0. Son los bits T0IE y T0IF del registro INTCON.

Watch dog Timer

Este módulo permite inicializar la CPU cuando se rebasa el contador. Se activa por medio de los bits de configuración del microcontrolador (en tiempo de programación del chip) y permite recupera el sistema cuando se pierde el control del programa. El período con un valor de prescaler 1:1 oscila entre 7 y 33 mS. Con un valor típico de 18 mS. Esta tolerancia es debida a la imprecisión del oscilador interno que depende de la temperatura y la tensión de alimentación básicamente. Este período se puede ampliar con el prescaler hasta un factor de 1:128.

Timer1

Timer de 16 bits Puede ser leído y escrito a través de los registros TMR1H y TMR1L. La entrada de reloj del temporizador puede seleccionarse que sea interna o externa.Interna: Frecuencia de reloj CPU dividida por 4.

Ing. Cabrera Hernández Luis

Page 31: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

Externa: Entradas RC1/T1OSICCP2 y RC0/T1OSO/T1CKI.

Bit TMR1CS (T1CON<1>). 0 = reloj interno, 1 = reloj externo. Si se usa un reloj externo, su frecuencia como máximo será la mitad de la frecuencia de la entrada de reloj de la CPU.

También con reloj externo existen dos alternativas, colocar un cristal como fuente de reloj (hasta 200 KHz) o utilizar una señal digital. En el segundo caso solo se utiliza la línea de entrada RC0/T1OSO/T1CKI. Para seleccionar una alternativa u otra, se dispone del bit T1OSCEN (T1CON<3>). Si vale 1 se usará el cristal activando el oscilador interno, si vale 0 se usan pulsos generados externamente. En este caso puede funcionar como contador de pulsos.

Además se dispone de un bit que permite activar y desactivar el Timer: TMR1ON (T1CON<0>) El timer dispone de un prescaler controlado por los bits T1CKPS1 y T1CKPS0 (T1CON<5:4>) cuyos factores de división que se muestran en la siguiente tabla:

Finalmente existen los dos bits mencionados en las interrupciones que permiten generar una interrupción cada vez que se desborda el Timer1 cuando pasa de FFFFH a 0. Son los bits TMR1IE y TMR1IF necesitando además que estén activados los bits que habilitan las interrupciones de los periféricos (PEIE) y el general (GIE).

Timer2

Timer de 8 bits Puede ser leído y escrito a través del registro TMR2.

La entrada de reloj del temporizador es interna, concretamente la frecuencia de reloj CPU dividida por 4.

Se dispone de un bit que permite activar y desactivar el Timer: TMR2ON (T2CON<2>) El timer dispone de un prescaler controlado por los bits T2CKPS1 y T2CKPS0 (T2CON<1:0>) cuyos factores de división que se muestran en la siguiente tabla:

La salida del contador puede ser conectada a un postscaler, que dispone de 4 bits de

Ing. Cabrera Hernández Luis

Page 32: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

control T2OUTPS3:T2OUTPS0 cuya salida pasa a controlar el flag de interrupción asociado a este Timer. Los factores de división se muestran en la siguiente tabla:

Finalmente existen los dos bits mencionados en las interrupciones que permiten generar una interrupción cada vez que se desborda el Timer2 cuando pasa de FFH a 0. Son los bits TMR2IE y TMR2IF necesitando además que estén activados los bits que habilitan las interrupciones de los periféricos (PEIE) y el general (GIE).

CAPTURE/COMPARE/PWM

Módulos de captura, comparación y modulación por ancho de pulso.

Existen dos módulos de este tipo: CCP1 y CCP2 cuyo funcionamiento es prácticamente idéntico diferenciándose en que el CCP2 podrá comenzar una conversión en el módulo A/D.

Ambos módulos son de 16 bits, y están estrechamente relacionados con el Timer1.

Modo captura. En este modo, el módulo CCPx captura el contenido del Timer1 cuando se produce un evento. Los eventos posibles, se refieren a los cambios en las entradas RC1/T1OSI/CCP2 ó RC2/CCP1 y se distinguen las siguientes situaciones:

· Un flanco de bajada.· Un flanco de subida.· Cada 4 flancos de subida.· Cada 16 flancos de subida.

En este modo se pueden calcular intervalos de tiempo entre dos sucesos de forma muy exacta. Si se han activado las interrupciones, se generará una por cada captura realizada. Modo comparación. En este modo, el módulo CCPx comparará el contenido de los registros de 16 bits del módulo con el Timer1, de tal manera que cuando se produzca una coincidencia, se producirá la interrupción correspondiente cuando las interrupciones estén activadas y podrá hacerse que las líneas asociadas RC1/T1OSI/CCP2 ó RC2/CCP1 se pongan a nivel alto, bajo o no cambien. Finalmente resetearán el Timer1 y en el caso del CCP2 además se lanzará una conversión A/D si el conversor está activado (permite hacer muestreos periódicos) Modo PWM. En este caso se produce una salida PWM en el puerto CCPx, con una resolución de 10 bits. Una señal PWM señal con onda rectangular de frecuencia fija, en la que se puede variar el tiempo en el que la misma permanece a 0 o a 1. Sustituye en la mayoría de los casos a un

Ing. Cabrera Hernández Luis

Page 33: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

conversor D/A. La frecuencia de la señal se establece por medio del Timer2 y el tiempo que permanece a 1 (Duty cycle) se controla por medio de los registros del CCP que se esté utilizando.

Master Synchronous Serial Port

Este módulo implementa un interfaz de comunicaciones en serie. Existen multitud de dispositivos que permiten este tipo de comunicación, tales como memorias EEPROM, conversores A/D, sensores de diferentes tipos (temperatura, posición, distancia), displays, otros microcontroladores.

El módulo puede operar en dos modos: SPI e I2C.

SPI: Serial Peripheral Interface. Este interface suele ser utilizado para comunicar dos dispositivos entre sí, uno se configura como master y el otro como esclavo. En este interface se definen las líneas:

· Serial Data Out (SDO)· Serial Date In (SDI)· Serial Clock (SCK)

Adicionalmente se puede usar un cuarto pin en modo esclavo.

· Slave Select ( SS).

Permite velocidades de hasta 8 Mbps con reloj a 20 MHz. El master inicia las transferencias activando la línea SCK, el esclavo recibe y transmite información cuando detecta que la línea SCK se activa. Cada vez que recibe un byte, en modo esclavo, se puede activar la interrupción correspondiente. I2C: Inter-Integrated Circuit. Permite la interconexión de múltiples dispositivos formando un bus. A cada dispositivo se le asigna una dirección y las tramas que se envían por el bus llevan direccionamiento para identificar los actores de la misma. En general se configura un dispositivo como master y el resto como esclavos, no obstante, se permiten buses multi-master, en este caso se dispone de mecanismos de detección de colisiones y gestión (arbitration) del Bus. Se pueden alcanzar velocidades de 1 Mbps, y conectar hasta 128 o 1.024 dispositivos en función del tipo de direccionamiento utilizado.

Addressable Universal Synchronous Asynchronous Receiver

Transmitter (USART).

Este módulo implementa el popular interface de comunicaciones serie que tienen incluida gran cantidad de ordenadores. Permite comunicación serie entre dos dispositivos, y en algunos modos de funcionamiento, permite la conexión de más de dos dispositivos incluyendo 9 bits de direccionamiento (512 dispositivos).

Analog/Digital Converter.

Ing. Cabrera Hernández Luis

Page 34: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

Este módulo permite la conexión de entradas analógicas para convertirlas en valores discretos obteniendo su valor. El valor mínimo de una entrada es 0 y aparece si la tensión de esa entrada es menor o igual a VREF-. El valor máximo es 1.023 (3FFH) si la tensión es mayor o igual que VREF+. Cualquier voltaje intermedio producirá un valor proporcional al mism0 en el rango de 1 a 1.022. Aunque se dispone de un único conversor, el microcontrolador tiene un multiplexor analógico que permite la conexión de hasta ocho entradas.

Para su uso se dispone de 4 registros de 8 bits: ADRESH, ADRESL, ADCON0 y ADCON1.

Los dos primeros son: ADRESH y ADRESL (parte alta y parte baja del resultado de la conversión AD) contendrán el resultado de la última conversión. Se usan dos registros porque el conversor tiene una resolución de 10 bits. Si ocho bits fueran suficientes para una aplicación determinada, se puede indicar al conversor que entregue el resultado justificado a la izquierda y nos quedamos con el contenido de ADRESH.

Registros ADCON0 y ADCON1 (Registros de control del conversor). ADCON1 suele usarse en la parte de inicialización del programa para asignar la función que debe corresponder a cada una de las posibles entradas analógicas. ADCON0 debe ser accedido antes de cada conversión.

El bit de mayor peso de ADCON1 (ADFM) permite decidir si el resultado queda alineado a la izquierda (0) o a la derecha (1).

Ing. Cabrera Hernández Luis

Page 35: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

Los cuatro de menor peso (PCFG3 al PCFG0) se usan según la siguiente tabla:

Esto permite que todas las entradas sean analógicas o digitales o algunas combinaciones de analógicas y digitales.

También permite definir qué valores se usarán como VREF+ y VREF

Los dos bits de mayor peso de ADCON0 (ADCS1 y ADCS0) permiten seleccionar la fuente de reloj a utilizar. En general este parámetro no es crítico. Seleccionar los valores 01 ó 10 permite realizar conversiones rápidas y precisas.

Los bits 3. 5 se corresponde con CHS0. CHS2. Con esas tres líneas se gobierna el MPX analógico, y por tanto la entrada sobre la que se quiere hacer la conversión.

El bit de menos peso (ADON) permite conectar o desconectar el conversor. Tenerlo desconectado permite reducir el consumo del microcontrolador.

Finalmente el bit 2 GO/DONE permite lanzar el proceso de conversión poniendo esta línea a 1, y comprobar si la conversión ha finalizado.

Existen básicamente dos maneras de detectar cuando ha finalizado. Por interrupciones o por sondeo (polling). Si se activan los bits de interrupción correspondientes (ADIE, PIE y GIE y se pone a 0 ADIF), se producirá una interrupción cuando acabe la conversión en marcha, activando el ADIF.

Por sondeo el método es el siguiente: Activar el bit GO/DONE y entrar en un bucle en el que se comprueba este mismo bit. Mientras valga 1 la conversión está en curso. Cuando pasa a 0 la conversión finalizó y el resultado se encuentra en los registros ADRESH y L.

III. Practicas.

Practica 1.

Ing. Cabrera Hernández Luis

Page 36: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

Cargar al Registro W la literal o valor .50 después cargar el valor o literal .20; borrando la literal pasada, por ultimo cargar la literal o valor de.5 en el registro W, borrando la literal pasada de .20 quedando al final solo el valor de .5

INI ;INICIO DE PROGRAMA MOVLW .50 ;CARGAR A W CON LITERAL 50

MOVLW .20 ;CARGAR A W CON LITERAL 20MOVLW .5 ;CARGAR A W CON LITERAL 5GOTO INI ;SALTAR A DIRECCIONEND ;FIN DE PROGRAMA

PRACTICA 2

Sumar cantidades o valores decimales en los registros he irlos sumando en otro registro con otra dirección y borrar los registros ya utilizados.

INIMOVLW .50 ;CARGAR A W CON LITERAL O VALOR DECIAML 50

MOVWF 0X20 ;MOVER REGISTRO W A F EN DIRECCION 0X20 HEXADECIMAL MOVLW .20 CARGAR A W CON LITERAL O VALOR DECIAML 20 ADDWF 0X20,1 ;SUMAR EL REGISTRO W A F EN DIRECCION 0X20,1 HEXADECIMAL CLRF 0X20 ;LIMPIAR EL REGISTRO F CLRW ;LIMPIAR

GOTO INI ;SALTAR A END ;FIN DE PROGRAMA

Practica 3

Sumar cantidades decimales en registros y cambiarlos en las direcciones de los registros.

INI ;INICIO DE PROGRAMAMOVLW .5 ;MOVER AL REGISTRO W CON LA LITERAL O VALOR 5 EN DECIMALMOVWF 0X20 ;MOVER AL REGISTRO DE W A F EN LA DIRECCION HEXADECIMALMOVLW .50 ;MOVER AL REGISTRO W LA LITERAL O VALOR DECIMAL 50ADDWF 0X20,0 ;SUMAR REGISTRO W A F EN DIRECCION 0X20,1ADDWF 0X20,1 ;SUMAR REGISTRO W A F EN DIRECCION 0X20,1GOTO INI ;SALTAR AL INIEND ;FIN DE PROGRAMA

Practica 4

Incrementa el valor del registro F hasta llegar a cero.

INI ;INICIO DE PROGRAMAMOVLW . 251 ;MOVER AL REGISTRO W LA LITERAL O VALOR 251MOVWF 0X20 ;MOVER EL REGISTRO W A F EN DIRECCION 0X20

Ing. Cabrera Hernández Luis

Page 37: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

MOVLW .5 ;MOVER AL REGISTRO W LA LITERAL O VALOR .5MOVWF 0X21 ;MOVER EL REGISTRO W A F EN DIRECCION 0X21

YO INCF .2 ;INCREMENTAR EL REGISTRO F EN UNOADDWF 0X21,0 ;SUMAR EL REGISTRO W EN F EN LA DIRECCIONINCFSZ 0X20,1 ;INCREMENTAR EL REGISTRO F EN UNO SI F QUEDA EN 0 SALTA

UNA LINEA DE PROGRAMA A LA DIRECCION

GOTO YO ;SALTA A YOEND ;FIN DE PROGRAMA

PRACTICA 5 RANA

INI ;INICIO DE PROGRAMACLRF 0X20 ;BORRO REGISTRO F DE DIRECCIONCLRF 0X21 ;BORRO REGISTRO F DE DIRECCION MOVLW .100 ;MOVER REGISTRO W CON LITERAL 100METROSMOVWF 0X20 ;MOVER EL REGISTRO W A F A DIRECCION QUE ES CONTADOR

METROSMOVLW .1 ;MOVER REGISTRO W CONLITERAL DE 1 DIAMOVWF 0X21 ;MOVER EL REGISTRO W A F A DIRECCION SERA TOTAL DIAS

DIA DECF 0X20 ;DECREMENTAR F EN DIRECCIONDECFSZ 0X20 ;DECREMENTAR F EN 1, SI LLEGA A CERO SALTAR UNA LINEA DOS

METROS AVANCE DÍA

GOTO NOCHE;SALTAR A NOCHEGOTO YA ;SALTAR A YA

NOCHE INCF 0X20 ;INCREMENTAR F EN DIRECCION QUE SERA NOCHEINCF 0X21 ;INCREMENTAR F EN DIRECCION QUE SERUN DIA MASGOTO DIA ;SALTAR A DIA AVANZANOP ;NO HACE NADA

YA GOTO FIN ;SALTA A FINFIN NOP ;NO HACE NADA

END ;FIN DE PROGRAMA

PRACTICA 6

;DECLARACION DE VARIABLES

F EQU 1 ;VARIABLE F EN DIRECCION 1W EQU 0 ;VARIABLE W EN DIRECCION 0I EQU 0X20 ;VARIABLE I EN REGISTRO GENERAL 21 J EQU 0X21 ;VARIABLE J EN REGISTRO GENERAL 22H EQU 0X22 ;VARIABLE H EN REGISTRO GENERAL 23

;PROGRAMA PRINCIPAL

MOVLW .23 ;MOVER AL REGISTRO W LA LITERAL 23MOVWF H ;MOVER EL REGISTRO W EN F A LA DIRECCION DE LA

VARIABLE HINI MOVLW .248 ;MOVER AL REFISTRO W LA LITERAL 248

Ing. Cabrera Hernández Luis

Page 38: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

MOVWF I ;MOVER EL REGISTRO W EN F A LA DIRECCION DE LA VARIABLE IOTRO MOVLW .240; MOVER AL REGISTRO W LA LITERAL 240

MOVWF J ;MOVER EL REGISTRO W A F A LA DIRECCION DE LA VARIABLE J

NUEVO NOP ; NO HACE NADADECFSZ J,F ; DECREMENTAR F EN UNO SI LLEGA A O SALTAR UNA

LINEAGOTO NUEVO; SALTAR A NUEVODECFSZ I ; decremento f en uno si llega a 0 saltar una línea.GOTO OTRO;SALTAR A OTRODECFSZ H,F ;DECREMENTRF EN UNO SI LLEGA A 0 SALTAR

UNA LINEAGOTO INI ;SALTAR A INI

FIN NOP ;NO HACE NADAGOTO FIN ;SALTA A FINEND ;FIN DE PROGRAMA

Practica 7

Realizar un testeo y una operación de igualdad.

;DECLARACION DE VARIABLES

I EQU 0X20 ;VARIABLE I EN DIRECIONZ EQU .1 ; VARIABLE Z EN DIRECCIONSTATUS EQU 0X03 ; SELECCIONA EL BANCO 3W EQU 0 ;VARIABLE W EN DIRECCION

;PROGRAMA PRINCIPAL

CLRF I ;LIMPIAR FOTRO NOP ;NO HACE NADA

INCF I ;INCREMENTA F EN UNO EN LA VARIABLE IMOVLW .10 ;MOVER AL REGISTRO W LA LITERAL 10SUBWF I,W ;RETA EL REGISTRO W A FBTFSS STATUS,Z;PROBAR BIT B DE F,SALTAR SI ES UNOGOTO OTRO ;SALTAR A OTRO

FIN NOP ;NO HACE NADAGOTO FIN ;SALTAR A FINEND ;FIN DE PROGRAMA

Programa 8

Pájaros y el gato.

;DECLARACION DE VARIABLES

Ing. Cabrera Hernández Luis

Page 39: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

I EQU 0X20 ;VARIABLE I EN DIRECCIONJ EQU .2 ;VARIABLE J EN DIRECCIONSTATUS EQU 0X03 ;SELECCION DEL BANCO 3K EQU 0 ;VARIABLE K EN DIRECCION ;PROGRAMA PRINCIPAL

CLRF I ;LIMPIA EL REGISTRO FOTRO NOP ; NO HACE NADA INCF I ;INCREMENTA F EN 1 MOVLW .1 ;MOVER AL REGISTRO W LA LITERAL 1 MOVWF 0X21 ;MOVER EL REGISTRO W A F EN DIRECCION ADDWF 0X23,1 ;SUMAR REGISTRO W EN F MOVLW .100 ;MOVER AL REGISTRO LA LITERAL 100 ADDWF 0X20,1 ;SUMAR EL REGISTRO W A F EN DIRECCION RLF 0X20,1 ;ROTAR A LA IZQUIERA A DIRECCION SUBWF I,K ;RESTAR REGISTRO W A F EN VARIABLES BTFSS STATUS,J ;Probar bit b de f, saltar si es uno GOTO OTRO ;SALTAR A OTROFIN NOP ; NO HACE NADA GOTO FIN ;SALTAR A FIN END ; FIN DE PROGRAMA

Practica 9

Configuración de puertos

;DECLARACION DE VARIABLES

F EQU 1 ;VARIABLE F EN DIRECCIONW EQU 0 ;VARIABLE W EN DIRECCIONSTATUS EQU 03h ;SELECCION DEL BANCORP0 EQU .5 ;SELECCION DE PUERTO BANCO 0RP1 EQU .6 ;SELECCION DE PUERTO BANCO 1PTOB EQU 06h ;SELECCION PUERTO BTRISB EQU 86h ;CONFIGURACION DE SALIDA DE PUERTO B ANSEL EQU 108hANSELH EQU 109hI EQU 0X20 ;VARIABLE I EN DIRECCIONJ EQU 0X21 ;VARIABLE J EN DIRECCIONK EQU 0X22 ;VARIABLE K EN DIRECCION

;CONFIGURACION

BSF STATUS,RP0 ;Activar bit b de f BANCO1CLRF TRISB ;CONFIGURACION PUERTO B LIMPIARBSF STATUS,RP1 ;Activar bit b de f BANC03CLRF ANSEL ;DES ANLCLRF ANSELH ;DES ANHBCF STATUS,RP1 ;Limpiar bit b de f BANCO1BCF STATUS,RP0 ;Limpiar bit b de f BANCO0

; PROGRAMA PRINCIPAL

CLRF PTOB ;CONFIGURA PUERTO B LIPIARAQUEL INCF PTOB,F ;INCREMENTA F EN UNO SI LLEGA A CERO SALTAR UNA LINEA

Ing. Cabrera Hernández Luis

Page 40: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

CALL RETARDO ;SALTAR A RETRASO DE 1 SEGUNDO EN SUBRRUTINA

GOTO AQUEL ;SALTA A AQUEL

; SUBRRUTINA.

RETARDO MOVLW .25 ;MOVER A EL REGISTRO W LA VARIABLE 25MOVWF 0X22 ;MOVER EL REGISTRO W A F A DIRECCION

INI MOVLW .255 ;MOVER AL REGISTRO W LA VARIABLE 255MOVWF I ;MOVER EL REGISTRO W A F EN VARIABLE I

OTRO MOVLW .255 ;MOVER AL REGISTRO W LA LITERAL 255MOVWF J ;MOVER EL REGISTRO W A F EN VARIABLE J

NEW NOP ;NO HACE NADADECFSZ J,F ;DECREMENTA F EN UNO ASTA LLEGAR A OGOTO NEW ;SALTAR A NEXDECFSZ I,F ;DECREMENTAR F EN UNO ASTA LLEGAR A 0GOTO OTRO ;SALTARA A OTRODECFSZ K,F ;DECREMENTAR F EN UNO HASTA LLEGAR A 0GOTO INI ;SALTA A INI

FIN NOP ;NO HACE NADAGOTO FIN ;SALTA A FINEND ;FIN DE PROGRAMA

Practica 10

Suma de números binarios.

F EQU 1 ;VARIABLE F A DIRECCIONW EQU 0 ;VARIABLE W A DIRECCIONI EQU 0X20 ;VARIABLE I A DIRECCIONJ EQU 0X21 ;VARIABLE J A DIRECCIONQ EQU 0X22 ;VARIABLE K A DIRECCIONSTATUS EQU 03H ;SELECCION DEL BANCORP0 EQU .5 ;SELECCIONA EL PUERTO EN BANCO 0RP1 EQU .6 ;SELECCIONA EL PUERTO EN BANCO 1PTOB EQU 06H ;CONFIGURA EL PUERTO BTRISB EQU 86H ;CONFIGURA ÑLA SALIDA DEL PUERTO BANSEL EQU 108H ;ANSELH EQU 109H ; ;PROGRAMA PRINCIPAL

BSF STATUS,RP0 ;Activar bit b de f BANCO1 CLRF TRISB ;CONFIGURACION PUERTO B LIMPIAR BSF STATUS,RP1 ;Activar bit b de f BANC03 CLRF ANSEL ;DES ANL CLRF ANSELH ;DES ANH BCF STATUS,RP1 ;Limpiar bit b de f BANCO1 BCF STATUS,RP0 ;Limpiar bit b de f BANCO0 AQUEL CLRF PTOB ;CONFIGURA PUERTO B LIMPIAR MOVLW .0 ;MOVER AL REGISTRO W LA VARIABLE O ADDWF PTOB,F ;SUMARA W A F EN PUERTO B CALL RETARDO ;LLAMA A UNA SUBRRITA

CLRF PTOB ;CONFIGURA PUERTO B LIMPIAR MOVLW .1 ;MOVER AL REGISTRO W LA VARIABLE 1

Ing. Cabrera Hernández Luis

Page 41: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

ADDWF PTOB,F ;SUMARA W A F EN PUERTO B CALL RETARDO ;LLAMA A UNA SUBRRITA CLRF PTOB ;CONFIGURA PUERTO B LIMPIAR MOVLW .3 ;MOVER AL REGISTRO W LA VARIABLE 3 ADDWF PTOB,F ;SUMARA W A F EN PUERTO B CALL RETARDO ;LLAMA A UNA SUBRRITA CLRF PTOB ;CONFIGURA PUERTO B LIMPIAR MOVLW .7 ;MOVER AL REGISTRO W LA VARIABLE 5 ADDWF PTOB,F ;SUMARA W A F EN PUERTO B CALL RETARDO ;LLAMA A UNA SUBRRITA

CLRF PTOB ;CONFIGURA PUERTO B LIMPIAR MOVLW .15 ;MOVER AL REGISTRO W LA VARIABLE 15 ADDWF PTOB,F ;SUMARA W A F EN PUERTO B CALL RETARDO ;LLAMA A UNA SUBRRITA CLRF PTOB ;CONFIGURA PUERTO B LIMPIAR MOVLW .31 ;MOVER AL REGISTRO W LA VARIABLE 31 ADDWF PTOB,F ;SUMARA W A F EN PUERTO B CALL RETARDO ;LLAMA A UNA SUBRRITA CLRF PTOB ;CONFIGURA PUERTO B LIMPIAR MOVLW .63 ;MOVER AL REGISTRO W LA VARIABLE 63 ADDWF PTOB,F ;SUMARA W A F EN PUERTO B CALL RETARDO ;LLAMA A UNA SUBRRITA CLRF PTOB ;CONFIGURA PUERTO B LIMPIAR MOVLW .127 ;MOVER AL REGISTRO W LA VARIABLE 127 ADDWF PTOB,F ;SUMARA W A F EN PUERTO B CALL RETARDO ;LLAMA A UNA SUBRRITA

CLRF PTOB ;CONFIGURA PUERTO B LIMPIAR MOVLW .255 ;MOVER AL REGISTRO W LA VARIABLE 255 ADDWF PTOB,F ;SUMARA W A F EN PUERTO B CALL RETARDO ;LLAMA A UNA SUBRRITA

GOTO AQUEL ;SALTA A AQUEL

;RUTINA DE RETARDO

RETARDO MOVLW .245 ;MOVER AL REGISTRO W LA VARIABLE 245 MOVWF Q ;MOVER EL REGSITRO W A F DIRECCION QINI MOVLW .60 ;MOVER AL REGSITRO W LA VARIABLE40 MOVWF I ;MOVER EL REGSITRO W A F EN DIRECCIONOTRO MOVLW .15 ;MOVER AL REGISTRO L A W EN DIRECCION MOVWF J ;MOVER EL REGISTRO W A F EN DIRECCION

NUEVO NOP ;NO HACE NADA DECFSZ J, F ; DECREMENTO DE F EN UNO HASTA LLEGAR A UNO Y SALTAR UNA LINEA. GOTO NUEVO ;SALTAR A NUEVO DECFSZ I, F ; DECREMENTO DE F EN UNO HASTA LLEGAR A UNO Y SALTAR UNA LINEA. GOTO OTRO ;SALTAR A OTRO DECFSZ Q, F ; DECREMENTO DE F EN UNO HASTA LLEGAR A UNO Y SALTAR UNA LINEA. GOTO INI ;SALTAR A INI

RETURN ;RETORNAR END ;FIN DE PROGRAMA

Ing. Cabrera Hernández Luis

Page 42: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

PRGOGRAMA 11

Uso de apuntadores, para encendido de led´s, desde el puerto rb0 hasta el puerto rb7 con un retardo de un segundo

;DECLARACION DE VARAIABLES

INC EQU 0X20F EQU 1W EQU 0I EQU 0X21J EQU 0X22Q EQU 0X23STATUS EQU 03H Variables, configuración del banco, y configuración de puertosRP0 EQU .5RP1 EQU .6PTOB EQU 06HTRISB EQU 86HANSEL EQU 108HANSELH EQU 109HPCL EQU 0X24 ;CONFIGURACION DEL PUERTO

BSF STATUS,RP0 CLRF TRISB BSF STATUS,RP1 Configuración del banco y puertos CLRF ANSEL CLRF ANSELH BCF STATUS,RP1 BCF STATUS,RP0

;PROGRAMA PRINCIPAL

OTRO CALL DATOCALL RETARDOMOVWF PTOBGOTO OTRO

DATO

NUEVO INCF INC,FMOVFW INC

XXX ADDWF PCL,F

RETLW b'00000000'NOPRETLW b'00000001'RETLW b'00000011'RETLW b'00000111'RETLW b'00001111' Escondido de led´sRETLW b'00011111'RETLW b'00111111'

Ing. Cabrera Hernández Luis

Page 43: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

RETLW b'01111111'RETLW b'11111111'CLRF INCGOTO NUEVO

;SUBRRUTINA

RETARDO

MOVLW .245 MOVWF QINI MOVLW .60 MOVWF I MOVLW .15 MOVWF J

NOP Rutina de retardo de un Segundo y final de programa. DECFSZ J,F GOTO XXX DECFSZ I,F GOTO XXX DECFSZ Q,F GOTO INI

RETURN END

Practica 12

Uso de tablas para encendido y apagado de led´s los led´s encenderán del puerto RB0 hasta el puerto RB7 con un retardo de 1 segundo y al momento en que prendan todos se empezaran a apagar desde el último que encendió hasta apagar todos los led´s.

;DECLARACION DE VARIABLES INC EQU 0X20 F EQU 1 W EQU 0 STATUS EQU 03H RP0 EQU .5 RP1 EQU .6 declaración de variables PTOB EQU 06H TRISB EQU 86H PCL EQU 02H ANSEL EQU 108H ANSELH EQU 109H I EQU 0X21 J EQU 0X22 K EQU 0X23CONFIGB EQU b'00000000'

;CONFIGURACION DE PUERTOS

BSF STATUS,RP0 MOVLW CONFIGB

Ing. Cabrera Hernández Luis

Page 44: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

MOVWF TRISB BSF STATUS,RP1 Configuración de puertos CLRF ANSEL CLRF ANSELH BCF STATUS,RP0 BCF STATUS,RP1

;PROGRAMA

CLRF INC CLRF PTOBUNO CALL RETARDO CALL DATO MOVWF PTOB GOTO UNO DATO INCF INC MOVF INC,W ADDWF PCL,F ;CLRF INC NOP RETLW b'00000000' RETLW b'00000001' RETLW b'00000011' RETLW b'00000111' RETLW b'00001111' RETLW b'00011111' RETLW b'00111111' RETLW b'01111111' Encendido de led´s. RETLW b'11111111' RETLW b'01111111' RETLW b'00111111' RETLW b'00011111' RETLW b'00001111' RETLW b'00000111' RETLW b'00000011' RETLW b'00000001' CLRF INC GOTO DATO

;SUBRUTINA

RETARDO MOVLW .20 MOVWF K INI MOVLW .100 MOVWF I OTRO MOVLW .100 Rutina de retardo MOVWF J

NUEVO NOP DECFSZ J,F GOTO NUEVO

DECFSZ I,F GOTO OTRO

DECFSZ K,F GOTO INI

Ing. Cabrera Hernández Luis

Page 45: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

RETURN END

Practica 13

Configuración de display de 7 segmentos

Encendido del display con un ciclo de 3 veces y por último se queda solo el guion medio o RB6 encendido

;Practica 13;Configuración de puertos del pic;Numeración con display "0123456789AbCdEF";3 veces el ciclo mencionado y por último se quedara solo un guion que será el segmento 7 o RB06;Declaración de variables

INC EQU 0x23PCL EQU 02H

F EQU 1W EQU 0STATUS EQU 03HRP0 EQU .5RP1 EQU .6PTOB EQU 06HTRISB EQU 86HANSEL EQU 108HANSELH EQU 109H

;CONFIGB EQU b'00000000'I EQU 0x20 ;declaración de variables del retardoJ EQU 0x21K EQU 0x22

;Configuración de puertos

BSF STATUS,RP0; MOVLW CONFIGB ;CONFIGURACION DEL PUERTO B ; MOVWFTRISB ;CONFIGURACION DEL PUERTO B

CLRF TRISB ;CONFIGURACION DEL PUERTO B BSF STATUS,RP1CLRF ANSELCLRF ANSELHBCF STATUS,RP1BCF STATUS,RP0CLRF PTOB

;Inicio de Programa

CLRF INCOTRO CALL RETARDO

CALL DATOMOVWFPTOBGOTO OTRO

Ing. Cabrera Hernández Luis

Page 46: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

NUEVO1DATO INCF INC,F

MOVFWINCADDWF PCL,FNOPRETLW b'00111111'; 0RETLW b'00000110';1RETLW b'01011011';2RETLW b'11001111';3RETLW b'01100110';4RETLW b'01101101';5RETLW b'01111101';6RETLW b'00000111';7RETLW b'01111111';8RETLW b'01101111';9RETLW b'01110111';ARETLW b'01111100';bRETLW b'00111001';CRETLW b'01011110';dRETLW b'01111001';ERETLW b'01110001';F ---- 1 cicloRETLW b'00111111'; 0RETLW b'00000110';1RETLW b'01011011';2RETLW b'11001111';3RETLW b'01100110';4RETLW b'01101101';5RETLW b'01111101';6RETLW b'00000111';7RETLW b'01111111';8RETLW b'01101111';9 Encendido del display de 7 segmentos y ciclo

de RETLW b'01110111';ARETLW b'01111100';b 3 veces y guión finalRETLW b'00111001';CRETLW b'01011110';dRETLW b'01111001';ERETLW b'01110001';F ---- 2 cicloRETLW b'00111111'; 0RETLW b'00000110';1RETLW b'01011011';2RETLW b'11001111';3RETLW b'01100110';4RETLW b'01101101';5RETLW b'01111101';6RETLW b'00000111';7RETLW b'01111111';8RETLW b'01101111';9RETLW b'01110111';ARETLW b'01111100';bRETLW b'00111001';CRETLW b'01011110';dRETLW b'01111001';ERETLW b'01110001';F ---- 3 cicloRETLW b'01000000';_

RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_

Ing. Cabrera Hernández Luis

Page 47: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_ RETLW b'01000000';_

RETLW b'01000000';_RETLW b'01000000';_RETLW b'01000000';_RETLW b'01000000';_RETLW b'01000000';_

CLRF INCNOP

GOTO NUEVO1

;SUBRUTINA DE 1s

RETARDO MOVLW .25MOVWF0x22

INI MOVLW .100MOVWFI

OTRORET MOVLW .100MOVWFJ

NUEVO NOPDECFSZ J,F

GOTO NUEVO Rutina de retardo de un segundoDECFSZ I,FGOTO OTRORETDECFSZ K,FGOTO INI

RETURNEND

Practica 14Configuración del convertidor analógico digital ( con sensor de temperatura )

Se configurara el puerto para que estos den la salida visible cuando el sensor LM35 está en operación encendiendo con más intensidad los led´s.

Ing. Cabrera Hernández Luis

Page 48: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

;practica 14 Con sensor LM35

;Declaración de Variables

ADCON0 EQU 1Fh ADCON1 EQU 9Fh ADRESH EQU 1Eh PCL EQU 82H INC EQU 0X20 F EQU 1 W EQU 0 I EQU 0X21 J EQU 0X22 K EQU 0X23 Declaración de puertos L EQU 0X24 STATUS EQU 03H RP0 EQU .5 RP1 EQU .6 PTOB EQU 06h PTOA EQU 05h TRISA EQU 85H TRISB EQU 86H ANSEL EQU 108H ANSELH EQU 109H

;Configuración de Puertos CLRW MOVLW b'11000001' CLRF ADCON0 ADDWF ADCON0 BSF STATUS,RP0 CLRF TRISB MOVLW b'00010000' CLRF ADCON1 ADDWF ADCON1 CLRF TRISA Configuración de puertos de salida MOVLW b'11111111' ADDWF TRISA,1 BSF STATUS,RP1 CLRF ANSEL MOVLW .1 ADDWF ANSEL,1 CLRF ANSELH BCF STATUS,RP1 BCF STATUS,RP0

;Programa Principal

OTRO NOP NOP NOP NOP NOP

BSF ADCON0,1

Ing. Cabrera Hernández Luis

Page 49: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

ESPERA BTFSC ADCON0,1

GOTO ESPERA MOVF ADRESH,W MOVWF PTOB GOTO OTRO

END

Practica 15 Analógica digital con librerias.

Configuración del convertidor analógico digital ( con sensor de temperatura )

Se configurara el puerto para que estos den la salida visible cuando el sensor LM35 está en operación encendiendo con más intensidad los led´s.

PROCESSOR 16F887INCLUDE <P16F887.INC> Librerias único cambio

;CONFIGURACION

CLRW MOVLW B'11000001' CLRF ADCON0 ADDWF ADCON0

BSF STATUS,RP0 CLRF TRISB MOVLW B'00010000' CLRF ADCON1 ADDWF ADCON1 CLRF TRISA MOVLW B'11111111' ADDWF TRISA,1

BSF STATUS,RP1 CLRW MOVLW .1 MOVWF ANSEL CLRF ANSELH BCF STATUS,RP1 BCF STATUS,RP0

;-------------------------------------------------------------; PROGRAMA

NOP NOP NOP NOP NOP BSF ADCON0,1

Ing. Cabrera Hernández Luis

Page 50: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

BTFSC ADCON0,1 GOTO $-01H MOVF ADRESH,W MOVWF PORTB GOTO $-0AH RETURN END

Practica 16 Configuración del LCD con letra y nombre.

En esta práctica se configura los puertos para que aparezca el nombre en el LCD.

;Practica 16 CONFIGURACION DEL LCD CON LETRA Y NOMBRE

__CONFIG 2007H,21C4H__CONFIG 2008H,3EFFH

; PROGRAMA PARA DISPLAY EN LCD

STATUS EQU 03HPORTD EQU 08HPORTB EQU 06HTRISD EQU 88HTRISB EQU 86HADCON1 EQU 9FHR13 EQU 20HR14 EQU 21HACUMULA EQU 23HR EQU 01HPC EQU 02HRS EQU 02HE EQU 03HJ EQU 24HI EQU 25HRP0 EQU .5RP1 EQU .6

CLRW ;LIMPIA REGISTRO WBSF STATUS,RP0 ;COLOCA A UNO RP0 PARA CAMBIO A BANCO 1CLRF PORTB ;MUEVE W A REGISTRO BCLRF PORTD ;MUEVE W A REGISTRO DMOVLW 07HMOVWFADCON1BSF STATUS,RP1 ;COLOCA 1 EL RP1 PARA CAMBIO A BANCO 3BCF STATUS,RP0 ;COLOCA A CERO RP0 PARA REGRESAR BANCO 0BCF STATUS,RP1 ;COLOCA A CERO RP1 PARA REGRESAR A BANCLRF PORTDCLRF PORTBCLRF ACUMULA

;CONFIGURA LCD

MOVLW .15MOVWFI ;COLOCA EL 1er RETRADO EN REGISTRO I

Ing. Cabrera Hernández Luis

Page 51: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

CALL RET1mSMOVLW 30H ;MANDO 0X30 PUERTO BMOVWFPORTBBCF PORTD,2 ;LIMPIO PD2CALL FIGMOVLW .5 ;ESPERO 5 mS.MOVWFICALL RET1mSMOVLW 30H ;MANDO 0X30 PUERTO BMOVWFPORTBCALL PUERTOMOVLW .1 ;ESPERO 1mSMOVWFICALL RET1mSMOVLW30H ;MANDO 0X30 PUERTO BCALL PUERTOMOVLW 0X1F ;FUNCION SETCALL PUERTOMOVLW 0X08 ;DISPLAY OFFCALL PUERTOMOVLW 0X01 ;CLEAR DISPLAYCALL PUERTOMOVLW B'00000110' ;ENTRY MODECALL PUERTOMOVLW 0X0F ;DISPLAY ONCALL PUERTOGOTO IMPR

RET1mS NOPRET MOVLW .1

MOVWFJNOP

NUEVO NOPNOPDECFSZ J,FGOTO NUEVODECFSZ I,FGOTO RETRETURN

PULSO BSF PORTD,.3MOVLW .1MOVWFICALL RET1mSNOPBCF PORTD,.3MOVLW .100MOVWFICALL RET1mSRETURN

PUERTO MOVWFPORTBCALL PULSORETURN

FIG BCF PORTD,RSGOTO LCD2

LCD1 BSF PORTD,RS

LCD2 BSF PORTD,E

Ing. Cabrera Hernández Luis

Page 52: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

MOVWFPORTBCALL RETARDOBCF PORTD,ECALL RETARDORETURN

NOMBRE ADDWF PC,RRETLW "D"RETLW "I"RETLW "E"RETLW "G"RETLW "O"RETLW " " Nombre Diego Alberto Garcia EligioRETLW "A"RETLW "L"RETLW "B"RETLW "E"RETLW "R"RETLW "T"RETLW "O"

IMPR MOVF ACUMULA,0CALL NOMBRE;MOVLW "A"CALL LCD1CALL RETARDOCALL RETARDOINCF ACUMULA,1GOTO IMPR

RETARDO MOVLW 01HMOVWFR13

RT1 MOVLW 02HMOVWFR14

RT2 DECFSZ R14,RGOTO RT2DECFSZ R13,RGOTO RT1RETURN

END

Practica 17 Configuración del LCD con número y registro.

En esta practica se configurara el puerto para q mande una cantidad de tres dígitos la cual está conformada por Centenas, Decenas y Unidades.

;PRACTICA 17;UNIDADES-DECENAS-CENGTENAS TRES NUMEROS SEPARADOS

;DECLARACION DE VARIABLES

Ing. Cabrera Hernández Luis

Page 53: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

__CONFIG 2007H,21C4H__CONFIG 2008H,3EFFH

STATUS EQU 03HPORTD EQU 08HPORTB EQU 06HTRISD EQU 88HTRISB EQU 86HADCON1 EQU 9FHR13 EQU 28HR14 EQU 29H

ACUMULA EQU 30HR EQU 01HPC EQU 02HRS EQU 02HE EQU 03HJ EQU 31HI EQU 32HRP0 EQU .5RP1 EQU .6NN EQU 20HOO EQU 21HKK EQU 22HL EQU 23HM EQU 24H

CENTENAS EQU 25HDECENAS EQU 26HUNIDADES EQU 27H

CLRW ;LIMPIA REGISTRO WBSF STATUS,RP0 ;COLOCA A UNO RP0 PARA CAMBIO A BANCO 1CLRF PORTB ;MUEVE W A REGISTRO BCLRF PORTD ;MUEVE W A REGISTRO DMOVLW 07HMOVWFADCON1BSF STATUS,RP1 ;COLOCA 1 EL RP1 PARA CAMBIO A BANCO 3BCF STATUS,RP0 ;COLOCA A CERO RP0 PARA REGRESAR BANCO 0BCF STATUS,RP1 ;COLOCA A CERO RP1 PARA REGRESAR A BANCLRF PORTDCLRF PORTBCLRF 23H

;CONFIGURA LCD

MOVLW .15MOVWFI ;COLOCA EL 1er RETRADO EN REGISTRO ICALL RET1mSMOVLW 30H ;MANDO 0X30 PUERTO BMOVWFPORTBBCF PORTD,2 ;LIMPIO PD2CALL FIGMOVLW .5 ;ESPERO 5 mS.MOVWFICALL RET1mSMOVLW 30H ;MANDO 0X30 PUERTO BMOVWFPORTBCALL PUERTOMOVLW .1 ;ESPERO 1mSMOVWFI

Ing. Cabrera Hernández Luis

Page 54: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

CALL RET1mSMOVLW30H ;MANDO 0X30 PUERTO BCALL PUERTOMOVLW B'00011111' ;FUNCION SETCALL PUERTOMOVLW 0X08 ;DISPLAY OFFCALL PUERTOMOVLW 0X01 ;CLEAR DISPLAYCALL PUERTOMOVLW B'00000110' ;ENTRY MODECALL PUERTOMOVLW B'00001111' ;DISPLAY ONCALL PUERTO

CLRF NNCLRF OOCLRF KKCLRF CENTENASCLRF DECENASCLRF UNIDADESMOVLW .200MOVWFLMOVWFMMOVLW.100

CENT ADDWF CENTENAS,1SUBWF M,1INCF NN,1BTFSC STATUS,.0GOTO CENTMOVF L,0MOVWFMDECF NN,1MOVLW.100SUBWF CENTENAS,1MOVF CENTENAS,0SUBWF M,1MOVLW .10

DEC ADDWF DECENAS,1SUBWF M,1INCF OO,1BTFSC STATUS,.0GOTO DECMOVF L,0MOVWFMDECF OO,1MOVF CENTENAS,0SUBWF M,1MOVLW .10SUBWF DECENAS,1MOVF DECENAS,0SUBWF M,1MOVLW .1

UNI ADDWF UNIDADES,1SUBWF M,1INCF KK,1BTFSC STATUS,.0GOTO UNIDECF KK,1GOTO IMPR

Ing. Cabrera Hernández Luis

Page 55: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

RET1mS NOPRET MOVLW .1

MOVWFJNOP

NUEVO NOPNOPDECFSZ J,FGOTO NUEVODECFSZ I,FGOTO RETRETURN

PULSO BSF PORTD,.3MOVLW .1MOVWFICALL RET1mSNOPBCF PORTD,.3MOVLW .100MOVWFICALL RET1mSRETURN

PUERTO MOVWFPORTBCALL PULSORETURN

FIG BCF PORTD,RSGOTO LCD2

LCD1 BSF PORTD,RS

LCD2 BSF PORTD,EMOVWFPORTBCALL RETARDOBCF PORTD,ECALL RETARDORETURN

IMPR MOVF NN,0 ADDLW B'00110000'

CALL LCD1CALL RETARDOCALL RETARDOMOVF OO,0

ADDLW B'00110000'CALL LCD1CALL RETARDOCALL RETARDOMOVF KK,0

ADDLW B'00110000'CALL LCD1CALL RETARDOCALL RETARDO

YO GOTO YO

RETARDO MOVLW 01HMOVWFR13

RT1 MOVLW 02HMOVWFR14

Ing. Cabrera Hernández Luis

Page 56: Practicas de Microcontroladores

Tecnológico de Tlalnepantla

Microcontroladores

RT2 DECFSZ R14,RGOTO RT2DECFSZ R13,RGOTO RT1RETURN

END

IV. Bibliografía.- Data Sheet PIC16F887- www.wikipedia.com - www.monografias.com

V. Conclusiones.

Este curso está orientado a las personas que están interesadas en aprender a programar un PIC y ponen todo su empeño en ello, yo he puesto alguna información posible para la mejor compresión de las bases teóricas. Así pues además de aprender todo sobre el mundo del PIC, es necesario saber algo de electrónica y electrónica digital.

Lo más importante, es comprender como hacer la simulación con MPLAB, experimenta con MPLAB, lo más típico es errarle hasta que salga todo bien, creo que es la mejor forma de aprender, ya que estos programas son una pequeña parte de todo lo que se puede desarrollar con elPIC16F887

VI. Fecha de entregaDía de Entrega de la Práctica: 25 de Julio del 2012.

Ing. Cabrera Hernández Luis