Sunteți pe pagina 1din 74

MICROCONT ROLADORES

GUA DIDCTICA Docente: Ing. Pablo Zrate A.

Universidad Evanglica Boliviana

INDICE
UNIDAD 1: INTRODUCCION A LOS MICROCONTROLADORES
QUE ES UN MICROCONTROLADOR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 ARQUITECTURA DE LOS MICROCONTROLADORES. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 CARACTERISTICAS DE LOS MICROCONTROLADORES. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 MICROCONTROLADORES INTEL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 MICROCONTROLADORES MOTOROLA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 MICROCONTROLADORES PIC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

UNIDAD 2: MICROCONTROLADOR PIC16F84.


CARACTERISTICAS GENERALES. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 CONEXIN FISICA DEL PIC16F84 PARA SU OPERACIN. . . . . . . . . . . . . . . . . . . . . . . . . .10 ELABORACION DE CODIGO ASM EN ENTORNO MPLAB. . . . . . . . . . . . . . . . . . . . . . . . . .11 CONFIGURACION DE LOS FUSES DEL PIC16F84. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 GRABACION DE CODIGO HEX AL PIC16F84. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 SET DE INSTRUCCINES Y SU OPERACIN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16

UNIDAD 3: MANEJO DE LA MEMORIA Y PUERTOS DEL PIC16F84


ARQUITECTURA INTERNA DEL PIC16F84. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 DESCRIPCION Y USO DE LA MEMORIA DE PROGRAMA. . . . . . . . . . . . . . . . . . . . . . . . . . 20 DESCRIPCION Y USO DE LA MEMORIA DE DATOS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 OPERACIN DE INSTRUCCIONES Y REGISTRO DE TRABAJO. . . . . . . . . . . . . . . . . . . . . . . 23 MANEJO Y USO DE LOS PUERTOS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 ELABORACION DE CODIGO ASM EJEMPLO USO DE MEMORIA SUMA . . . . . . . . . . . . 24 PROGRAMACION DE CODIGO EN CIRCUITO CON LED Y PULSADOR. . . . . . . . . . . . . . . . 25 DESCRIPCION Y USO DE LA MEMORIA DE DATOS EEPROM. . . . . . . . . . . . . . . . . . . . . . . 26

UNIDAD 4: UTILIZACION DE LOS RECURSOS DEL PIC16F84.


MODOS DE DIRECCIONAMIENTO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 INSTRUCCINES DE LLAMADA Y SALTO (PILAS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 EDICION DE PROGRAMAS EN ENSAMBLADOR MPASM . . . . . . . . . . . . . . . . . . . . . . . . . . 29 ELABORACION DE CODIGO ASM EJEMPLO LLAMADAS Y SALTOS . . . . . . . . . . . . . . . . . 30 INTRODUCCION A LAS INTERRUPCIONES. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 ELABORACION DE CODIGO ASM EJEMPLO USO DE INTERRUPCION EXTERNA . . . . . . .32

Universidad Evanglica Boliviana

UNIDAD 5: USO DE LOS TEMPORIZADORES


ELABORACION DE RUTINAS DE RETARDO BASADAS EN BUCLE. . . . . . . . . . . . . . . . . . . . 34 INTRODUCCION AL TEMPORIZADOR TMR0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 MANEJO DE LA INTERRUPCION CON EL TEMPORIZADOR TMR0. . . . . . . . . . . . . . . . . . . 35

UNIDAD 6: MANEJO DEL DISPLAY DE 7 SEGMENTOS


INTRODUCCION AL DISPLAY DE 7 SEGMENTOS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 CONEXIN FISICA Y MODOS DE OPERACIN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 PROGRAMACION DE CIRCUITO CON DISPLAY DE 7 SEGMENTOS. . . . . . . . . . . . . . . . . . . 40 MANEJO DE VARIOS DISPLAY DE FORMA MULTIPLEXADA. . . . . . . . . . . . . . . . . . . . . . . . . 41

UNIDAD 7: MANEJO DEL LCD


INTRODUCCION AL LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43 CONEXION FISICA Y MODOS DE OPERACIN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 SET DE INSTRUCCIONES DE CONTROL Y DATOS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 ELABORACION DE RUTINAS ASM PARA USO DEL LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 PROGRAMACION DE EJEMPLO EN CIRCUITO CON LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

UNIDAD 8: MANEJO DEL KEYPAD


INTRODUCCION A LOS TECLADOS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 CONEXIN FISICA Y MODOS DE OPERACIN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 ELABORACION DE RUTINAS ASM PARA LECTURA DEL TECLADO. . . . . . . . . . . . . . . . . . . . .51

UNIDAD 9: MANEJO DE MOTORES PASO A PASO


INTRODUCCION A LOS MOTORES PASO A PASO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 PROGRAMACION ASM PARA CONTROLAR UN MOTOR PAP. . . . . . . . . . . . . . . . . . . . . . . . . 56

UNIDAD 10: USO DE LOS PUERTOS SERIALES


INTRODUCCION A LOS PUERTOS SERIALES. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59 CONEXIN FISICA Y MODOS DE OPERACIN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 ELABORACION DE RUTINAS ASM PARA COMUNICACIN SERIAL RS-232. . . . . . . . . . . . . . .61 INTRODUCCION AL PUERTO I2C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63 INTRODUCCION AL PUERTO SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64

Universidad Evanglica Boliviana

RESUMEN

Esta introduccin cubre las definiciones bsicas y caractersticas generales de los micro controladores (MCU). Tomando como elemento de aprendizaje al PIC16F84. Seguidamente, se detalla el procedimiento de cmo elaborar el programa en etapas, primero describiendo el conjunto de instrucciones disponibles y los pasos necesarios para pasar un grabar el programa al micro controlador. Luego, se realizan diversos programas de ejemplo, dividiendo esta gua en temas enfocados a la utilizacin de los recursos que dispone el PIC16F84, elaborando programas que permitan demostrar el uso de los puertos para conectar pulsadores, leds, displays, lcd, teclado, etc. Finalmente, se describen aplicaciones adicionales tales como la conexin con puertos seriales, manejo de interrupciones, y temporizadores.

ASIGNATURA: MICROCONTROLADORES

Universidad Evanglica Boliviana

OBJETIVOS GENERALES DE LA ASIGNATURA

Formacin Profesional.Desarrollar habilidades y valores que permitan interpretar y analizar el uso de dispositivos micro controladores en diversas aplicaciones electrnicas.

Formacin Productiva.Disear e implementar un proyecto que automatice una aplicacin especfica de mediana complejidad basado en el micro controlador PIC, que interconecte los puertos a diferentes dispositivos como ser mdulos de visualizacin Display y LCD, unidades de entrada como pulsadores y teclado con posibilidad de comunicacin serial con un computador.

Formacin Personal.Desarrollar los trabajos con honestidad y responsabilidad, siguiendo los estndares establecidos en la materia.

ASIGNATURA: MICROCONTROLADORES

Universidad Evanglica Boliviana

CRONOGRAMA DE MODULOS
SESIONES PRESENCIALES Unidad 1 Unidad 2 Unidad 3 Unidad 4 Unidad 5 Unidad 6 Unidad 7 Unidad 8 Unidad 9 Unidad 10 Introduccin a los MCU Microcontrolador PIC 16F84 Horas Horas Tericas Prcticas 4 hrs. 4 hrs. 0 hrs. 0 hrs. 5 hrs. 5 hrs. 5 hrs. 5 hrs. 5 hrs. 5 hrs. 5 hrs. 0 hrs. 35 hrs.

Manejo de Memoria y Puertos 4 hrs. Utilizacin de Recursos del PIC 4 hrs. Uso de los temporizadores Manejo del display de 7-Seg Manejo del LCD Manejo del teclado matricial Manejo de motores PAP Uso de los puertos seriales TOTAL HORAS 4 hrs. 4 hrs. 4 hrs. 4 hrs. 4 hrs. 4 hrs. 40 hrs.

EVALUACION Y ACREDITACION
La evaluacin es continua. El estudiante puede saber su progreso en la realizacin del modulo con solo preguntar al docente. El docente utiliza muchos momentos e instrumentos para evaluar al estudiante de la asignatura. UNIDADES A EVALUAR 1,2,3,4 5,6,7 7,8,9,10 1-10 1-10

mbito Evaluaciones Acumulativas Primer Parcial Segundo Parcial Examen Final Exmenes Cortos Productos Investigacin, Extensin y/o Produccin Trabajos Prcticos TOTAL

Puntaje 75 % 20 % 20 % 25 % 10 % 10 % 10 % 15 % 100 %

ASIGNATURA: MICROCONTROLADORES

Universidad Evanglica Boliviana

PROPUESTA EDUCATIVA DE LA ASIGNATURA


COMPETENCIA
Disear e implementar un proyecto que automatice una aplicacin especfica de mediana complejidad basado en el micro controlador PIC, que controlen o activen dispositivos tales como Teclados, Displays, Alarmas, etc. con posibilidad de comunicacin serial con un computador.

40 HORAS TEORICAS

40 HORAS PRCTICAS

PRODUCTOS

PRODUCTO 1
Proyecto de aplicacin basado en el micro controlador con interface a pc

PRODUCTO 2
Proyecto de aplicacin basado en el micro controlador que sea de servicio a la comunidad

INDICADORES Contiene: Propsito formativo. Defensas de laboratorios. Examenes cortos y parciales. Actividades de investigacin. Exposiciones en grupo. Aplicacin de los conocimientos. Participacin activa en clases.

INDICADORES Contiene: El proyecto es original sin violar el derecho de autor de otros proyectos? La aplicacin del proyecto es de beneficio a la sociedad? El proyecto fue elaborado analizando los costos y las mejores alternativas posibles? En caso de aplicarse, el proyecto puede ser implementado de forma factible?

ASIGNATURA: MICROCONTROLADORES

UNIDAD 1

INTRODUCCION A LOS MICROCONTROLADORES

I OBJETIVOS DEL TEMA


PROFESIONAL: Conocer las caractersticas generales del MCU (Micro controlador), as como su funcionamiento y composicin interna. PERSONAL: Despertar el inters en el estudiante para elaborar aplicaciones basadas en microcontrolador. PRODUCTIVO: Conocer la variedad actual de los MCU y sus capacidades para el desarrollo de una aplicacin.

II DESARROLLO DEL TEMA


EL MICROCONTROLADOR
Un MCU (Micro controlador), es un circuito integrado en cuyo interior se encuentra un CPU, Memoria y unidad de entrada salida E/S. Los MCU son simples ejecutores de instrucciones de propsito general, la verdadera utilidad proviene del programa almacenado en su memoria. La programacin del MCU puede ser desde una simple tarea hasta un sofisticado sistema de control de algo especfico, simplificando todo el diseo de una placa de reducido tamao y pocos componentes electrnicos. Debido a que internamente ya est provisto de Memoria y puertos de entrada y salida definidas no es posible la ampliacin o modificacin, razn por la que se denomina al MCU un sistema cerrado.

MEMORIA

CPU

UNIDAD E/S

CPU (Central Unit Processor): Es el ncleo de todo el sistema, su tarea es ejecutar las instrucciones del programa que permiten leer y escribir informacin en la unidad E/S y la memoria. Algunas instrucciones del programa involucran sencillas decisiones que causan que se contine ejecutando la prxima instruccin o bien que se la salte pasando a un nuevo punto dentro del programa, usualmente en un MCU hay solo un programa en ejecucin que atiende una aplicacin especfica de control. Internamente un CPU consta de: Unidad de Control: Es la unidad funcional primaria del microprocesador, utiliza seales de reloj para mantener la secuencia apropiada y llevar a cabo la tarea de procesamiento, despus de que cada instruccin ha sido obtenida y decodificada por el microprocesador, la circuitera de control enva las seales apropiadas a los dispositivos internos y externos iniciando la accin de procesamiento de una instruccin. Gua Didctica para Microcontroladores Universidad Evanglica Boliviana Ing. Pablo Zrate A.

UNIDAD 1

INTRODUCCION A LOS MICROCONTROLADORES

Unidad ALU: Es la parte del microprocesador que lleva a cabo las operaciones aritmticas y lgicas en los datos binarios. Como ser sumas, funciones lgicas AND, OR, XOR, complemento, rotaciones, etc. Adems contiene un conjunto de banderas que muestran informacin sobre el resultado de cada operacin. Registros Internos: Son unidades de almacenamiento temporal dentro del CPU, algunos tienen usos especficos y otros son de uso general. Como ser el contador de programa PC, registro de trabajo o acumulador. Memoria: Hay varios tipos de memoria que se utilizan para diversos propsitos. Un MCU consta de una memoria donde se almacena el programa que puede ser del tipo ROM, EPROM, EEPROM, FLASH EEPROM, etc. Y tambin dispone de una memoria de acceso aleatorio RAM donde se almacenan de forma temporal valores utilizados por el programa. Las capacidades de almacenamiento de estas memorias varan en cada modelo de MCU, por lo que uno debe hacer la eleccin correcta que se ajuste a la aplicacin que se elabora. Unidad E/S: Comnmente se refiere a los puertos. La unidad de entrada es la que suministra al MCU la informacin proveniente del mundo exterior mediante interruptores, teclados, sensores y otros dispositivos de captura. Como la informacin que se procesa es digital, algunos modelos de MCU tienen entradas analgicas que digitalizan las seales externas. La unidad de Salida sirve para que el sistema pueda suministrar informacin al mundo exterior a travs de visualizadores luminosos, pantallas numricas o alfanumricas, seales de control, contactores, etc.

ARQUITECTURA DE LOS MICROCONTROLADORES


En la arquitectura de los MCU, claramente se denotan dos esquemas de interconexin interna del hardware que son: Arquitectura Harvard: Las instrucciones y los datos se almacenan en memorias separadas para mejorar el rendimiento, ya que es posible el acceso simultneo a ambas memorias. Por otro lado, tiene el inconveniente de tener que dividir la cantidad de memoria entre los dos, por lo que funciona mejor slo cuando la frecuencia de lectura de instrucciones y de datos es aproximadamente la misma.

PROGRAMA

CPU

DATOS

UNIDAD E/S
Gua Didctica para Microcontroladores Universidad Evanglica Boliviana Ing. Pablo Zrate A.

UNIDAD 1

INTRODUCCION A LOS MICROCONTROLADORES

Arquitectura Von Neumann: En esta arquitectura se utiliza el mismo dispositivo de almacenamiento para las instrucciones y los datos, tcnicamente reduce la interconexin interna al utilizar un solo bus de datos.

PROGRAMA DATOS

CPU

UNIDAD E/S

Computacionalmente la arquitectura del MCU puede ser de tecnologa: RISC (Reduced Instruction Set Computer): Es un MCU con un juego de instrucciones reducido que realizan tareas especficas y simples, tomando un corto tiempo en ejecutarse. Sus caractersticas fundamentales son: o o Instrucciones de tamao fijo. Slo las instrucciones de carga y almacenamiento acceden a la memoria por datos.

RISC es ms rpida, pero ms costosa. Hablando en trminos de costo hay que pensar que RISC utiliza ms la circuitera para ejecutar operaciones directas donde el microprocesador est ms libre de carga. CISC (Complex Instruction Set Computer): Los microprocesadores CISC tienen un conjunto de instrucciones que se caracteriza por ser muy amplio y permitir operaciones complejas en la memoria o en los registros internos. Este tipo de arquitectura dificulta el paralelismo entre instrucciones, por lo que, en la actualidad, la mayora de los sistemas CISC de alto rendimiento implementan un sistema que convierte dichas instrucciones complejas en varias instrucciones simples del tipo RISC, llamadas generalmente microinstrucciones, hacindolo ms econmico pero ms lento debido a la carga que soporta el microprocesador.

CARACTERISTICAS DE LOS MICROCONTROLADORES


Un micro controlador MCU, est encaminado bsicamente hacia aplicaciones concretas, donde el espacio y nmero de componentes es mnimo, adems los cambios a ampliaciones futuras son casi nulos por tal motivo es imprescindible una correcta seleccin de la gran variedad de MCU que existen actualmente en el comercio. Seguidamente detallaremos las principales caractersticas a tomar en cuenta en la seleccin. Tipo de Procesador: Es la capacidad de manipulacin de datos y su tecnologa. Pueden ser de 8-bits, 16-bits, 32-bits, etc. Con tecnologa RISC o CISC. Velocidad: Valor en MIPS o MHz que indican la velocidad mxima para ejecutar las instrucciones.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

Ing. Pablo Zrate A.

UNIDAD 1

INTRODUCCION A LOS MICROCONTROLADORES

Memoria de Programa: Es la memoria donde se almacena el cdigo, mientras mayor sea su capacidad (1K-512K) ms cantidad de cdigo puede ser almacenado, actualmente son del tipo FLASH EEPROM que facilitan la reprogramacin a una mayor velocidad y menor consumo de energa. Pero tambin pueden ser del tipo OTP que solo se programa una nica vez, reduciendo el costo econmico en grandes cantidades de produccin. Memoria de Datos: Esta es la memoria de acceso aleatorio y que servir para almacenar valores temporales utilizados por el programa, tiene un tamao mucho menor (1K-64K) que la memoria de programa pero con tiempos de acceso muy rpidos. Memoria de Datos EEPROM: Esta es una memoria de datos no voltil reprogramable por cdigo, su acceso es ms lento que la memoria de datos principal, pero facilita almacenar valores que permanecern intactos en el MCU. Su capacidad es por lo general bastante reducida (64-1K) Voltaje de Operacin: Es el rango de Voltaje en la cual trabaja el MCU. Que van desde los 2V a 5.5V. Actualmente tecnologas de bajo consumo operan en los rangos inferiores 2.2V a 3.6V. Tipo de Encapsulado: Es la presentacin fsica del MCU, un chip integrado en un encapsulado que puede ser DIP (dual in-line plastic) en todas sus variantes, SOIC, SSOP, QFN, DFN, estos ltimos son para montaje en superficie. Pines de E/S: es la cantidad de lneas E/S que dispone el MCU para la conexin al mundo exterior. El modo de operacin entrada-salida puede ser fijo o configurable y Adems pueden ser digitales o analgicas. Perifricos: Adicionalmente los MCU estn provistos de perifricos internos que facilitan las tareas de procesamiento de la informacin, existe una gran variedad de componentes internos y solo detallaremos los ms comunes: o Conversores A/D: Son perifricos encargados de obtener valores analgicos de los puertos de entrada y digitalizarlos para su proceso. Un MCU integra conversores con resolucin que van desde los 8 a 16bits y varios canales de adquisicin. o Temporizadores: Los temporizadores son registros de 8 o 16 bits que pueden ser programados para autoincrementarse a cierta escala, permitiendo generar tiempos exactos dentro del programa. o Comparadores: Estos perifricos tienen la capacidad de comparar uno o ms valores analgicos externos de los puertos de entrada. o Puertos Seriales: Actualmente existen diversos protocolos de comunicacin serial, el objetivo de estos perifricos es permitir la interconexin con dispositivos seriales que utilizan estos protocolos. Existen puertos Seriales Sncronos, Asncronos, I2C, SPI, USB, CAN, Ethernet, etc. Gua Didctica para Microcontroladores Universidad Evanglica Boliviana 4 Ing. Pablo Zrate A.

UNIDAD 1

INTRODUCCION A LOS MICROCONTROLADORES

MICROCONTROLADORES INTEL
La familia de los MCU Intel es variada y se encuentra en diferentes presentaciones son procesadores del tipo CISC con arquitectura Harvard. MCS-48: Fue el primer MCU de Intel que sali en 1976 actualmente est obsoleto, en su poca fue utilizado en sintetizadores analgicos, consolas de juego y teclados para PC IBM, su variantes del 8048 fueron el 8035, 8049, 8748, 8749. MCS-51: Es un MCU desarrollado en 1980 y que fue muy popular hasta 1990 donde fue reemplazado por las versiones mejoradas. Originalmente constaba con un procesador de 8 bits, bus de datos de 8 bits, bus de direcciones de 16 bits, memoria RAM de 128 bytes , Memoria ROM de 4K, 4 puertos bidireccionales, 1 puerto UART, 2 contadores de 16 bits e interrupciones. Las versiones mejoradas llevan al mximo toda su capacidad de direccionamiento con mayor velocidad. MCS-151: Es una versin mejorada en adicin al clsico MCS-51, sus instrucciones y pinout son compatibles con el MCS-51 y MCS-251. Provee compatibilidad hacia atrs y adelante con la lnea MCS, incorpora perifricos comparadores, captura, modulacin, comunicacin serial mejorado, etc. MCS-251: Este MCU es el ms completo de la familia MCS, dispone de un CPU basado en registros de hasta 40 bytes, permitiendo la operacin con datos de 8,16 y 32 bytes. Con 256K de memoria ROM y 16K de memoria RAM es una versin muy por encima del MCS151. La siguiente tabla muestra una comparativa de las principales caractersticas de la familia MCS. MCS-51 Ejecucin Secuencial 12 ciclos por instruccin Basado en acumulador 16 bit Direccionamiento Hasta 64K Memoria ROM Hasta 64K Memoria ROM Hasta 256 byte de pila Instrucciones MCS 51 Instrucciones de 8 bit Bus cdigo de 8 bits Rendimiento 1X MCS-151 Ejecucin Segmentada (Pipeline) 2 ciclos por instruccin Basado en acumulador 16 bit direccionamiento Hasta 64K Memoria ROM Hasta 64K Memoria ROM Hasta 256 byte de pila Instrucciones MCS 51 Instrucciones de 8 bit Bus cdigo de 16 bits Rendimiento 5X MCS-251 Ejecucin Segmentada (Pipeline) 2 ciclos por instruccin Basado en registro hasta 40bytes 18 bit direccionamiento Hasta 16M Memoria RAM y ROM Hasta 16M Memoria RAM y ROM Hasta 64K byte de pila Instrucciones MCS 51 mejorada Instrucciones de 8 bit dato 16-32 Bus cdigo de 16 bits Rendimiento 15X

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

Ing. Pablo Zrate A.

UNIDAD 1

INTRODUCCION A LOS MICROCONTROLADORES

MICROCONTROLADORES MOTOROLA
Estos MCU siguen la arquitectura Von Neumann, La familia 68HC posee instrucciones de longitud variable y se considera que emplea una arquitectura CISC. Actualmente a partir del 2004 surge Freescale Semiconductor como una divisin de Motorola y fabricante actual de una gran variedad de MCU de 8,16 y 32 bits respectivamente. Los MCU de 8 bits estn clasificados en las siguientes familias RS8, HC8, HC5, HC11 y HCS8. De los cuales destaca el 68HC11 por sus recursos, simplicidad y facilidad de manejo. La siguiente imagen ilustra la composicin del MC68HC11A8.

Motorola describe al 68HC11 como un MCU de 8 bits con frecuencia de bus de 2MHz y una amplia lista de recursos internos. Capaz de ejecutar todas las instrucciones del M6800, M6801 y 91 ms que se han incorporado. A continuacin se ilustra una tabla comparativa de ciertos modelos de la familia HC11 MODELO MC68HC11A8 MC68HC11D3 MC68HC711ED3 MC68HC711E9 MC68HC711E20 RAM 256 192 192 512 768 ROM 8K 4K 0 12K 20K EPROM 0 0 4K 0 0 EEPROM 512 0 0 512 512 RECURSOS 1-TMR, 8-AD,SPI,SCI 1-TMR,SPI,SCI 1-TMR,SPI,SCI 1-TMR, 8-AD,SPI,SCI 1-TMR, 8-AD,SPI,SCI

Actualmente nuevos modelos correspondiente a las familias HC08 incorporan una variada cantidad de perifricos y puertos seriales basado en su procesador CPU08, los modelos de mayor rendimiento corresponden a la familia HCS8 y finalmente la familia RS08 diseado para aplicaciones con menor cantidad de pines en circuito

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

Ing. Pablo Zrate A.

UNIDAD 1

INTRODUCCION A LOS MICROCONTROLADORES

MICROCONTROLADORES PIC
Son los MCU fabricados por Microchip Technolgy Inc. Muy populares en la actualidad por la gran cantidad de informacin disponible y soporte brindado por microchip a travs de su web y seminarios de entrenamiento. Utilizan Arquitectura con tecnologa RISC Harvard y Actualmente cuenta con una gran variedad de MCU de 8, 16 y 32 bits enfocados para una determinada aplicacin, Actualmente los modelos MCU de 8 bits, estn clasificados como se ilustra en la siguiente imagen.

De acuerdo a esto podemos mencionar 4 gamas de PIC MCU de 8bits. Gama Bsica (Base Line Core): Rendimiento de hasta 5MIPS, 33 instrucciones de 12 bits, Memoria de programa de hasta 3K y datos 144 bytes, Pines de 6 a 40, Fcil uso y bajo costo. Gama Media (Mid Range Core): Rendimiento de hasta 5MIPS, 35 instrucciones de 14 bits, Memoria de programa de hasta 14K y datos 368 bytes, pines de 8 a 64, Excelente balance entre costo e integracin. Gama Media Mejorada (Enhanced Mid Range Core): Rendimiento de hasta 8MIPS, 35 instrucciones de 14 bits, Memoria de programa de hasta 56K y datos 4K , Pines de 8 a 64, Optimizado para programacin en C y reducida latencia de interrupcin. Familia PIC18 (Pic 18 Core): Rendimiento de hasta 16 MIPS optimizadas para C, Memoria de programa de hasta 4M y datos 4K, Pines de 18 a 100, Mejor rendimiento con perifricos avanzados.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

Ing. Pablo Zrate A.

UNIDAD 1

INTRODUCCION A LOS MICROCONTROLADORES

El MCU que utilizaremos para el aprendizaje es el popular PIC16F84 de la gama media y familia PIC16F. La siguiente imagen ilustra la arquitectura interna de esta familia.

Actualmente este PIC tiene la revisin A , siendo el modelo PIC16F84A actualmente fabricado por Microchip Technology. Mayores detalles de sus caractersticas pueden obtenerse de la hoja de datos en la documentacin 35007b del sitio web http://www.microchip.com.

II ACTIVIDADES DE PROFUNDIZACION E INTEGRACION


Que tipos de memoria son utilizadas actualmente en un MCU? Interfaces y protocolos de comunicacin utilizados? Verificar la disponibilidad en el comercio local? Investigar las caractersticas de los Procesadores DSP?

IV BIBLIOGRAFIA
Micro-controladores PIC Carlos A. Reyes RISPERGRAF Volumen 2 2006 Curso Introductorio sobre Micro-controladores HC7 HC9 Daniel Di Lella MOTOROLA Curso Avanzado de Micro-controladores PIC CEKIT Micro-controladores MCS-51 MCS-251 Jos Matas Alcal UPC

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

Ing. Pablo Zrate A.

UNIDAD 2

MICROCONTROLADOR PIC16F84

I OBJETIVOS DEL TEMA


PROFESIONAL: Conocer las caractersticas generales del micro-controlador PIC16F84, as como su funcionamiento y composicin interna. PERSONAL: Despertar inters en el estudiante para iniciarse en la elaboracin de aplicaciones basadas en micro-controladores PIC. PRODUCTIVO: Conocer las tcnicas y herramientas necesarias para la elaboracin de aplicaciones basadas en micro-controlador PIC.

II DESARROLLO DEL TEMA


CARACTERISTICAS GENERALES
El PIC16F84 de Microchip Technology Inc. Es uno de los MCU de 8-bits ms utilizados en proyectos electrnicos pequeos y de aprendizaje. Su fcil uso y precio reducido, lo han convertido en MCU muy popular y favorito en un gran rango de aplicaciones. A pesar de que este no posee muchas de las opciones de otros modelos ms nuevos como ser el PIC16F628 y el PIC16F88. Resulta muy apropiado para iniciar el aprendizaje. Algunas de sus caractersticas son:

1Kx14 de memoria de programa FLASH. 68 bytes de memoria RAM. 64 bytes de memoria de datos EEPROM. Opera hasta 20MHz en Rev. A. Pila de 8 niveles para rutinas de llamada. 4 Fuentes de interrupcin. 13 pines de Entrada/Salida TTL/CMOS. Temporizador, Contador de 8 bits.

DESIGNADOR
OSC1/CLKIN OSC2/CLKOUT MCLR RAx RBx VSS VDD

PIN 16 15 4 1-3,19-20 6-13 5 14

FUNCION Entrada externa para oscilador o cristal Salida para el cristal, en modo RC es una salida divida por 4 Al activarse este pin en bajo la unidad se reinicia Puerto Bidireccional programable Puerto Bidireccional programable Conexin a tierra 0V Fuente de alimentacin 5V

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

Ing. Pablo Zrate A. 9

UNIDAD 2

MICROCONTROLADOR PIC16F84

CONEXIN FISICA DEL PIC16F84 PARA SU OPERACIN


El encapsulado ms comn para este MCU es el DIP-18 y su rango de operacin es de 2 a 5.5V. La siguiente figura ilustra la conexin fsica en circuito necesaria para su operacin. En la cual se aprecia claramente la conexin a un circuito oscilador externo conformado por un cristal, este oscilador genera la seal de reloj necesaria para el funcionamiento del MCU y su velocidad define la rapidez en la ejecucin de las instrucciones.

El P1C16F84 puede utilizar cuatro tipos de reloj diferentes: RC. Oscilador con resistencia y condensador. XT. Cristal. HS. Cristal de alta velocidad. LP. Cristal para baja frecuencia y bajo consumo de potencia. La frecuencia de oscilacin (Fosc) indica solo la velocidad de oscilacin del reloj en cualquiera de sus modos. El uso de un cristal garantiza mayor precisin y observando la tabla se puede obtener el valor adecuado de los condensadores C1, C2 que dan mayor estabilidad. En cambio una combinacin resistencia condensador seria una opcin ms econmica y simple en aplicaciones donde no se requiera mucha precisin ni velocidad. MODO LP XT FREC. 32KHz 200KHz 100KHz 2MHz 4MHz 4MHz 20MHz C1/C2 68-100pF 15-33pF 100-150pF 15-33pF 15-33pF 15-33pF 15-33pF

HS

El ciclo de trabajo o ciclo de instruccin (Tcy), es el tiempo que demora ejecutarse una instruccin y puede ser calculado segn la siguiente relacin Tcy=4/Fosc.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

Ing. Pablo Zrate A. 10

UNIDAD 2

MICROCONTROLADOR PIC16F84

La elaboracin de programas en esta gua estar basada en un circuito de entrenamiento y mdulos adicionales. Se entregaran al estudiante el diagrama esquemtico y de circuito impreso para que pueda implementarlos y hacer las prcticas requeridas. TARJETA F84: Circuito Base de entrenamiento que consta de pulsador Reset, Led, Regulador 5V12V y puerto serial RS232. MODULO I/O: Tarjeta con 8 indicadores Led y 3 Pulsadores. MODULO 7 SEGMENTOS: Tarjeta con 2 Display de 7 segmentos y 2 pulsadores. MODULO CONTROL PAP: Tarjeta de control para motor PAP y 3 pulsadores. MODULO LCD: Tarjeta con display LCD.

ELABORACION DE CODIGO ASM EN ENTORNO MPLAB


Microchip Technology Inc. provee el ensamblador por defecto MPASM a travs de un ambiente integrado de desarrollo llamado MPLAB IDE (Integrated Development Environment), que puede descargarse gratuitamente a travs de su sitio web http://www.microchip.com. Una vez instalado MPLAB empezaremos creando un nuevo proyecto utilizando el asistente tal como se muestra en la siguiente imagen.

Una vez iniciado el asistente para creacin de proyectos, este nos guiara por cada ventana donde seleccionaremos la configuracin del proyecto en cuatro pasos detallados a continuacin: 1: Seleccin del dispositivo, se seleccionara PIC16F84 y presionar siguiente 2: Seleccin del lenguaje, se seleccionara Microchip MPASM y presionar siguiente 3: Creacin proyecto nuevo o reconfiguracin, en esta ventana ubicaremos una carpeta de trabajo y escribiremos un nombre Ej. test.mcp para nuestro nuevo proyecto y presionamos siguiente. 4: Adicin de archivos al proyecto, como se trata de un proyecto nuevo solo presionamos siguiente y listo. Gua Didctica para Microcontroladores Universidad Evanglica Boliviana Ing. Pablo Zrate A. 11

UNIDAD 2

MICROCONTROLADOR PIC16F84

Luego nos mostrara una venta indicando que el asistente termino de crear el proyecto y posteriormente se habilitara la ventana de edicin para proyectos. Ahora empezaremos a crear un nuevo archivo de edicin como se observa en la imagen.

Despues nos mostrara una ventana de edicion en blanco y sin titulo, es aqu donde escribiremos el codigo ASM del microcontrolador.

Cabe mencionar que ya sea despus o antes de escribir el cdigo ASM, es necesario guardar el archivo para asignarle un nombre, para ello seleccionamos en el men File -> Save As se abrir un cuadro de dialogo donde escribiremos el nombre Ej.: test.asm de esta manera nuestra ventana de edicin ya tendr un titulo y notaremos que el cdigo estar en colores para facilitar la edicin tal como se observa en la siguiente imagen.

Finalmente debemos agregar este archivo creado al proyecto, para realizar esto debemos ubicar el cursor sobre la carpeta Source Files y con un click derecho nos desplegara la opcin de agregar un archivo al proyecto. Gua Didctica para Microcontroladores Universidad Evanglica Boliviana Ing. Pablo Zrate A. 12

UNIDAD 2

MICROCONTROLADOR PIC16F84

Finalmente escribimos todo el cdigo del programa conformado por instrucciones, directivas, comentarios, definiciones y macros que utilizaremos durante esta gua en la elaboracin de los programas y prcticas que realizaremos en laboratorio durante el transcurso de la materia.

Una vez finalizada la edicin se debe compilar el cdigo y corregir en caso de notificacin de mensajes de error, para realizar esto seleccionamos en el men Project -> Make. Si la compilacin es exitosa, se creara automticamente el archivo HEX en la carpeta de trabajo, finalmente se grabara este archivo HEX en el PIC16F84 utilizando un programador de PIC.

CONFIGURACION DE LOS FUSES DEL PIC16F84


Los FUSES del PIC16F84 sirven para configurar ciertos aspectos especficos del MCU. Cada FUSE activa o desactiva una opcin de funcionamiento. A continuacin detallamos la funcin que cumplen cada uno. Gua Didctica para Microcontroladores Universidad Evanglica Boliviana Ing. Pablo Zrate A. 13

UNIDAD 2

MICROCONTROLADOR PIC16F84

OSC (Oscilador): Es el modo de oscilacin que va a usar el PIC siendo 4 las opciones a elegir RC, LP, XT y HS. Solo es posible seleccionar un modo. WDT (Watchdog Timer): Esta es una capacidad del PIC para auto reiniciarse. Es bastante til y su funcionamiento es sumamente sencillo. Simplemente consta de un registro que debemos borrar cada cierto tiempo. Si transcurrido un cierto tiempo el registro no ha sido borrado el PIC se reinicia. La instruccin para borrar el registro es CLRWDT. Con poner un par de ellos a lo largo de nuestro cdigo es suficiente para tener una garanta de que el PIC no se quede colgado. PWRT (Power Up Reset Timer): Si activamos este FUSE, lo que conseguimos es que se genere un retardo en la inicializacin del PIC. Esto se usa para que la tensin de alimentacin VDD se estabilice, por lo que se recomienda su uso. CP (Code Protect): Habilita la proteccin del cdigo grabado en el PIC impidiendo su lectura, de esta manera no es posible copiar el cdigo existente en el MCU.

GRABACION DE CODIGO HEX AL PIC16F84


La programacin de los MCU PIC se realiza mediante un protocolo serial sincrnico llamado ICSP (In Circuit Serial Programming) comnmente llamado programacin serie en circuito. Por este mtodo puede grabarse la memoria de programa FLASH, memoria de datos EEPROM y registros de configuracin directamente en la placa. Tambin es posible programar o bien actualizar el software del MCU sin tener que retirarlo de la tarjeta de circuito. No es necesario conocer o estudiar los fundamentos tericos del protocolo ICSP, solamente tenemos que estar familiarizados con las seales que lo conforman para evitar tener problemas a la hora de implementar la conexin. La comunicacin ICSP requiere de las siguientes seales: ICSPDAT o PGD: Seal bidireccional de datos. ICSPCLK o PGC: Seal de Reloj de Programacin VPP: Voltaje de Programacin, el MCU entra en el modo Programacin. VDD: Suministro de voltaje positivo. VSS: Negativo Una vez escrito nuestro cdigo ASM en MPLAB se proceder a la compilacin generando el cdigo HEX. Para poder grabar el cdigo HEX al MCU utilizaremos un circuito programador de los cuales existen varios algunos tienen su propio programa de grabacin mientras que otros se integran directamente con MPLAB. Utilizaremos un programador muy popular conocido como JDM.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

Ing. Pablo Zrate A. 14

UNIDAD 2

MICROCONTROLADOR PIC16F84

El programador Serial JDM es de fcil construccin ya que dispone de pocos elementos utilizando como alimentacin el puerto serial del ordenador. Los detalles del circuito se pueden encontrar en su pgina http://www.jdm.homepage.dk. El Software utilizado para grabar utilizando este programador es el IC-PROG que puede descargarse gratis en http://www.ic-prog.com. Bsicamente debemos seleccionar el modelo de PIC que vamos a utilizar y luego abrir el archivo HEX mediante File -> Open File. Una vez abierto se debe configurar los respectivos FUSES y finalmente grabar el cdigo en el PIC.

Tambin es necesario configurar en el IC-PROG, el puerto y programador que utilizaremos para hacer esto seleccionamos Settings-> Hardware, y buscamos JDM Programmer.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

Ing. Pablo Zrate A. 15

UNIDAD 2

MICROCONTROLADOR PIC16F84

Es necesario habilitar el Driver en caso de utilizar Windows 2000 o Windows XP, para lo cual ser necesario colocar el archivo icprog.sys en la carpeta de instalacin del programa.

SET DE INSTRUCCINES Y SU OPERACIN


Las instrucciones estn clasificadas segn su operacin en orientadas a bytes, bits, literales y de control. La sintaxis denota el uso de los siguientes registros y definiciones: W: Es el registro de trabajo y almacena datos de forma temporal. f : Es la direccin de un registro que interviene en la ejecucin. d : Es el destino donde se guarda el resultado de una operacin, y puede ser W o f. b: Es el numero de bit de 0-7 del registro f sobre la cual se opera. k: Es una constante literal que puede tomar valores entre 0 y 255. Gua Didctica para Microcontroladores Universidad Evanglica Boliviana Ing. Pablo Zrate A. 16

UNIDAD 2

MICROCONTROLADOR PIC16F84

Las instrucciones orientadas a bit actan directamente sobre un bit b del registro f y pueden usarse para leer o modificar un bit de forma individual. Ejemplo 1: bcf PORTA,2. Coloca en 0 el pin RA2. Ejemplo 2: btfss PORTA,2. Realiza un salto a la siguiente instruccin si el pin RA2 es 1 INSTRUCCIONES ORIENTADAS A BIT INSTRUCCION OPERACIN BCF f,b Limpiar bit b de f BSF f,b Activar bit b de f BTFSC f,b Probar bit b de f, saltar si cero BTFSS f,b Probar bit b de f, saltar si uno

BANDERAS Tcy 1 1 1 1

Las instrucciones orientadas a byte realizan operaciones lgicas o de carga de registros, operando con los 8 bits de un registro. El resultado de una operacin d puede terminar en el mismo registro f o el registro W. Ejemplo 1: movf PORTB,W . Carga el valor del puerto B al registro de trabajo. Ejemplo 2: movwf PORTB . Carga el valor del registro de trabajo al puerto de salida B. INSTRUCCIONES ORIENTADAS A BYTE INSTRUCCION OPERACION ADDWF f,d Sumar W y f ANDWF f,d AND entre W y f CLRF f Limpiar f CLRW Limpiar W COMF f,d Complementar f DECF f,d Decremento f DECFSZ f,d Decremento f, saltar si cero INCF f,d Incrementar f INCFSZ f,d Incrementar f, saltar si cero IORWF f,d OR entre W y f MOVF f,d Mover f MOVWF f Mover W a F NOP No Operacin RLF f,d Rotar a la izquierda a travs del carry RRF f,d Rotar a la derecha a travs del carry SUBWF f,d Restar W de f SWAPF f,d Intercambiar nibbles de f XORWF f,d OR exclusiva entre W y f

BANDERAS C, DC, Z Z Z Z Z Z Z Z Z

C C C,DC,Z Z

Tcy 1 1 1 1 1 1 1,2 1 1,2 1 1 1 1 1 1 1 1 1

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

Ing. Pablo Zrate A. 17

UNIDAD 2

MICROCONTROLADOR PIC16F84

Las instrucciones literales permiten cargar y operar con valores definidos en el registro de trabajo y las de control son utilizadas para llamadas, retorno y saltos en las que intervienen la carga de contador de programa y pilas de manera automtica. Ejemplo: addlw .10. Suma 10 al registro W INSTRUCCIONES LITERALES Y DE CONTROL INSTRUCCIN OPERACIN ADDLW k Sumar literal k a W ANDLW k AND entre k y W CALL k Llamar subrutina CLRWDT Limpiar WDT GOTO K Salta a direccin k IORLW K OR entre k y W MOVLW K Cargar W con literal k RETFIE Retornar de interrupcin RETLW K Retornar y cargar W con k RETURN Retornar de subrutina SLEEP Ir al modo de bajo consumo SUBLW K Restarle k a W XORLW K OR exclusiva entre k y W

BANDERAS C,DC,Z Z -TO,-TD Z

-TO,-TD C,DC,Z Z

Tcy 1 1 2 1 2 1 1 2 2 2 1 1 1

Todas las instrucciones se ejecutan en 1 ciclo de instruccin Tcy, a excepcin de las instrucciones de condicin, salto, llamada y retorno que demoran 2 ciclos. Se puede observar que algunas instrucciones modifican bits especficos del registro de estado, estos bits se denominan banderas. Por ejemplo al leer la bandera Z podramos saber si la operacin dio como resultado un 0. Un detalle ms especfico de la operacin de cada instruccin se puede encontrar en la hoja de datos del PIC16F84.

II ACTIVIDADES DE PROFUNDIZACION E INTEGRACION


Cul es la diferencia entre los modos de reloj XT, HS, LP y RC? Realizar el montaje de la tarjeta F84 en una placa PCB o Protoboard. Estudiar la Sintaxis requerida para el uso de cada instruccin.

IV BIBLIOGRAFIA
Micro-controladores PIC Carlos A. Reyes RISPERGRAF Volumen 2 2006 Curso Avanzado de Micro-controladores PIC CEKIT Hoja de Datos del Micro-controlador PIC16F84 Microchip 2001

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

Ing. Pablo Zrate A. 18

UNIDAD 3

MANEJO DE LA MEMORIA Y PUERTOS DEL PIC16F84

I OBJETIVOS DEL TEMA


PROFESIONAL: Conocer caractersticas generales del micro-controlador PIC16F84, as como su funcionamiento y composicin interna. PERSONAL: Despertar el inters en el estudiante para elaborar aplicaciones basadas en microcontroladores PIC. PRODUCTIVO: Conocer las capacidades integradas del PIC16F84 que nos ayuden en la elaboracin de aplicaciones utilizando al mximo sus recursos.

II DESARROLLO DEL TEMA


ARQUITECTURA INTERNA DEL PIC16F84
Este trmino se refiere a los bloques funcionales internos que conforman el MCU y la forma en que estn conectados la memoria de programa, memoria de datos, los puertos de entrada y salida, la lgica de control, temporizadores, etc.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

19

Ing. Pablo Zrate A.

UNIDAD 3

MANEJO DE LA MEMORIA Y PUERTOS DEL PIC16F84

La figura anterior nos muestra la arquitectura general del PIC16F84, en ella se pueden apreciar los diferentes bloques que lo componen y la forma en que se conectan. Todos los elementos se conectan entre s por medio de buses. Un bus es un conjunto de lneas que transportan informacin entre dos o ms mdulos. Vale la pena destacar que el PIC16F84 tiene un bloque especial de memoria de datos de 64 bytes del tipo EEPROM, adems de los dos bloques de memoria principales que son el de programa y el de datos o registros. El PIC16F84 se basa en la arquitectura Harvard, en la cual el programa y los datos estn en memorias separadas, lo que posibilita que las instrucciones y datos posean longitudes diferentes. Esta misma estructura es la que permite la superposicin de los ciclos de bsqueda y ejecucin, lo cual se ve reflejado en una mayor velocidad del MCU.

DESCRIPCION Y USO DE LA MEMORIA DE PROGRAMA


Es una memoria de 1K byte de longitud con palabras de 14 bits. Como es del tipo FLASH se puede programa y borrar elctricamente, lo que facilita el desarrollo de los programas y la experimentacin. Aqu se graba o almacena el programa que el MCU debe ejecutar. Dado que el PIC16F84 tiene un contador de programa de 13 bits, su capacidad de direccionamiento es de 8Kx14 pero solo tiene implementado 1Kx14 de 0x000 a 0x3FF, si se direccionan posiciones de memoria superior a 0x3FF se causara un solapamiento con el espacio del primer 1K. La siguiente figura ilustra el mapa de la memoria de programa Vector Reset: Cuando ocurre un reinicio al MCU, el contador de programa se pone en cero 0x000. Por esta razn, en la primera direccin del programa se debe escribir todo lo relacionado con el inicio del mismo Vector de Interrupcin: Cuando el MCU recibe una seal de interrupcin, el contador de programa apunta a la direccin 0x004 de la memoria de programa, por eso, all se debe escribir toda la programacin necesaria para atender dicha interrupcin. Existen instrucciones que modifican el valor del contador de programa, para realizar saltos, llamadas y retornos a direcciones definidas donde se encuentran rutinas de cdigo. Un ejemplo es la instruccin goto 0x10, que realiza un salto a una direccin 0x010 en la memoria de programa.

DESCRIPCION Y USO DE LA MEMORIA DE DATOS


El PIC16F84 puede direccionar 128 posiciones de memoria RAM, pero solo tiene implementados fsicamente los primeros 80 bytes de 0x00 a 0x4F. De estos los primeros 12 son registros que Gua Didctica para Microcontroladores Universidad Evanglica Boliviana 20 Ing. Pablo Zrate A.

UNIDAD 3

MANEJO DE LA MEMORIA Y PUERTOS DEL PIC16F84

cumplen un propsito especial en el control del MCU y se denominan registros SFR (Special Function Register). Y los 68 siguientes son registros de uso general que se pueden utilizar para guardar los datos temporales que necesita el programa principal. Los registros estn organizados como dos arreglos denominados bancos de 128 posiciones cada una, todas las posiciones se pueden acceder directa o indirectamente a travs del registro FSR. Para seleccionar el banco de registros deseado se utiliza el bit RP0 del registro STATUS, puede observar que los registros PCL, STATUS, FSR, PCLATH e INTCON estn ubicados en ambos bancos debido a que el acceso a estos registros es continuo y necesario.

00h INDF: Registro para direccionamiento indirecto. Utiliza el contenido del FSR y el bit RP0 del registro STATUS para seleccionar indirectamente la memoria de datos. 01h TMR0: Temporizador Contador de 8 bits. Se incrementa con una seal externa aplicada al pin RA4/TOCKI o una seal interna proveniente del MCU. 02h PCL: Contador de programa. Se utiliza para direccionar cada posicin de la memoria de programa donde se encuentra el cdigo con las instrucciones, como el contador de programa tiene un ancho de 13 bits. El primer byte denominado bajo est contenido en el registro PCL. Y los restantes 5 bits en PCH y se puede acceder indirectamente con el registro PCLATH.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

21

Ing. Pablo Zrate A.

UNIDAD 3

MANEJO DE LA MEMORIA Y PUERTOS DEL PIC16F84

Durante la ejecucin normal del programa, el registro PCL se incrementa con cada instruccin, a menos que se trate de una instruccin de salto o llamada. En una instruccin call o goto, los bits PC 10:0 se cargan desde el cdigo de operacin de la instruccin, mientras que los bits PC 11:12 lo hacen desde el registro PCLATH 4:3. 03h STATUS: Registro de estado. Contiene el estado aritmtico de la ALU. 81h OPTION: Registro de configuracin mltiple. Posee varios bits para configurar el temporizador, la interrupcin externa y el puerto B.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

22

Ing. Pablo Zrate A.

UNIDAD 3

MANEJO DE LA MEMORIA Y PUERTOS DEL PIC16F84

OPERACIN DE INSTRUCCIONES Y REGISTRO DE TRABAJO


El registro de trabajo W se comporta de manera similar al acumulador en los microprocesadores. Este registro participa en la mayora de las instrucciones. Ejemplos de su uso son: MOVF STATUS,W: Mueve el valor del registro STATUS al registro W MOVLW 0x10: Carga el registro W con el valor 0x10 MOVWF 0x0D: Mueve el valor del registro W al registro 0Ch. ADDWF 0x0C,W: Suma el registro 0Ch y W, el resultado se almacena en W

MANEJO Y USO DE LOS PUERTOS

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

23

Ing. Pablo Zrate A.

UNIDAD 3

MANEJO DE LA MEMORIA Y PUERTOS DEL PIC16F84

El PIC16F84 tiene disponible dos puertos bidireccionales, algunos pines estan multiplexados con funciones alternas de los perifricos. Puerto A: Es un puerto de 5 bits son del tipo TTL, la excepcin es el pin RA4/T0CKI que puede ser configurado como la entrada de una seal externa para el temporizador, adems que la salida es tipo colector abierto. Puerto B: Es un puerto de 8 bits tipo TTL, el pin RB0/INT puede configurarse para una interrupcin externa y en los pines RB4-RB7 se pueden habilitar unas resistencias internas pull-up cuando se requieran entradas de este tipo y tambin puede configurarse la interrupcin ON-CHANGE que detecta cuando una entrada cambio su valor. Estos puertos pueden leerse y escribirse mediante los registros PORTA y PORTB. Pero antes de realizar estas operaciones es necesaria su configuracin. Para esto existen dos registros que permite configurar cada pin de manera individual. 85h TRISA: Registro de configuracin del puerto A, un 0 en el bit correspondiente al pin lo configura como salida y un 1 como entrada. 86h TRISB: Registro de configuracin del puerto B, operacin similar al TRISA Para realizar la configuracin de los registros TRIS es necesario primero acceder al banco 1 de la memoria de datos y una vez terminada la configuracin se deber retornar nuevamente al banco 0 para recin utilizar los puertos. El siguiente ejemplo muestra como configurar y utilizar los puertos correctamente. bsf STATUS,RP0 movlw b00011111 movwf TRISA clrf TRISB bcf STATUS,RP0 movf PORTA,W movwf PORTB ; Selecciona Banco 1 ; Carga el valor binario al registro W ; Configura el Puerto A como entrada ; Configura el Puerto B como salida ; Selecciona Banco 0 ; Lee el Puerto A y lo almacena en el registro W ; Escribe el valor del registro W en el Puerto B

ELABORACION DE CODIGO ASM EJEMPLO SUMA


Con la finalidad de introducirnos en la edicin de programas ASM en MPLAB y el uso de las instrucciones, elaboraremos un programa que realice la suma dos registros _a y _b ubicados en las diferentes posiciones de la memoria de programa de propsito general GPR , cada instruccin tiene su comentario precedido por el smbolo ; el cual explica la operacin que realiza el resultado se almacenara en otro registro _r. Las instrucciones se visualizan con color azul oscuro, cabe mencionar que el modo de operacin del reloj y la configuracin de los fuses es realizado al momento de la programacin, habilitando o deshabilitando de manera individual mediante el programa utilizado para la grabacin del PIC. Gua Didctica para Microcontroladores Universidad Evanglica Boliviana 24 Ing. Pablo Zrate A.

UNIDAD 3

MANEJO DE LA MEMORIA Y PUERTOS DEL PIC16F84

list p=16F84 ;Identifica el tipo de MCU utilizado #include "P16F84.INC";Incluye la lista de definiciones para el PIC _a equ 0x0c ; define la direccin del registro _a _b equ 0x0d ; define la direccin del registro _b _r equ 0x0e ; define la direccin del registro _r org .0 ;el cdigo se almacena desde la direccin 0x000 en la ROM goto inicio ;Salta a inicio que empieza en la direccin 0x005 de la ROM org .5 ;el cdigo se almacena desde la direccin 0x005 en la ROM inicio movlw .5 ;carga el valor 5 al registro W W=5 movwf _a ;mueve el valor de W al registro _a _a=5 movlw .15 ;carga el valor de 15 al registro W W=15 movwf _b ;mueve el valor de W al registro _b _b=15 movf _a,W ;mueve el valor del registro _a al registro W W=5 addwf _b,W ;suma el valor del registro _b y W, el resultado se guarda en W=20 movwf _r ;mueve el valor del registro W a _r _r=20 end

PROGRAMACION DE CODIGO EN CIRCUITO CON LED Y PULSADOR


El segundo ejemplo consisten en realizar un programa que lea el estado del pulsador SW1 y nos muestre el valor mediante el led L1, para la practica utilizaremos la tarjeta F84 junto al modulo I/O list p=16F84 ;Identifica el tipo de MCU utilizado #include "P16F84.INC" ;Incluye la lista de definiciones para el PIC L1 equ .0 ; define el valor de D1 SW1 equ .0 ; define el valor de S1 org .0 ;el cdigo se almacena desde la direccin 0x000 en la ROM goto inicio ;Salta a inicio que empieza en la direccin 0x005 de la ROM org .5 ;el cdigo se almacena desde la direccin 0x005 en la ROM inicio bsf STATUS,RP0 ;Selecciona banco 1 bsf TRISA,S1 ;Configura pin RA0 como entrada bcf TRISB,D1 ;Configura pin RB0 como salida bcf STATUS,RP0 ;Selecciona banco 0 btfss PORTA ,S1;Verifica si pin RA0 es 1? salta a la siguiente instruccin goto s1_presionado ;el botn es presionado, salta a la etiqueta bcf PORTB,D1 ;el botn no est presionado, apaga el led D1 goto inicio ;retorna a inicio s1_presionado bsf PORTB,D1 ;el botn presionado, enciende el led D1 goto inicio ;retorna a inicio end ;fin del programa Gua Didctica para Microcontroladores Universidad Evanglica Boliviana Ing. Pablo Zrate A.

25

UNIDAD 3

MANEJO DE LA MEMORIA Y PUERTOS DEL PIC16F84

DESCRIPCION Y USO DE LA MEMORIA DE DATOS EEPROM


El PIC16F84 posee una memoria EEPROM de 64 bytes para almacenar datos no voltiles, y se puede acceder indirectamente mediante 4 registros SFR detallados a continuacin. 08h EEDATA: Contiene el dato que se escribir o se leer de la memoria EEPROM 09h EEADR: Contiene la direccin de la memoria EEPROM con la cual se trabaja 88h EECON1: Es el registro para el control de la memoria EEPROM de datos. 89h EECON2: Es el registro auxiliar para el control de la memoria EEPROM La memoria EEPROM de datos tiene un ciclo de aproximadamente 10.000.000 lecturas y escrituras y el tiempo de escritura est controlado por un temporizador interno, el proceso de escritura en esta memoria requiere una secuencia especial de instrucciones adems de un tiempo de espera determinado que puede ser manejado por la interrupcin EEIE o verificacin continua de la bandera EEIF. A continuacin se ejemplariza las rutinas necesarias para poder leer y escribir datos en la memoria EEPROM, tambin se detallan los bits del registro EECON1.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

26

Ing. Pablo Zrate A.

UNIDAD 3

MANEJO DE LA MEMORIA Y PUERTOS DEL PIC16F84

;Lectura de un dato de la memoria EEPROM movlw .10 ;Cargo el valor 10 al registro W movwf EEADR ;La direccin EEPROM es W bsf STATUS,RP0 ;Seleccionar banco 1 bsf EECON1,RD ;Inicia la lectura de la memoria EEPROM bcf STATUS,RP0 ;Seleccionar banco 0 movf EEDATA,W ;Mueve el valor el dato EEPROM a W ; Escritura de un dato EEDATA en la direccin EEADR de la EEPROM bsf STATUS,RP0 ;Selecciona banco 1 bsf EECON1,WREN ;Habilita la escritura en la memoria EEPROM movlw 0x55 ;Carga 55h al registro W movwf EECON2 ;EECON2=55h requerido para escritura movlw 0xAA ;Carga AAh al registro W movwf EECON2 ;EECON2=AAh requerido para escritura bsf EECON1,WR ;Iniciar la escritura en la memoria esperar btfsc EECON1,EEIF ;Verifica si finalizo escritura y salta goto esperar ;Repite condicin hasta terminar

II ACTIVIDADES DE PROFUNDIZACION E INTEGRACION


Aprendizaje del lenguaje ASM para MCU PIC. Realizar el Montaje de circuito electrnico F84 para pruebas. Uso de la memoria EEPROM de datos.

IV BIBLIOGRAFIA
Micro-controladores PIC Carlos A. Reyes RISPERGRAF Volumen 2 2006 Curso Avanzado de Micro-controladores PIC CEKIT Hoja de Datos del Micro-controlador PIC16F84 Microchip 2001

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

27

Ing. Pablo Zrate A.

UNIDAD 4

UTILIZACION DE LOS RECURSOS DEL PIC16F84

I OBJETIVOS DEL TEMA


PROFESIONAL: Conocer las caractersticas generales del micro-controlador PIC16F84, as como su funcionamiento y composicin interna. PERSONAL: Despertar el inters en el estudiante para elaborar aplicaciones basadas en microcontroladores PIC. PRODUCTIVO: Conocer las tcnicas y herramientas necesarias para la elaboracin de aplicaciones basadas en micro-controlador PIC.

II DESARROLLO DEL TEMA


MODOS DE DIRECCIONAMIENTO
Los modos de direccionamiento tratan la forma de mover los datos de unas posiciones de memoria a otras, Para el PIC16F84 existen 4 modos Direccionamiento inmediato: El dato manipulado por la instruccin se codifica con la propia instruccin. En este caso, el dato en cuestin se denomina literal. MOVLW .20; Mueve un valor literal 20 al registro W Direccionamiento directo: La memoria interna se direcciona de forma directa por medio de los 8 bits f contenidos en las instrucciones que operan sobre registros. De esta manera se puede direccionar cualquier posicin desde la 00h a la FFh. En los MCU que tengan ms de un banco, antes de acceder a alguna variable el programador deber asegurarse de haber programado los bits de seleccin de banco en el registro OPTION. Este modo consiste en codificar el nombre del o de los registros en cuestin directamente en la instruccin. MOVWF PORTB; Mueve el registro W al puerto B Direccionamiento bit a bit: Mediante este direccionamiento se manipula un bit individual en cualquier registro, este modo siempre va emparejado con el modo de direccionamiento directo. BCF PORTB,0; Coloca en 0 el pin RB0 Direccionamiento indirecto: Utiliza los registros INDF y FSR, en el registro FSR se introduce la direccin del registro que se quiere leer cuando se accede a INDF. FSR acta como un puntero. Si aumentamos o disminuimos con cualquier operacin el contenido de FSR nos moveremos entre las posiciones de memoria. MOVLW 06h; Coloca el valor 06h en el registro W MOVWF FSR; Mueve el valor del registro W al registro FSR CLRF INDF; Borra el contenido de la direccin 06h PORTB

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

28

Ing. Pablo Zrate A.

UNIDAD 4

UTILIZACION DE LOS RECURSOS DEL PIC16F84

INSTRUCCINES DE LLAMADA Y SALTO (PILAS)


El PIC16F84 incluye en su repertorio, instrucciones que permiten saltar a una rutina, y cuando se complementa su ejecucin, retornar al programa principal. El empleo de subrutinas aporta muchas ventajas entre la que se destacan las siguientes: Se pueden escribir como rutinas, secciones de cdigo empleadas en muchos programas. Dan a los programas un carcter modular. Se reduce notablemente el tiempo de programacin y la deteccin de errores, usando repetidamente una subrutina. El cdigo es ms fcil de interpretar, dado que las instrucciones de las subrutinas no aparecen en el programa principal. La instruccin GOTO consigue que la ejecucin del programa contine en la direccin donde se encuentra la subrutina a la que hace referencia una etiqueta. La instruccin CALL es similar a GOTO pero coloca en la pila la direccin de la siguiente instruccin que se debe ejecutar despus de CALL. Adems la subrutina finaliza con la instruccin RETURN que retorna la direccin guardada en la pila y la coloca en el contador de programa PC continuando el flujo con la instruccin que sigue a CALL. El PIC16F84 tiene disponible una pila de ocho niveles tipo FIFO. Si se produce la llamada a una subrutina durante la ejecucin de otra subrutina, la direccin de retorno de esta segunda es colocada en la cima de la pila sobre la direccin anterior. Esta segunda direccin es la primera en salir de la pila mediante la instruccin RETURN. Con la pila de ocho niveles, una subrutina puede llamar a otra y esta, a su vez, llamar a otra hasta un mximo de ocho niveles. En las instrucciones GOTO y CALL los 11 bits de menos peso del PC se suministran desde el cdigo OP. Los dos bits de ms peso del PC se cargan con los bits PCLATH 4:3. Como la memoria de programa se organiza en pginas de 2K, la posicin la seleccionan los 11 bits de menos peso, mientras que con los 2 bits de ms peso del PC se elige la pgina.

EDICION DE PROGRAMAS EN ENSAMBLADOR MPASM


Como se menciono anteriormente la programacin del cdigo, requiere editar lnea a lnea de forma ordenada toda la secuencia de instrucciones necesarias para que el MCU pueda ejecutar la operacin requerida en el sistema. Esta secuencia de instrucciones es el llamado cdigo fuente ASM, y el entorno MPLAB nos facilita su edicin a travs de herramientas que nos permiten identificar, simular y corregir errores antes de grabar el MCU. El cdigo fuente de un programa ASM contiene bastantes lneas entre las cuales podemos distinguir 4 tipos que son interpretados por el compilador para generar al cdigo HEX.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

29

Ing. Pablo Zrate A.

UNIDAD 4

UTILIZACION DE LOS RECURSOS DEL PIC16F84

Comentarios: Son textos que se utilizan para explicar las diferentes operaciones de cada lnea en el programa, todo comentario empieza con ;. Facilitan el trabajo del programador. Etiquetas: Son utilizados para representar una lnea, grupo de cdigo o un valor constante que son utilizadas en las instrucciones de salto y llamada. Neumonicos: Son las instrucciones o comandos que se ejecutaran en el MCU. Directivas: Son comandos de ensamblador que no se traducen en instrucciones para el MCU. Es decir son las operaciones que el compilador MPASM utilizara para generar el archivo HEX. Macros: Es un conjunto de instrucciones y directivas definidas por el usuario y que pueden evaluarse lnea a lnea junto al cdigo ASM siempre que el macro sea incluido.

ELABORACION DE CODIGO ASM EJEMPLO LLAMADAS Y SALTOS


Title Suma del Puerto A y B list p=16F84; #include "P16F84.INC" resul equ 0x0e org 0x00 goto inicio org 0x05 inicio bsf STATUS,RP0 movlw FFh movwf TRISA movwf TRISB repetir bcf STATUS,RP0 call suma goto repetir suma: movf PORTA,W addwf PORTB,W movwf result return a end

;Salto a etiqueta inicio ;Declaracin etiqueta inicio ; Selecciona el banco 1 ; Coloca el valor 255 al registro de trabajo ; Configura todo el Puerto A como entrada ; Configura todo el Puerto B como entrada ;Declaracin etiqueta repetir ; Selecciona banco 0 ; Llama a subrutina suma ; salto a repetir ;Declaracin etiqueta suma ; Carga el valor del puerto A al registro W ; Suma el Puerto B y W, el resultado est en W ; Mueve el valor de W al registro result

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

30

Ing. Pablo Zrate A.

UNIDAD 4

UTILIZACION DE LOS RECURSOS DEL PIC16F84

INTRODUCCION A LAS INTERRUPCIONES


El PIC16F84 incluye el manejo de interrupciones, lo cual representa grandes ventajas. Dispone de 4 fuentes de interrupcin que son: Interrupcin externa en el pin RB0/INT, que puede configurarse para activarse con un flanco de subida o bajada con el bit INTEDG. Finalizacin del temporizador contador TMR0, la superacin del conteo mximo FFh en el registro TMR0 colocara el bit T0IF en uno. Finalizacin de escritura en la EEPROM de datos. Cuando la escritura de un dato en la EEPROM finaliza, se coloca en 1 el bit EEIF. Cambio de nivel en los pines RB4 a RB7. Un cambio en los pines del PORTB 7:4 colocara en uno el bit RBIF.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

31

Ing. Pablo Zrate A.

UNIDAD 4

UTILIZACION DE LOS RECURSOS DEL PIC16F84

0Bh INTCON: Contiene las banderas de las interrupciones y bits de activacin individual de las interrupciones, solo la bandera de finalizacin de escritura en la memoria EEPROM se encuentra en EECON1. Cuando una interrupcin atendida, el bit GIE se coloca automticamente en 0, para evitar interferencias con otras interrupciones que se pudieran presentar, la direccin de retorno se coloca en la pila y el PC se carga con la direccin 04h. Una vez en la rutina de servicio, la fuente de la interrupcin se puede determinar examinando las banderas de interrupcin. La bandera respectiva se debe colocar por software, en cero antes de regresar de la interrupcin, para evitar que se vuelva a detectar nuevamente la misma interrupcin. La instruccin RETFIE permite al usuario retornar, a la vez que habilita de nuevo las interrupciones GIE. Debe tomarse en cuenta que solo el contador es puesto en la pila cuando se atiende una interrupcin, por lo tanto es conveniente que el programador guarde los STATUS y W para evitar resultados inesperados.

ELABORACION DE CODIGO ASM USO DE INTERRUPCION EXTERNA


Un claro ejemplo de cmo elaborar la rutina de servicio a la interrupcin ISR, se observa a continuacin, bsicamente consiste en un pulsador conectado al pin RB0, el cual genera una seal de interrupcin cuando es presionado y carga al PC con la direccin 004h. Previamente en el programa principal se debern habilitar los bits RBIE y GIE, adems de colocar en 0 el bit INTEDG del registro OPTION porque se trata de un flanco descendente. El programa enciende un led cuando el pulsador es presionado de acuerdo al siguiente circuito. list p=16F84 #include "P16F84.INC" org 0 goto inicio org 4 btfss INTCON,INTF goto final call retardo_10ms continuar btfsc PORTB,0 goto int_final bsf PORTA,1 goto continuar final bcf INTCON,INTF bcf PORTA,1 retfie

; Saltar a etiqueta inicio ; Almacena el cdigo desde la direccin 004h ; Verifica si es una interrupcin externa ; No es interrupcin externa y a final ; Subrutina que espera 10ms ; Verifica estado del pulsador en RB0 ; Si est presionado el pulsador, activa el led

; Limpia el flag ; Desactiva el led

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

32

Ing. Pablo Zrate A.

UNIDAD 4 inicio

UTILIZACION DE LOS RECURSOS DEL PIC16F84

bsf STATUS,RP0 ; Selecciona banco 1 clrf TRISA ; Configura Puerto A como salida movlw 0x01 movwf TRISB ; Configura pin RB0 como entrada bcf OPTION_REG,INTEDG; Activa el flanco descendente bcf STATUS,RP0 ; Selecciona banco 0 bsf INTCON,INTE ; Activa la interrupcin externa bsf INTCON,GIE ; Activa la interrupcin global bucle goto bucle end

II ACTIVIDADES DE PROFUNDIZACION E INTEGRACION


Conocer las ventajas que tiene el direccionamiento indirecto. Realizar el Montaje para pruebas de interrupcin. Estudiar detalladamente el uso de cada interrupcin.

IV BIBLIOGRAFIA
Micro-controladores PIC Carlos A. Reyes RISPERGRAF Volumen 2 2006 Curso Avanzado de Micro-controladores PIC CEKIT Hoja de Datos del Micro-controlador PIC16F84 Microchip 2001

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

33

Ing. Pablo Zrate A.

UNIDAD 5

USO DE LOS TEMPORIZADORES

I OBJETIVOS DEL TEMA


PROFESIONAL: Conocer el manejo y uso de los temporizadores utilizados en el micro-controlador PERSONAL: Despertar el inters en el estudiante para elaborar aplicaciones basadas en microcontroladores PIC. PRODUCTIVO: Brindar los conocimientos necesarios para la elaboracin de rutinas de tiempo utilizados en las aplicaciones actuales.

II DESARROLLO DEL TEMA


Cuando se requiere control del tiempo en el MCU, puede emplearse rutinas de retardo utilizando cdigo(bucle), o mediante el Temporizador TMR0.

ELABORACION DE RUTINAS DE RETARDO BASADAS EN BUCLE


La generacin de retardo basado en bucle, consiste en contar la cantidad de ciclos utilizados por una rutina y los tiempos necesarios para su ejecucin provocando una demora controlada. Bsicamente es un contador tal como se observa a continuacin: retardo_100us: movlw .30 movwf t0 retardo_100us_b decfsz t0,F goto retardo_100us_b return ; Rutina para retardo de 100uS ; Carga registro W con valor .30, 1Tcy ; Mueve W al registro t0, 1Tcy ; Etiqueta de bucle ; Decremento y saltar si t0=0, 1Tcy ; Repetir otra vez, 2Tcy ; Retorno, 2Tcy

Es importante recordar que en todos los ejemplos citados en esta gua, se considera utilizar un cristal de 4MHz, por lo tanto el tiempo que demora la ejecucin de una instruccin Tcy=1uS.

INTRODUCCION AL TEMPORIZADOR TMR0


El temporizador contador TMR0 es un particular tipo de registro cuyo contenido es incrementado con una cadencia regular y programable (Preescalar) directamente por el hardware del PIC. En la prctica, a diferencia de los otros registros, el TMR0 no mantiene constante el valor que posee memorizado, si no que los incrementa continuamente y totalmente independiente de la ejecucin del resto del programa. Una vez alcanzado el valor 255, el registro TMR0 es puesto a cero automticamente iniciando nuevamente el conteo desde 0, la frecuencia de conteo es directamente proporcional a la frecuencia de reloj aplicada al chip y puede ser modificada programando adecuadamente algunos bits de configuracin. En la siguiente figura se representa la cadena de bloque internos del PIC que determina el funcionamiento del registro TMR0. Gua Didctica para Microcontroladores Universidad Evanglica Boliviana Ing. Pablo Zrate A.

34

UNIDAD 5

USO DE LOS TEMPORIZADORES

Los impulsos de entrada del temporizador pueden ser externos mediante el pin RA4/T0CK1 o bien de una seal de reloj interno, de forma que puede funcionar de dos modos distintos: Contador de impulsos que entran por RA4/T0CK1, se programa el bit T0SE del registro OPTION, si T0SE=1 el flanco es descendente y si T0SE=0 el flanco es ascendente. Como temporizador de tiempos, se cuentan los impulsos de la frecuencia, teniendo en cuenta que un ciclo de maquina ocupa 4 ciclos del cristal oscilador, el MCU tiene la posibilidad de utilizar un divisor de frecuencia llamado PRESCALER. El divisor PRESCALER puede ser asignado al TMR0 o al WDT(Watch Dog Timer), mediante el bit PSA. Para configurar el modo contador o temporizador hay que acceder al registro OPTION y actuar sobre el bit T0CS, si T0CS=1 el TMR0 acta como contador y caso contrario acta como temporizador. El WDT demora un tiempo tpico de 18ms antes de reiniciar el MCU, es posible ampliar este tiempo utilizando el PRESCALER mediante el bit PSA=0 para obtener tiempos de hasta 2,3Seg. retardo_10ms: movlw .256-.40 bcf INTCON,T0IF movwf TMR0 retardo_10ms_1: btfss INTCON,T0IF goto retardo_10ms_1 return ;retardo de 10ms usando el TMR0 ;Total (256*40)=10,240ms ;Borra o inicia la bandera del TMR0 ;Carga el valor inicial a TMR0 ;

MANEJO DE LA INTERRUPCION CON EL TEMPORIZADOR TMR0


El modulo contador temporizador dispone de una interrupcin que es generada cuando el registro TMR0 sobrepasa de FFh a 00h, activndose la bandera T0IF del registro INTCON, esta bandera debe ser borrada por programa antes de habilitar la interrupcin con el bit T0IE o antes de finalizar la rutina ISR con la finalidad de evitar un reingreso. Con el uso de interrupcin las rutinas de tiempo trabajaran sin afectar la ejecucin del programa principal. Gua Didctica para Microcontroladores Universidad Evanglica Boliviana Ing. Pablo Zrate A.

35

UNIDAD 5

USO DE LOS TEMPORIZADORES

El siguiente programa ilustra la forma de cmo utilizar el temporizador mediante la rutina ISR para el circuito base, que encender y apagara el led D2 cada 0,5seg. Title Retardo con TMR0 list p=16F84 #include "P16F84.INC" var_t0 equ 0x0c org 0 goto inicio org 4 btfss INTCON,T0IF goto final decfsz var_t0,1 goto int_noesz btfss PORTA,4 goto encender_led bcf PORTA,4 goto seguir encender_led bsf PORTA,4 seguir movlw .50 movwf var_t0 int_noesz movlw .255-.39 movwf TMR0 final bcf INTCON,T0IF retfie inicio bsf STATUS,RP0 clrf TRISA movlw b'11000111' movwf OPTION_REG bcf STATUS,RP0 movlw b'00100000' movwf INTCON movlw .50 movwf var_t0 movlw .256-.39 movwf TMR0 bsf INTCON,GIE inicio_bucle goto inicio_bucle end

; Variable utilizada para retardo 0,5 Seg

; Verifica si es una interrupcin TMR0 ; Si T0IF=0 , salta al final y termina ; Si T0IF=1, decrementa la variable y salta si es 0 ; Salto a etiqueta si no es 0 la variable ; Verifica si el led esta encendido ; Si est apagado, salta a etiqueta ; Apaga el led ; Enciende el led ; Carga valor para conteo 50x10ms=500ms ; Carga valor a la variable ; Ajuste valor para retardo 10ms ; 1uSx256x39=10mS ; Limpia la bandera del temporizador ; Sale de rutina ISR ; Selecciona banco 1 ; Configura el Puerto A como salida ; Asigna el Preescaler a T0 con 1:256 ; Configura el registro OPTION ; Selecciona banco 0 ; Activa la interrupcin T0IE ; Inicializa la variable en 50 ; Carga el valor para retardo 50x10ms=500ms ; Carga Valor para retardo 10ms ; Activa la interrupcin global ; Repetir bucle

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

36

Ing. Pablo Zrate A.

UNIDAD 5

USO DE LOS TEMPORIZADORES

II ACTIVIDADES DE PROFUNDIZACION E INTEGRACION


Cules son las ventajas y desventajas de utilizar bucles o el TMR0? Realizar el Montaje para pruebas de interrupcin. Qu ventajas se tiene al utilizar la interrupcin del TMR0?

IV BIBLIOGRAFIA
Micro-controladores PIC Carlos A. Reyes RISPERGRAF Volumen 2 2006 Curso Avanzado de Micro-controladores PIC CEKIT Hoja de Datos del Micro-controlador PIC16F84 Microchip 2001

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

37

Ing. Pablo Zrate A.

UNIDAD 6

MANEJO DEL DISPLAY DE 7 SEGMENTOS

I OBJETIVOS DEL TEMA


PROFESIONAL: Obtener conocimiento sobre el manejo del display de 7 segmentos. PERSONAL: Despertar el inters en el estudiante para elaborar aplicaciones basadas en microcontroladores PIC utilizando display de 7 segmentos. PRODUCTIVO: Conocer las tcnicas y herramientas necesarias para la elaboracin de aplicaciones basadas en micro-controlador PIC utilizando display de 7 segmentos.

II DESARROLLO DEL TEMA


INTRODUCCION AL DISPLAY DE 7 SEGMENTOS
Los display de 7 segmentos, son componentes que se utilizan para la representacin de nmeros en muchas aplicaciones electrnicas. Son por dems conocidos y muy usados en los equipos electrnicos desde hace aos, y no ofrecen ningn tipo de dificultad. Se los utiliza, en general, en forma directa o multiplexada. Sus principales caractersticas son:

Excelente Solidez. Angulo de visibilidad 150 grados. Bajo Consumo 150 mW. Vida media en horas: 100000. Buena luminosidad. Alto contraste. Conector con pines Rpida respuesta Facilidad de montaje Voltaje de operacin: 1,5 V

El voltaje de operacin VCC depende del color del Led. Para un color rojo por ejemplo lo comn es 1,7V-2V. Dependiendo de la tensin aplicada obtendremos una intensidad. Es aconsejable no sobrepasar el VCC recomendado. Si se alcanza la VCC mxima se puede destruir el segmento. Cada segmento y el punto es un Led como cualquier otro. Debido a esto la corriente media que se debe aplicar es de 15mA. Dependiendo de la lgica que estemos empleando debemos utilizar una resistencia por cada entrada y as no forzar el dispositivo. Esta resistencia se denomina resistencia limitadora y un valor aconsejable seria 220 ohm en lgica TTL (5V) y 680 ohm en lgica CMOS (12V), la resistencia limitadora debe estar situada en cada pin haciendo un puente entre la seal lgica de excitacin y el segmento correspondiente al display Gua Didctica para Microcontroladores Universidad Evanglica Boliviana 38 Ing. Pablo Zrate A.

UNIDAD 6

MANEJO DEL DISPLAY DE 7 SEGMENTOS

Una de las aplicaciones ms populares de los Led es la de sealizacin y quizs la ms utilizada sea la del Display de 7 segmentos colocados en forma de ocho. Aunque externamente su forma difiere considerablemente de un diodo Led tpico, internamente estn constituidos por diodos Led con unas determinadas conexiones internas. En la siguiente figura se indica el esquema elctrico de las conexiones del interior de un indicador luminoso de 7 segmentos. De acuerdo a su arreglo interno pueden clasificarse en dos tipos: nodo comn y Ctodo comn.

Un display contiene siete LED rectangulares en el que cada uno recibe el nombre de segmento porque forma parte del smbolo que est mostrando. Con un indicador de siete segmentos se pueden formar los dgitos del 0 al 9, tambin las letras a, c, e y f y las letras minsculas b y d. Polarizando los diferentes diodos, se iluminaran los segmentos correspondientes. El ctodo comn CC se refiere a que el extremo ctodo de cada segmento est conectado a un punto comn y nodo comn CA es cuando el punto comn est conectado al extremo nodo de cada segmento. Observe que la polarizacin correcta ser diferente para CC y CA

CONEXIN FISICA Y MODOS DE OPERACIN


Los Display de 7 segmentos vienen en variadas presentaciones variando en tamao, color, orientacin y arreglos que constan de ms de un digito para facilitar el diseo de un proyecto, para nuestro aprendizaje utilizaremos un Display de un solo digito del tipo ctodo comn cuya configuracin fsica de los segmentos se observa en la figura de abajo. Para la practica e implementacin del circuito utilizaremos la tarjeta Base F84 y el modulo DISPLAY 7 SEG, la cual Gua Didctica para Microcontroladores Universidad Evanglica Boliviana Ing. Pablo Zrate A.

39

UNIDAD 6

MANEJO DEL DISPLAY DE 7 SEGMENTOS

contiene 2 display de 7 segmentos D1-D2 conectados al MCU a travs del puerto B, si observa el circuito esquemtico notara que se utilizan resistencias limitadoras de 220 Ohm con lo cual se tendr una corriente de 22mA por segmento, cabe recordar que el PIC16F84 es capaz de suministrar hasta 25mA por pin lo que posibilita la conexin directa al Display, caso contrario tendramos que utilizar un Driver como el ULN2003 o ULN2004. Tambin puede observar que la terminal CC de cada display se conecta al colector de un transistor NPN, cuya finalidad es de activar o desactivar y de esta forma poder conectar varios display a un solo bus de datos manteniendo activo un solo display en un determinado momento.

PROGRAMACION DE CIRCUITO CON DISPLAY DE 7 SEGMENTOS


Ahora se realizara la programacin necesaria para el uso del Display de 7 Segmentos, conforme al esquema del circuito. Bsicamente consistir en un contador que mostrara los nmeros del 0 al 9 con intervalos de 1 segundo. Como cada nmero debe mostrarse en el Display, debemos realizar una codificacin para cada letra y su respectivo valor binario que enviara el MCU. En el tipo ctodo comn un valor lgico 1 encender el segmento de esta manera nuestra tabla ser: Display: addwf PCL,F retlw b'00111111' retlw b'00000110' retlw b'01011011' retlw b'01001111' retlw b'01100110' retlw b'01101101' retlw b'01111101' retlw b'00000111' retlw b'01111111' retlw b'01101111' Digito 0 1 2 3 4 5 6 7 8 9 p 0 0 0 0 0 0 0 0 0 0 g 0 0 1 1 1 1 1 0 1 1 f 1 0 0 0 1 1 1 0 1 1 e 1 0 1 0 0 0 1 0 1 0 d 1 0 1 1 0 1 1 0 1 1 c 1 1 0 1 1 1 1 1 1 1 b 1 1 1 1 1 0 0 1 1 1 a 1 0 1 1 0 1 1 1 1 1

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

40

Ing. Pablo Zrate A.

UNIDAD 6

MANEJO DEL DISPLAY DE 7 SEGMENTOS

La llamada a la rutina Display que se observa en la imagen de arriba, devuelve como resultado en el registro W el cdigo binario que representara un nmero decimal del 0 al 9. Este nmero debe ser cargado previamente en el registro W antes de la llamada a Display. list p=16F84; #include "P16F84.INC" num equ 0x0c ; declaracin variable num t0 equ 0x0e ; declaracin variable t0 org 0 goto inicio org 5 inicio: clrf num ; inicializar num=0 bcf STATUS,RP0 ;seleccionar banco 0 clrf PORTA ;inicializar PORTA clrf PORTB ;inicializar PORTB bsf STATUS,RP0 ;seleccionar banco 1 clrf TRISA ;configura puerto A como salida clrf TRISB ;configuro puerto B como salida movlw b'11010111' ;configuro Prescalar 1:256 movwf OPTION_REG bcf STATUS,RP0 ;selecciono banco 0 bsf PORTA,D1 ;activa el Display inicio_bucle movf num,W ;carga el valor del numero a W call Display ;muestra el numero en el Display movwf PORTB call retardo_seg;esperar 1seg incf num,W ;incrementar el numero movwf num sublw .9 ;verificar si el numero es mayor a 9 btfss STATUS,C clrf num ; sin num es mayor a 9 => num =0 goto inicio_bucle

MANEJO DE VARIOS DISPLAY DE FORMA MULTIPLEXADA


Cuando se desea representar dgitos en dos o ms Display de 7 segmentos, es comn utilizar la tcnica de multiplexar, donde el MCU genera las seales para manejar los puntos comunes nodo o ctodo por un lado y los segmentos por el otro, de esta manera es posible conectar varios Displays al mismo puerto o bus de datos del MCU.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

41

Ing. Pablo Zrate A.

UNIDAD 6

MANEJO DEL DISPLAY DE 7 SEGMENTOS

Un barrido a una determinada frecuencia activara y desactivara uno a uno los Diplays conectados hacindolo imperceptible a la vista del ser humano. En el esquema del modulo DISPLAY 7 SEG se puede ver la manera de cmo interconectar dos Display tipo ctodo comn donde cada modulo se activa solo si el transistor es polarizado en su base con un nivel lgico 1. El consumo de energa seguir siendo el mismo que utilizando un Display de forma directa, puesto que solo se enciende un Display en un determinado tiempo. Lo que si ser notable es el brillo que se reducir al utilizar mayor cantidad de Display. En la prctica se demostrara la utilizacin de esta tcnica para un contador del 00-99 que se incrementara cada cierto tiempo ajustado por cdigo.

II ACTIVIDADES DE PROFUNDIZACION E INTEGRACION


Realizar programa para manejar varios display simultneamente. Realizar el montaje y programacin en circuito para pruebas. Realizar la codificacin para un display CA.

IV BIBLIOGRAFIA
Micro-controladores PIC Carlos A. Reyes RISPERGRAF Volumen 2 2006 Curso Avanzado de Micro-controladores PIC CEKIT Hoja de Datos del Micro-controlador PIC16F84 Microchip 2001. Esquemticos y Hoja de datos FUTURLEC

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

42

Ing. Pablo Zrate A.

UNIDAD 7

MANEJO DEL LCD

I OBJETIVOS DEL TEMA


PROFESIONAL: Tener conocimiento para manejo del modulo LCD. PERSONAL: Despertar el inters en el estudiante para elaborar aplicaciones basadas en microcontroladores PIC utilizando modulo LCD. PRODUCTIVO: Conocer las opciones y ventajas que brinda integrar un modulo LCD en un sistema de control automtico o monitoreo.

II DESARROLLO DEL TEMA


INTRODUCCION AL LCD
Cuando se disea un circuito electrnico es frecuente encontrarse con la necesidad de visualizar un mensaje que tiene que ver con el estado y mostrar instrucciones para el usuario. Ej. Si se trata de un instrumento de medida ser necesario mostrar valores registrados. Los mdulos de cristal lquido o LCD son una buena opcin para solucionar estos inconvenientes presentando algunas ventajas como ser:

Un menor consumo de corriente. Visualizar caracteres alfanumricos. Fcil interconexin con el MCU. Presentaciones 2x16, 2x20, etc. Modos de operacin 4-8 bits. Comportamiento configurable.

Para nuestro caso trabajaremos con un display de 2x16 lneas basado en el controlador HD44780 y LM032 de Hitachi, este modulo de bajo costo se consigue fcilmente en el comercio y tiene un tamao suficiente para la mayora de las aplicaciones.

CONEXIN FISICA Y MODOS DE OPERACIN


A continuacin se describe en la siguiente tabla los pines y sus respectivas funciones. PIN No 1 2 3 4 5 6 PIN ID VSS VDD VO RS RW E FUNCION Tierra 0V Alimentacin +5V Ajuste de contraste Seleccin de Registro Dato=1 Control=0 Operacin de Lectura=1 Escritura=0 Seal de habilitacin Ing. Pablo Zrate A.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

43

UNIDAD 7 7-14 15 16 DB0-DB7 A K

MANEJO DEL LCD

Bus de datos nodo diodo de retro iluminacin Ctodo del diodo de retro iluminacin

Los display disponen de 2 modos de operacin: Bus de 8-bit donde los datos byte son transferidos en un solo ciclo. Bus de 4-bit donde se requiere dos ciclos para transferir un byte de datos. Para nuestro caso de aprendizaje utilizaremos el LCD en modo 4-bit implentado en el MODULO LCD y la tarjeta base F84, de esta manera la conexin fisica con el PIC16F84 utilizaria 8 pines para el bus de datos y de control. Observe el circuito y notara que el bus de datos DB4-DB7 conecta al puerto RB4-RB7 y el bus de control RB1-RB3, ademas son necesarios algunos componentes extras para la operacin del dispositivo.

SET DE INTRUCCIONES DE CONTROL Y DATOS


El modulo LCD responde a un conjunto especial de instrucciones, estas deben ser enviadas por el MCU al display segn la operacin que se requiera. Los pines de control RS, RW y E deben tener un estado determinado. Adems el bus debe mantener el cdigo de control o dato requerido para su procesamiento. Seguidamente se detallan las instrucciones que nos permitir iniciar y configurar el modulo LCD. Clear Display: Borra el modulo LCD y coloca el cursor en la primera posicin 0. Return Home: Coloca el cursor en la posicin 0 y hace que el display comience a desplazarse desde la posicin original, no se modifica el contenido de la DDRAM. Entry Mode Set: Establece la direccin de movimiento del cursor y especifica si la visualizacin se va desplazando a la siguiente posicin de la pantalla o no. Estas operaciones se ejecutan durante la lectura o escritura de la CGRAM o DDRAM ID=1: Auto incremento en la posicin del cursor. ID=0: Auto decremento en la posicin del cursor. S=1: Incluye Desplazamiento del Display. Display On/Off Control: Activa o desactiva el Display, Cursor y parpadeo del Cursor. D: Activa D=1 y Desactiva D=0 el Display C: Activa C=1 y Desactiva C=0 el Cursor B: Activa B=1 y Desactiva B=0 el parpadeo del Cursor. Cursor Shitf: Mueve el cursor y desplaza el display sin cambiar el contenido de la DDRAM. SC: Desplaza la visualizacin SC=1, desplaza el cursor SC=0. RL: Desplaza a la derecha RL=1, desplaza a la izquierda RL=0.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

44

Ing. Pablo Zrate A.

UNIDAD 7 INSTRUCCION
Clear Display Return Home Entry Mode Display On/Off Cursor Shift Function Set Set CGRAM Set DDRAM

MANEJO DEL LCD


D7 0 0 0 0 0 0 0 1 BF D7 D7 D6 0 0 0 0 0 0 1 AD AC D6 D6 D5 0 0 0 0 0 1 AG AD AC D5 D5 D4 0 0 0 0 1 DL AG AD AC D4 D4 D3 0 0 0 1 SC N AG AD AC D3 D3 D2 0 0 1 D RL F AG AD AC D2 D2 D1 0 1 ID C AG AD AC D1 D1 D0 1 S B AG AD AC D0 D0 FUNCION
Limpia el Display Inicia el Display Inicia Cursor y Direccin Control del Display y Cursor Desplazamiento del Cursor Configuracin del Display Iniciar direccin CGRAM Iniciar direccin DDRAM Lectura de Ocupado Escribir en GC o DDRAM Leer de CG o DDRAM

RS 0 0 0 0 0 0 0 0 Read Busy 0 Write CG DDRAM 1 Read CG DDRAM 1

RW 0 0 0 0 0 0 0 0 1 0 1

Function Set: Establece el tamao del bus de datos, numero de lneas y tipo de caracteres. DL: Modo 8 Bits DL=1, Modo 4 Bits DL=0. N: Dos lneas N=1, Una sola lnea N=0. F: Caracteres de 5x10 puntos F=1, Caracteres de 5x7 puntos F=0. Set CGRAM Address: El LCD adems de tener definido todos los caracteres ASCII, permite al usuario definir 4 u 8 caracteres grficos. La composicin de estos caracteres se va guardando en una memoria llamada CGRAM con capacidad para 64 bytes, cada carcter grafico definido por el usuario se compone de 16 o 6 bytes que se almacenan en sucesivas posiciones de la CGRAM. Mediante esta instruccin se establece la direccin AG7-AG0 de la CGRAM a partir de la cual se irn almacenando los bytes que definan un carcter grafico. Una vez ejecutada esta instruccin todos los datos que se escriban o lean posteriormente, lo hacen desde la memoria CGRAM. Set DDRAM Address: Los caracteres o datos que se van visualizando, se van almacenando previamente en una memoria llamada DDRAM para de aqu pasar a la pantalla. Mediante esta instruccin se establece la direccin AD7-AD0 de la memoria DDRAM a partir de la cual se irn almacenando los datos a visualizar. Ejecutando esta instruccin todos los datos que se escriban o lean posteriormente ser desde esta memoria DDRAM. Las direcciones 0x00-0x0F corresponden con los 16 caracteres del primer rengln y de la 0x40-0x4F corresponden al segundo rengln. Read Busy Flag: La ejecucin de una instruccin en el LCD demora un determinado tiempo, durante este lapso no se debe mandar ninguna otra instruccin. Para ello dispone de una bandera ocupado (BF) que indica que se est ejecutando una instruccin previa. Esta instruccin de lectura informa del estado de la bandera BF y tambin proporciona el valor del contador de direcciones AC7-AC0 de la CGRAM o de la DDRAM segn la ltima que se haya empleado.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

45

Ing. Pablo Zrate A.

UNIDAD 7

MANEJO DEL LCD

Write Data CG DDRAM: Mediante esta instruccin se escribe en la memoria DDRAM los datos que se quieren presentar en pantalla y que sern los diferentes cdigos ASCII de los caracteres a visualizar. Igualmente se escribe en la memoria CGRAM los diferentes bytes que permiten confeccionar caracteres grficos a gusto del usuario. El escribir en uno u otro tipo de memoria depende de si se ha empleado previamente la instruccin de direccionamiento DDRAM o CGRAM. Read Data CG DDRAM: Mediante esta instruccin se lee de la memoria DDRAM los datos que estn almacenados y que sern los cdigos ASCII de los caracteres visualizados. Igualmente se lee de la memoria CGRAM los diferentes bytes con los que se confecciono un determinado carcter. La inicializacin del LCD requiere una secuencia de comandos de 8-bit o 4-bit de longitud esperando un determinado tiempo entre cada comando, a continuacin se detalla la secuencia de inicio requerida en modo 8-bit y tambin en modo 4-bit para el modulo LCD del circuito conectado al PIC16F84.
INICIALIZACION DEL LCD MODO 8-BIT DESPUES DE 15mS CONECTADO A VDD

COMANDO

RS Comando 0 Comando 0 Comando 0 Function Set 0 Display On/Off 0 Clear Display 0 Entry Mode 0

RW 0 0 0 0 0 0 0

D7 0 0 0 0 0 0 0

D6 0 0 0 0 0 0 0

D5 1 1 1 1 0 0 0

D4 1 1 1 DL 0 0 0

D3 N 1 0 0

D2 F D 0 1

D1 C 0 ID

D0 B 1 S

Esperar 4.5ms Esperar 100uS DL=1 8-bit Control del Display D=0 Off Limpia el Display Inicia Cursor y Direccin

La siguiente tabla indica la secuencia necesaria para operar en modo 4-Bit, donde los pines D3-D0 no son utilizados fsicamente en el circuito. En este modo para enviar un dato byte al bus se requieren dos ciclos de escritura donde primero se enva el nible alto y despus el nible bajo.
INICIALIZACION DEL LCD MODO 4-BIT DESPUES DE 15mS CONECTADO A VDD

COMANDO

RS Comando 0 Comando 0 Comando 0 Function Set 0 Function Set 0 Display On/Off 0 Display On/Off 0 Clear Display 0 Clear Display 0 Entry Mode 0 Entry Mode 0

RW 0 0 0 0 0 0 0 0 0 0 0

D7 0 0 0 0 N 0 1 0 0 0 0

D6 0 0 0 0 F 0 D 0 0 0 1

D5 1 1 1 1 0 C 0 0 0 ID

D4 D3 D2 D1 D0 Esperar 4.5ms 1 Esperar 100uS 1 1 DL=0 4-bit DL 0 Control D=0 Off, C=0, B=0 B 0 Limpia el Display 1 0 Inicia Cursor y Direccin S

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

46

Ing. Pablo Zrate A.

UNIDAD 7

MANEJO DEL LCD

ELABORACION DE RUTINAS ASM PARA USO DEL LCD


Finalmente escribiremos el cdigo necesario para el manejo del modulo LCD. Por tal motivo este procedimiento se divide en 5 rutinas que son utilizadas en el cdigo principal, seguidamente se detalla la operacin de cada rutina: lcd_ini : Enva la secuencia de inicializacin para el modulo LCD lcd_cmd: Ejecuta una instruccin almacenada en el registro W lcd_char: Enva el dato contenido en el registro W al modulo LCD lcd_ocupado: Espera a que el modulo LCD se encuentre libre lcd_mostrar: Enva los datos almacenados en una Tabla o memoria de programa. Estas rutinas solo operan en el modo 8-bits de datos si deseamos utilizar el modo 4-bits deben realizarse ciertas modificaciones en el cdigo que no se contemplan en esta gua, pero se har mencin en clase con el objeto de dejar al estudiante una tarea a desarrollar en las practicas. Utilizar el modo 4-bits significa que solo se requiere un bus de 7 lneas, 4 de datos y 3 de control por lo que hacen que resulte una opcin muy practica en el diseo del circuitos. lcd_ini: bcf PORTA,RW bcf PORTA,RS movlw b'00110001' movwf PORTB bsf PORTA,EN bcf PORTA,EN return lcd_cmd: movwf PORTB call lcd_ocupado bcf PORTA,RW bcf PORTA,RS bsf PORTA,EN bcf PORTA,EN return lcd_char: movwf PORTB call lcd_ocupado bcf PORTA,RW bsf PORTA,RS bsf PORTA,EN bcf PORTA,EN return ;Es la secuencia requerida para inicializar el LCD ;Modo escritura ;Modo comando ;Carga comando para iniciar LCD ;Habilita el display, pulso requerido

;El comando esta en W ;Modo escritura ;Modo comando ;Habilita el display, pulso requerido

;Modo escritura ;Modo dato ;Habilita el display, pulso requerido

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

47

Ing. Pablo Zrate A.

UNIDAD 7

MANEJO DEL LCD

lcd_ocupado: bsf PORTA,RW bcf PORTA,RS bsf STATUS,RP0 movlw 0xff movwf TRISB bcf STATUS,RP0 bsf PORTA,EN btfsc PORTB,7 goto $-1 bcf PORTA,EN bcf PORTA,RW bsf STATUS,RP0 clrf TRISB bcf STATUS,RP0 return lcd_mostrar: movf dir,W call Tabla andlw 0xff btfsc STATUS,Z return call lcd_char incf dir goto lcd_mostrar

;Modo lectura ;Modo comando ;Seleccin banco 1 ;Configura el Puerto B como entrada ;Habilita el display, pulso requerido ;Verifica y salta si el LCD no est ocupado

;Modo escritura ;Configura el Puerto B como salida

;Muestra los datos de la memoria ;Dir tiene la direccin offset del mensaje ;Verificar si es fin del mensaje, carcter nulo.

;Muestra carcter en LCD ;Incrementa la direccin offset

PROGRAMACION DE EJEMPLO EN CIRCUITO CON LCD


En esta seccin escribiremos un programa para el circuito base F84 conectado al modulo LCD, donde se procede a inicializar y configurar el modo del display y posteriormente se enva un mensaje Manejo LCD en la primera lnea de la pantalla. Para este ejemplo se har referencia a las rutinas de retardo mencionadas anteriormente pero modificadas para operar en modo 4-bit las modificaciones no estn escritas en esta seccin y pero puede acceder a ellas en el cdigo fuente del programa. list p=16F84; include "P16F84.INC" RS set 1 RW set 2 EN set 3 dir equ 0x0c org 0 goto inicio org 5 Gua Didctica para Microcontroladores Universidad Evanglica Boliviana Ing. Pablo Zrate A.

48

UNIDAD 7 inicio: bsf STATUS,RP0 movlw b'11000111' movwf OPTION_REG clrf TRISB bcf STATUS,RP0 call retardo_seg call lcd_ini call retardo_5ms call lcd_ini call retardo_100us call lcd_ini movlw b'00101000' call lcd_cmd movlw b'00000001' call lcd_cmd movlw b'00001111' call lcd_cmd movlw b'00000110' call lcd_cmd movlw Texto movwf dir call lcd_mostrar end

MANEJO DEL LCD

;No Pull-up, Prescaler 256 ;Puerto B como salida Tabla: Mensaje movwf PCL retlw 'M' retlw 'a' retlw 'n' retlw 'e retlw 'j' retlw 'o' retlw ' ' retlw 'L retlw 'C' retlw 'D' retlw 0

;Function Set ;Clear Display ; Display ON/OFF ;Entry Mode Set.

II ACTIVIDADES DE PROFUNDIZACION E INTEGRACION


Configurar y modificar las rutinas para operar el LCD en modo 4-bits. Realizar el Montaje de circuito para pruebas. Estudiar a fondo la generacin de caracteres personalizados en el LCD.

IV BIBLIOGRAFIA
Micro-controladores PIC Carlos A. Reyes RISPERGRAF Volumen 2 2006 Curso Avanzado de Micro-controladores PIC CEKIT Hoja de Datos del Micro-controlador PIC16F84 Microchip 2001. Esquemticos y Hoja de datos FUTURLEC

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

49

Ing. Pablo Zrate A.

UNIDAD 8

MANEJO DEL KEYPAD

I OBJETIVOS DEL TEMA


PROFESIONAL: Obtener conocimiento para el manejo del teclado matricial. PERSONAL: Despertar el inters en el estudiante para elaborar aplicaciones basadas en microcontroladores PIC utilizando teclado matricial. PRODUCTIVO: Conocer las tcnicas y herramientas necesarias para la elaboracin de aplicaciones que requieran el uso de teclados como unidad de entrada al sistema.

II DESARROLLO DEL TEMA


INTRODUCCION A LOS TECLADOS
Un Teclado KeyPad es parte de una interfaz HDMI (Human Machine Interface), y juega un papel muy importante en sistemas embebidos donde la interaccin humana de entrada es necesaria. Bsicamente es un dispositivo de 12 o 16 teclas configurado con una matriz de filas y columnas, con la intencin de reducir el nmero de lneas de entrada y salidas necesarias para controlarlo con el MCU. En un teclado no matricial cada tecla necesitara una lnea de entrada, con lo cual representara una cantidad mayor de lneas E/S del MCU. La construccin interna de un teclado matricial es realmente simple. Tal como se ilustra en la siguiente imagen. Al presionar una tecla existir habr continuidad entre la fila y columna correspondiente a la tecla presionada. El proceso de deteccin realizado por el programa del MCU consiste en un escaneo o barrido y existen muchos mtodos dependiendo de cmo esta interconectado el teclado al MCU, pero la lgica bsica es la misma las columnas entradas y las filas salidas o viceversa. Para controlar el teclado, los puertos del MCU correspondientes a las filas se programan como salidas y las columnas como entrada o viceversa. De todas formas el objetivo principal del programa de decodificacin del teclado, consiste en determinar la fila y columna que corresponde a la tecla que se presiono.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

50

Ing. Pablo Zrate A.

UNIDAD 8

MANEJO DEL KEYPAD

Lo anterior se logra rotando un valor lgico ya sea 1 o 0 en cada una de las lneas configuradas como salidas e inmediatamente despus de leer el estado lgico de las lneas conectadas como entrada. Cuando el valor lgico que se rota es un 1 la programacin es comnmente denominada walking ones y walking zeros cuando se trata de un 0.

CONEXIN FISICA Y MODOS DE OPERACIN


Para el aprendizaje utilizaremos un modulo que contiene un teclado matricial 3x4 bastante usual en aparatos telefnicos. La Configuracin de interconexin al MCU en el diagrama de modulo. Como se observa las filas estn conectadas a los pines RB4-RB7 y sern configuradas como entradas. Las columnas conectadas a los pines RB1-RB3 se configuraran como salidas, adems cuatro diodos Led conectados a los pines RA0-RA3 nos mostraran el valor binario de la tecla presionada. Es importante mencionar que en los puertos de entrada correspondiente a los pines RB4-RB7 deben estar activadas las resistencias pull-ups internas esto se logra configurando en 0 el bit RBPU del registro OPTION. Al existir resistencias pull-ups en las filas, las entradas siempre tendrn un valor 1 y solo cambiaran a 0 cuando exista contacto con una columna es decir solo si existe una tecla presionada.

ELABORACION DE RUTINAS ASM MANEJAR EL TECLADO


El cdigo ASM elaborado para el manejo del teclado matricial de 3x4 est dividido en dos rutinas o procedimientos que son: ScanPad: Realiza el barrido walking ones en las columnas y lee las entradas obteniendo como resultado un valor binario a cada tecla presionada. Abajo se observa una tabla con los valores en binario y hexadecimal de cada una de las teclas que conforman la matriz.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

51

Ing. Pablo Zrate A.

UNIDAD 8

MANEJO DEL KEYPAD

KeyCode: Obtiene el valor real de la tecla presionada, la codificacin se realiza por tabla en funcin del resultado que se obtuvo con ScanPad. De acuerdo al requerimiento de la aplicacin la conversin puede ser en valores decimales o caracteres ASCII. Tecla 1 2 3 4 5 6 7 8 9 * 0 # Valor Binario 00011000 00010100 00010010 00101000 00100100 00100010 01001000 01000100 01000010 10001000 10000100 10000010 Valor Hex 0x18 0x14 0x12 0x28 0x24 0x22 0x48 0x44 0x42 0x88 0x84 0x82 Tabla: addwf retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw PCL, F 0x84; tecla 0 0x18; tecla 1 0x14; tecla 2 0x12; tecla 3 0x28; tecla 4 0x24; tecla 5 0x22; tecla 6 0x48; tecla 7 0x44; tecla 8 0x42; tecla 9 0x88; tecla * 0x82; tecla #

Utilizando las rutinas ScanPad y KeyCode crearemos el cdigo ASM necesario para mostrar en los diodos Led los valores en binario de la tecla presionada.Es importante mencionar que una vez iniciado los puertos el programa escanea hasta que se presione una tecla, visualiza su valor en los led y vuelve a realizar el proceso de manera continua, este mtodo tambin es comnmente llamado Polling. Otra manera de poder realizar una lectura sin tener que llamar a la funcin continuamente es mediante la interrupcin por cambio de estado RBIE en los pines RB4-RB7, cuando una tecla es presionada habr un cambio en cualquiera de los pines de entrada generando una interrupcin RBIF, la rutina ISR(Interrupt Service Routine) o de servicio a la interrupcin deber proceder a leer el teclado llamando a ScanPad. list p=16F84; include "P16F84.INC" col equ 0x0f row equ 0x10 result equ 0x11 count equ 0x12 org 0 goto inicio org 5 inicio: bsf STATUS,RP0 clrf TRISA movlw b'11110000' movwf TRISB

;Incluir lista de definiciones para el PIC

;Esta variable tiene el resultado de la tecla presionada

;Selecciono banco 1 ;RA7-RA4 Entradas, RA3-RA1 Salidas

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

52

Ing. Pablo Zrate A.

UNIDAD 8

MANEJO DEL KEYPAD

movlw b'01010111' ;Activo resistencias pull-up movwf OPTION_REG bcf STATUS,RP0 ;Selecciono banco 0 clrf PORTA movlw b'00001111' movwf PORTB inicio_bucle call retardo_seg call ScanPad ;ScanPad devuelve el resultado en binario call KeyCode ;Decodifica el resultado movf PORTA,W andlw b'11110000' ;Enmascara el nible alto del Puerto A iorwf result,W movwf PORTA ;Refleja el resultado en RA3-RA0 goto inicio_bucle ScanPad: movlw .3 movwf count movlw b'11111101' ;No hay C4 movwf col nextcol movf col,W movwf PORTB btfss PORTB,4 goto keyon ;Pulsador presionado en fila 1 btfss PORTB,5 goto keyon ;Pulsador presionado en fila 2 btfss PORTB,6 goto keyon ;Pulsador presionado en fila 3 btfss PORTB,7 goto keyon ;Pulsador presionado en fila 4 bsf STATUS,C rlf col,F ;Walking Zeros call retardo_10m decfsz count goto nextcol ;Repetir con la siguiente columna goto ScanPad ;Repetir secuencia de barrido keyon movf PORTB,W movwf row ;Guardar estado PORTB en row keyrelease movf PORTB,W subwf row,W btfsc STATUS,Z ;Saltar si tecla no est presionada goto keyrelease ;Esperar mientras se presiona

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

53

Ing. Pablo Zrate A.

UNIDAD 8

MANEJO DEL KEYPAD

movlw 0x0f andwf col,F movf row,W andlw 0xf0 iorwf col,W movwf result comf result,F

;Enmascara nible bajo de col ;Enmascara nible alto de row

;Convierte a R4-R3-R2-R1-C3-C2-C1-RB0

return KeyCode: movlw .9 ;Solo decodifica las teclas del 0-9 movwf count KeyCode_b movf count,W call Tabla ;Llama a la tabla de valores para comparacin subwf result,W btfsc STATUS,Z;Si result es igual al valor de tabla no saltar goto KeyCode_a decfsz count,F ;Decrementar count goto KeyCode_b KeyCode_a movf count,W movwf result return

II ACTIVIDADES DE PROFUNDIZACION E INTEGRACION


Elaborar ejemplos de adquisicin de datos mediante interrupciones. Realizar el Montaje de circuito para pruebas. Investigar mtodos de adquisicin datos del teclado eliminando ruidos y falsas pulsaciones.

IV BIBLIOGRAFIA
Micro-controladores PIC Carlos A. Reyes RISPERGRAF Volumen 2 2006 Curso Avanzado de Micro-controladores PIC CEKIT Hoja de Datos del Micro-controlador PIC16F84 Microchip 2001. Esquemticos y Hoja de datos FUTURLEC

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

54

Ing. Pablo Zrate A.

UNIDAD 9

MANEJO DE MOTORES PASO A PASO

I OBJETIVOS DEL TEMA


PROFESIONAL: Obtener conocimiento del uso de motores pas a paso en un sistema MCU. PERSONAL: Despertar el inters en el estudiante para elaborar aplicaciones basadas en microcontroladores PIC utilizando motores pas a paso. PRODUCTIVO: Capacidad de elaborar aplicaciones que requieran etapas de control utilizando motores PAP mediante controladores PIC.

II DESARROLLO DEL TEMA


INTRODUCCION A LOS MOTORES PASO A PASO
Un motor paso a paso PAP es un dispositivo electromecnico que internamente posee un rotor sobre el cual hay varios imanes permanentes y un cierto nmero de bobinas excitadoras en su estator, bsicamente las bobinas son parte del estator y el rotor es un imn permanente por lo que la excitacin de las bobinas debe ser manejada por un controlador externo. A diferencia de los motores de continua CC un motor PAP es capaz de realizar giros en pequeos ngulos por cada paso siendo ideales para el posicionamiento preciso de mecanismos en una determinada aplicacin. Adems ejercen una fuerza considerable donde muchas veces se puede prescindir de una mecnica de reduccin.

Los parmetros a considerar para la correcta la eleccin de un motor PAP son principalmente: El tipo de motor PAP, la tensin de operacin, el ngulo de paso y la resistencia elctrica de las bobinas. Existen tres tipos de motor paso a paso que son los Unipolares, Bipolares y Universales, este ltimo puede operar en ambos modos dependiendo de su instalacin, en esta gua haremos mencin a los dos primeros que son los ms utilizados actualmente.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

55

Ing. Pablo Zrate A.

UNIDAD 9

MANEJO DE MOTORES PASO A PASO

MOTORES UNIPOLARES: El motor unipolar consta de 4 bobinas internas que pueden activarse o desactivarse individualmente, con una determinada secuencia de control conseguiremos realizar los giros a diferentes velocidades, fsicamente tienen 5 o 6 cables de los cuales 4 conectan a un extremo de cada bobina y los restantes son el punto comn de todas. A continuacin ilustraremos la secuencia necesaria para realizar los giros en este tipo de motor.
A UNIPOLAR PASO COMPLETO B Q4 Q2 Q3 Q1 HEX

+ +
A

+ + z + + + z -

1 0 0 1 1 1 0 0 0 0 0 1

1 1 0 0 0 1 1 1 0 0 0 0

0 1 1 0 0 0 0 1 1 1 0 0

0 0 1 1 0 0 0 0 0 1 1 1

0Ch 06h 03h 09h


HEX

UNIPOLAR MEDIO PASO B Q4 Q2 Q3 Q1

z z + + +

08h 0Ch 04h 06h 02h 03h 01h 09h

MOTORES BIPOLARES: Este motor est compuesto de dos bobinas y el movimiento se consigue cambiando la direccin de la corriente que circula por cada una. Para lograr esto es necesaria la utilizacin de diodos para conformar un puente en H y transistores para cada devanado, fsicamente dispone de 4 cables que conectan al extremo de cada bobina. Seguidamente se ilustra la secuencia de control necesaria para la operacin de este motor
A B Q1 Q3 Q2 Q4 Q6 Q8 Q5 Q7 HEX

0 0 + + +

0 + + + 0 -

0 0 0 0 0 1 1 1

0 0 0 1 1 1 0 0

0 1 1 1 0 0 0 0

1 1 0 0 0 0 0 1

0 0 0 0 0 1 1 1

0 0 0 1 1 1 0 0

0 1 1 1 0 0 0 0

1 1 0 0 0 0 0 1

11h 33h 22h 66h 44h CCh 88h 99h

PROGRAMACION ASM PARA CONTROLAR UN MOTOR PAP


En esta seccin elaboraremos el cdigo necesario para manejar un motor PAP unipolar utilizando la tarjeta base F84 y el modulo PAP. El diagrama electrnico del modulo PAP utiliza cuatro transistores bipolares NPN para excitar a cada una de las bobinas internas, utilizando el puerto B Gua Didctica para Microcontroladores Universidad Evanglica Boliviana Ing. Pablo Zrate A.

56

UNIDAD 9

MANEJO DE MOTORES PASO A PASO

RB1-RB4 activamos cada unos de los transistores, Aplicando la secuencia ilustrada anteriormente en la tabla lograremos realizar los giros y con frecuencia de cambio controlaremos la velocidad de giro. Utilizaremos los pulsadores P1-P3 para indicar el sentido de giro. El motor unipolar puede trabajar a paso medio o paso completo, el paso completo ofrece ms fuerza debido a que siempre estn polarizadas ambas bobinas por contraparte el paso medio brinda menor desplazamiento o ngulo de giro en caso de requerir mayor precisin. Iniciaremos en esta seccin con la configuracin de un motor a paso completo, Y la conexin del motor al modulo segn el diagrama de circuito es la siguiente: Fase 1 = Bobina A+ Controlado por Q1 RB1 Fase 2 = Bobina A Controlado por Q3 RB2 Fase 3 = Bobina B+ Controlado por Q2 RB3 Fase 4 = Bobina B Controlador por Q4 RB4 Para paso completo la secuencia RB4-RB1 para el movimiento es: 1100-0110-0011-1001 y para cambiar el sentido de giro seria: 1001-0011-0110-1100. list p=16F84 r=hex ;Definimos el tipo de MCU a utilizar include "P16F84.INC" ;Incluimos la lista de definiciones SW1 equ RB5 ;Pulsador 1 SW3 equ RB7 ;Pulsador 3 t0 equ 0Ch org 0 goto inicio org 5 inicio bcf STATUS,RP0 ;Seleccionar banco 0 clrf PORTA ;Limpiar Puerto A clrf PORTB ;Limpiar Puerto B bsf STATUS,RP0 ;Seleccionar banco 1 movlw b'01000111' ;Preescaler=256 y Pull-up on movwf OPTION_REG movlw b'00001111' movwf TRISA ;Configurar Puerto A movlw b'11100001' ;Configurar Puerto B movwf TRISB bcf STATUS,RP0 ;Seleccionar banco 0 inicio_bucle btfss PORTB,SW1 ;Verifica si se presiona SW1 call izquierda ;Giro a la izquierda btfss PORTB,SW3 ;Verifica si se presiona SW3 call derecha ;Giro a la derecha clrf PORTB ;Limpia el Puerto B goto inicio_bucle ;Repetir bucle izquierda: movlw b'11111001' movwf PORTB call retardo_motor movlw b'11101101' Gua Didctica para Microcontroladores Universidad Evanglica Boliviana 57 Ing. Pablo Zrate A.

UNIDAD 9

MANEJO DE MOTORES PASO A PASO

movwf PORTB call retardo_motor movlw b'11100111' movwf PORTB call retardo_motor movlw b'11110011' movwf PORTB call retardo_motor btfss PORTB,SW1 goto izquierda return derecha: movlw b'11110011' movwf PORTB call retardo_motor movlw b'11101101' movwf PORTB call retardo_motor movlw b'11111001' movwf PORTB call retardo_motor btfss PORTB,SW3 goto derecha return retardo_motor: movlw .2 movwf t0 ; El valor almacenado en t0 controlara la velocidad de giro decfsz t0,F goto $+2 return call retardo_10ms goto $-4 end

II ACTIVIDADES DE PROFUNDIZACION E INTEGRACION


Investigar sobre circuitos Drivers (L293, MC3479, SAA1027, SMA7029) para motores PAP. Realizar el Montaje de circuito para pruebas. Guia de seleccin para motores NMB. Manual de referencia y diseo de motores PAP Silicon Labs

IV BIBLIOGRAFIA
Micro-controladores PIC Carlos A. Reyes RISPERGRAF Volumen 2 2006 Curso Avanzado de Micro-controladores PIC CEKIT

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

58

Ing. Pablo Zrate A.

UNIDAD 10

USO DE LOS PUERTOS SERIALES

I OBJETIVOS DEL TEMA


PROFESIONAL: Tener conocimiento de las interfaces seriales utilizados para la comunicacin. PERSONAL: Despertar el inters en el estudiante para elaborar aplicaciones basadas en microcontroladores PIC utilizando comunicacin serial. PRODUCTIVO: Conocer las tcnicas y herramientas necesarias para la elaboracin de aplicaciones basadas en micro-controlador PIC empleando las comunicaciones seriales.

II DESARROLLO DEL TEMA


INTRODUCCION A LOS PUERTOS SERIALES
El intercambio de informacin digital entre un micro controlador y los perifricos puede ser de dos formas: Comunicacin Paralela: Usa una lnea por bit lo que permite mayores velocidades, pero el alcance es muy limitado Comunicacin Serial: Usa un lnea para trasmitir todos los bits lo que reduce la velocidad pero permite un gran alcance. Un puerto serie o puerto serial es una interfaz de comunicaciones de datos digitales, frecuentemente utilizado por computadoras y perifricos, donde la informacin es transmitida bit a bit enviando un solo bit a la vez, en contraste con el puerto paralelo que enva varios bits simultneamente. A pesar de que la interface paralela es ms directa, una interfaz serial es mucho ms verstil. La comunicacin serial puede realizarse entre dos dispositivos (punto a punto) o tambin entre uno y varios dispositivos (multipunto) y puede ser del siguiente tipo: Simplex: En este caso el emisor y el receptor estn perfectamente definidos y la comunicacin es unidireccional. Este tipo de comunicaciones se emplean, usualmente, en redes de radiodifusin, donde los receptores no necesitan enviar ningn tipo de dato al transmisor. Half Duplex: En este caso ambos extremos del sistema de comunicacin cumplen funciones de transmisor y receptor y los datos se desplazan en ambos sentidos pero no de manera simultnea. Este tipo de comunicacin se utiliza habitualmente en la interaccin entre terminales y una computadora central. Full Duplex: El sistema es similar al duplex, pero los datos se desplazan en ambos sentidos simultneamente. Para que sea posible ambos emisores poseen diferentes frecuencias de transmisin o dos caminos de comunicacin separados, mientras que la comunicacin Half Duplex necesita normalmente uno solo. Adems la comunicacin serial puede ser de dos modos: Gua Didctica para Microcontroladores Universidad Evanglica Boliviana Ing. Pablo Zrate A.

59

UNIDAD 10

USO DE LOS PUERTOS SERIALES

Transmisin serial sncrona: es aquella en la que las unidades de emisin y recepcin se sincronizan y despus se enva una secuencia de bits de seales de datos. De tal manera estas unidades cuentan con un reloj comn que los temporiza y permite que los bits se enven a una velocidad constante dictada por los pulsos de reloj que determinan la velocidad de comunicacin. La transmisin serial asncrona: es aquella en la que los bits de datos de un carcter se transfieren de manera independiente en el tiempo con respecto a otro carcter. De tal manera que para esta tcnica cada carcter consta de tres partes: un bit de inicio, bits de caracteres y un bit de paro. El bit de inicio siempre es cero y se utiliza para anunciar que comienza un carcter. El bit de paro siempre es 1, valor que se mantiene por al menos el tiempo correspondiente a un bit para indicar que ha culminado el carcter enviado la siguiente figura ilustra este concepto.

Los MCU disponen de perifricos integrados para la comunicaciones seriales llamados UART (Unidad Asncrona de Transmisin y Recepcin) o USART (Unidad Sncrona Asncrona de Transmisin y Recepcin). El PIC16F84 no posee mdulos de comunicacin serial, por lo que la implementacin es posible solo por software. En el tema implementaremos la comunicacin serial asncrona utilizando un PIC16F84 y una interfaz RS-232. Los parmetros de configuracin requeridos para la comunicacin serial asncrona son los siguientes: Velocidad: Expresada en baudios, un baudio es equivalente a la cantidad de informacin (bit) enviada por la lnea en un segundo, para nuestro caso usaremos una velocidad de 9600bps (bits por segundo). Longitud de datos: Representa la cantidad de bits utilizados para un dato que ser enviado luego del bit de inicio, en nuestro caso la longitud ser de 8 (byte). Paridad: Es un mecanismo de control de error en el dato y est representado por un bit adicional enviado despus del dato, en nuestro caso no utilizaremos esta opcin. Bits de parada: Indica la cantidad de bits de parada utilizados para cada dato enviado, su nivel lgico es 1 y su duracin es igual al tiempo de bit utilizado en la comunicacin. El estndar RS-232 es una interfaz que designa una norma para el intercambio en serie de datos binarios entre dos dispositivos, esta interfaz est presente en los ordenadores actuales y muchos Gua Didctica para Microcontroladores Universidad Evanglica Boliviana Ing. Pablo Zrate A.

60

UNIDAD 10

USO DE LOS PUERTOS SERIALES

dispositivos y sensores electrnicos por lo que la implementacin en micro controladores es de mucha utilidad.

CONEXIN FISICA Y MODOS DE OPERACIN


Es importante sealar que para poder implementar la comunicacin serial en el PIC16F84 bajo un estndar RS-232 (en la cual el "1" lgico est especificado como un voltaje positivo de +15V, y el "0" lgico como un voltaje negativo de -15V), se debe realizar las conversiones elctricas de los niveles de voltaje TTL usados por el PIC. El componente que realiza dicha funcin es el transceptor (transceiver) MAX232. Con la adicin de cinco capacitores externos de bajo costo especificados por el fabricante, la conversin realizada por este circuito es llevada a cabo en forma directa sin mayor ciencia. Lo interesante del circuito integrado MAX232 es que puede generar las seales de voltaje RS-232 de +15V y -15V utilizando una fuente de voltaje de +5V. Como se observa en el circuito mostrado en la figura.

En el circuito se puede observar la conexin fsica del PIC16F84 con la interface RS-232, el PIC recibe los datos a travs del pin RA4 y la trasmisin lo realiza utilizando el pin RA3.

ELABORACION DE RUTINAS ASM PARA COMUNICACIN SERIAL RS-232


El cdigo WriteUART escrito en la parte superior tiene por funcin enviar un dato serialmente a una velocidad de 9600bps, sin paridad y con 2 bits de parada, el dato byte est almacenado en la variable udato. Seguidamente en la parte inferior observamos el cdigo correspondiente a la recepcin ReadUART, de la misma manera esta rutina recibe un dato byte y lo guarda en la variable udato. Es importante mencionar que en esta rutina las lecturas se realizan en la mitad del tiempo de vida de cada bit, por tal motivo la recepcin del primer bit de inicio se realiza despus 50uS, esto tambin posibilita comprobar si realmente se trata de un bit de inicio.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

61

Ing. Pablo Zrate A.

UNIDAD 10

USO DE LOS PUERTOS SERIALES

WriteUART: movlw .12 ; <S>12345678<P><P> movwf bitcount ; Es la cantidad de bits que se enviaran bcf PORTA,TXD ;Coloca en 0 para el bit de inicio WriteUART_b0 decfsz bitcount,F ; Decrementa bitcount y salta si es 0 goto WriteUART_ej bsf PORTA,TXD ; Coloca en 1 para final de trasmisin return ; Retorna WriteUART_ej call retardo_100us ; Espera un tiempo de bit de 100uS para 9600bps btfss udato,0 ;Verifica el bit 0 del dato a enviar y salta si es 1 goto WriteUART_ej0 bsf PORTA,TXD ; Coloca en 1 el pin TX goto WriteUART_ej1 WriteUART_ej0 bcf PORTA,TXD ; Coloca en 0 el pin TX WriteUART_ej1 bsf STATUS,C ; Coloca en uno el bit de acarreo rrf udato,F ; Desplaza los bits a la derecha goto WriteUART_b0 ; Repetir secuencia ReadUART: movlw .9 ;Es la cantidad de bit a recibir ms el bit de inicio movwf bitcount ReadUART_b0 btfsc PORTA,RXD ; Verifica el estado del pin RX, salta si es 0 (bit inicio) goto ReadUART_b0 call retardo_50us ; Espera medio ciclo de vida btfsc PORTA,RXD ; Vuelve a verificar RX est en 0 return ; Inicio no vlido ReadUART_b1 decfsz bitcount,F ; Decrementa el contador goto ReadUART_b2 call retardo_100us ; Espera un tiempo para el bit de parada return ReadUART_b2 call retardo_100us ; Espera un tiempo de bit bcf STATUS,C ; Coloca en 0 el acarreo btfsc PORTA,RXD ; Verifica el pin RX y salta si es 0 bsf STATUS,C ; Coloca en 1 el bit de acarreo rrf udato,F ; Desplaza a la derecha la variable goto ReadUART_b1 ; Continua la secuencia

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

62

Ing. Pablo Zrate A.

UNIDAD 10

USO DE LOS PUERTOS SERIALES

Con las rutinas writeUART y readUART nos ser posible implementar una comunicacin serial con el ordenador o dispositivo que disponga un puerto serie RS232. Un simple programa de eco que recibe un byte y lo vuelve a enviar seria sencillo como se observa en el cdigo de abajo. Los pines RA4 y RA3 deben estar previamente configurados. Eco: call ReadUART ; Recibe un dato byte en la variable udato call WriteUART; Enva un dato byte de la variable udato goto Eco

INTRODUCCION AL PUERTO I2C


El Bus I2C (Inter-Integrate Circuit) fue desarrollado por Philips, para simplificar la interconexin entre los dispositivos y el microprocesador , se trata de un bus serial bidireccional basado en dos hilos a los que se conectan los diversos dispositivos como Memorias y Sensores Electrnicos. Bsicamente la comunicacin serial utiliza un conductor para manejar el tiempo SCL (Sincronia) y otro para intercambiar datos SDA siendo una comunicacin half duplex, estas lneas estn conectadas a la fuente de alimentacin mediante resistencias pull-up, y se mantienen en nivel alto cuando el bus esta libre. Cada dispositivo conectado al bus I2C es reconocido por una nica direccin y cualquiera puede transmitir o recibir datos, dependiendo de la funcin del dispositivo. Los datos transmitidos son de 8 bits y el transmisor debe recibir confirmacin antes de enviar el siguiente dato. La especificacin original o modo estndar (Std Mode) fue para transferencias de hasta 100Kbps, luego se incremento esta velocidad a 400Kbps denominndose modo rpido (Fast Mode). La ltima especificacin extiende el soporte hasta 3.4Mbps en modo alta velocidad (High Speed Mode). El reloj determina la velocidad de transmisin de los datos.

Algunos trminos o definiciones utilizados en relacin con las funciones del bus I2C son: Maestro (Master): Dispositivo que determina la temporizacin y la direccin del trfico de datos en el bus. Es el nico que genera la seal de reloj SCL. Cuando se conectan varios dispositivos maestros a un mismo bus, la configuracin se denomina multi-maestro. Esclavo (Slave): Cualquier dispositivo conectado al bus que no genera seal de reloj SCL. Recibe seales la seal de comando y reloj provenientes del dispositivo maestro. Gua Didctica para Microcontroladores Universidad Evanglica Boliviana Ing. Pablo Zrate A.

63

UNIDAD 10

USO DE LOS PUERTOS SERIALES

Bus Desocupado (Bus Free): Estado en el cual ambas lneas SDA y SCL estn inactivas, presentando un estado lgico alto. nicamente en este momento es cuando un dispositivo maestro puede comenzar a utilizar el bus. Comienzo (Start): Sucede cuando un dispositivo maestro genera una condicin de inicio en el bus, la lnea SCDA toma un estado bajo mientras que la lnea SCL permanece alta. Parada (Stop): El dispositivo maestro genera esta condicin dejando libre el bus. La lnea de datos toma un estado lgico alto mientras que la de reloj permanece tambin en ese estado. Direccin (Address): Cada dispositivo dispone de su propia y nica direccin de acceso, que viene pre-establecida por el fabricando, aunque existen dispositivos que permiten establecer parte de su direccin de forma externa. Lectura y Escritura (Bit R/W): Cada dispositivo dispone de una direccin de 7 bits, el octavo bit LSB es enviando durante la operacin de direccionamiento y corresponde al bit que indica que tipo de operacin se va a realizar, si el bit es alto se realizara una lectura y si el bit es bajo se proceder a una escritura. Gracias a que el protocolo es bastante simple, usualmente se ven insertados en sistemas MCU que no fueron diseados con estos puertos como es el caso del PIC16F84, siendo el protocolo generado por cdigo o firmware.

INTRODUCCION AL PUERTO SPI


El Bus SPI (Serial Peripheral Interface) es un estndar de comunicaciones establecido por Motorola que utiliza un bus de 4 lneas para interconectar dispositivos perifricos de baja y media velocidad. La comunicacin se realiza siguiendo un modelo maestro-esclavo, donde el maestro selecciona al esclavo y comienza el proceso de transmisin y recepcin de informacin. SPI constituye una comunicacin serial sncrona full dplex, lo cual eleva la tasa de transferencia de los datos. En este popular estndar no existe un medio de direccionamiento de los dispositivos esclavos y mucho menos reconocimiento de la recepcin, as que no existe forma alguna de detectar la presencia de un esclavo o establecer un medio de control de flujo. Incluye una lnea de reloj SCLK, dato entrante MISO, dato saliente MOSI y un pin de seleccin de chip SS, que conecta o desconecta la operacin del dispositivo con el que uno desea comunicarse. De esta forma, este estndar permite compartir las lneas de reloj y datos como se observa en la siguiente figura. El estndar SPI no define un protocolo para la transmisin de los datos y aunque especifica que el nmero de bits que componen cada dato a trasmitir sea de 8, existen muchos dispositivos SPI compatibles que no emplean exactamente esta definicin. Ante esto se hace indispensable recurrir a los diagramas y especificaciones de tiempo propias del cada fabricante.

Gua Didctica para Microcontroladores Universidad Evanglica Boliviana

64

Ing. Pablo Zrate A.

UNIDAD 10

USO DE LOS PUERTOS SERIALES

Ventajas o comunicacin Full Duplex o Mayor velocidad de transmisin que con IC o SMBus o Se puede tener un control absoluto sobre los bits transmitidos o No est limitado a la transferencia de bloques de 8 bits o Su implementacin en hardware es extremadamente simple o Consume menos energa que I2C o SMBus debido que posee menos circuitos o No es necesario arbitraje o mecanismo de respuesta ante fallos Desventajas o Consume ms pines de cada chip que IC, incluso en la variante de 3 hilos. o El direccionamiento se hace mediante lneas especficas (sealizacin fuera de banda) a diferencia de lo que ocurre en IC que se selecciona cada chip mediante una direccin de 7 bits que se enva por las mismas lneas del bus o No hay control de flujo por hardware o No hay seal de asentimiento. El maestro podra estar enviando informacin sin que estuviese conectado ningn esclavo y no se dara cuenta de nada o No permite fcilmente tener varios dispositivos conectados al bus

II ACTIVIDADES DE PROFUNDIZACION E INTEGRACION


Elaborar ejemplos de comunicacin serial a diferentes velocidades. Realizar el Montaje de circuito para pruebas. Investigar sobre el modulo serial MSSP integrado en microcontroladores PIC.

IV BIBLIOGRAFIA
Micro-controladores PIC Carlos A. Reyes RISPERGRAF Volumen 2 2006 Curso Avanzado de Micro-controladores PIC CEKIT Gua Didctica para Microcontroladores Universidad Evanglica Boliviana Ing. Pablo Zrate A.

65

COD5 D5
A 1N4001

+5

COP2 P2
1 2 +5 VPP

COICSP ICSP
PIICSP01 PIICSP02 PIICSP03

COU1 U1

LM7805 IN OUT GND 3 PIU103

+5

PID501 PID502 1 PIU101

COR3 R3
PIR301 PIR302

COJ1 J1
1 2
PIJ101
PIJ102

PIU102 PIU20
3 PIU203

PIC101 COC1 C1 PIC1100uF 02 PIC202


PIC201
+12

1k

PID301 COD3
D3

PIP201 PIP202

PID302
PID402 COD4 PID401
D4 GND

GND +12

COP4 P4
1 2

GND

RB7 PIICSP04 RB6 PIICSP05 POAUXPIICSP06 AUX

1 2 3 4 5 6

PIP401
PIP402

COC2 C2
100uF COR4 2.2k R4 PIR401 PIR402

GND

1 PIU201

GND IN OUT LM7812CT

COU2 U2

COPA PA
B

PORA0 RA0 PIPA01 1 PORA1 RA1 PIPA02 2

PORA2 RA2 PIPA03


POTXD TXD PIPA04

3 4

COC5 PIC C5501


10uFPIC502

COC6 PI C6C601
10uFPIC602

COPB PB
+5

COU4 U4 1 PIU401 C1+ 3 PIU403 C14 PIU404 C2+ 5 PIU405 C211 PIU4011 T1IN 10 PIU4010 T2IN 12 PIU4012 9 PIU409
PIU4015

10uF COC7+5 C7 2 PIC701 PIC702 VDD PIU402 16 VCC PIU4016

COSERIAL SERIAL
PISERIAL01 PISERIAL02 PISERIAL03 PISERIAL04

1 2 3 4

PORXD RXD PIPB01 PORB1 RB1 PIPB02


COR1 R1
10k

PIR102 PIR101

PORB2 RB2 PIPB03 PORB3 RB3 PIPB04 PORB4 RB4 PIPB05 PORB5 RB5 PIPB06

PID10
C

POVPP VPP
COD1 D1 COU3 U3
4 PIU304 2 16 PIU3016 15 14 MCLR OSC1/CLKIN OSC2/CLKOUT VDD VSS

PORB6 RB6 PIPB07 PORB7 RB7 PIPB08

1 2 3 4 5 6 7 8

TXD

14 T1OUT PIU4014 7 T2OUT PIU407 R1IN R2IN VEE 13 PIU4013 8 PIU408


PIU406

+5

RXD

R1OUT R2OUT GND

PIR202
COR2 R2

15

PIC802
PIC801

10uF

GND C

PID102

PIR201
17 RA0 PIU3017 18 RA1 PIU3018 1 RA2 PIU301 2 RA3 PIU302 3 RA4/T0CKI PIU303 6 RB0/INT PIU306 7 RB1 PIU307 8 RB2 PIU308 9 RB3 PIU309 10 RB4 PIU3010 11 RB5 PIU3011 12 RB6 PIU3012 13 RB7 PIU3013 RA0 RA1 RA2 TXD

1k GND

MAX232CPE

COC8 C8

PISW10 COSW1
RESET

PID201 COD2
D2

COY1
PIY102

PIY101

PISW102

PIC302 PIC301

COC3 4MHz
22pF

PIC402 PIC401

COC4
22pF

+5

PIU3015

PID20

GND

PIU3014

5 PIU305 GND

D PIC16F84A-04I/P

RXD RB1 RB2 RB3 RB4 RB5 RB6 RB7

Title F84 Circuito de Prueba Size Letter Date: File: 03/08/2011 Sheet of E:\PROYE\PCB\ELT436\BOARDF84.SchDoc Drawn By: Pablo Z 3 4 Number Revision D

COPA PA
1 2 3 4 D RA0 PIPA02 RA1 PIPA03 RA2 PIPA04 POTXD TXD
PIPA01

COPB PB
1 2 3 4 5 6 7 8 R24 PIPB01 PIR2401 PIR2402 COR25 PIR2502 R25 10K PIPB02 PIR2501
PIPB04 PIR2701 R28 PIPB05 PIR2801

COR24

RB0

Text

RB1 RB2 RB3 RB4 RB5 RB6 RB7 RB0_1

COD1 D1 7 a 6 PID106 b 4 PID104 c 2 PID102 d 1 PID101 e 9 PID109 f 10 PID1010 g 5 PID105 DP


PID107

K K

3 8 PID108
PID103

COR26 10K RB1 R26 PIPB03 PIR2601 COR27 PIR2602 RB2 R27 10K
RB3 COR29 PIR2902 RB4 R29 10K PIPB06 PIR2901 COR30 PIR3002 RB5 R30 10K PIPB07 PIR3001 COR31 PIR3102 RB6 R31 10K PIPB08 PIR3101 RB7 10K

RA0

COR22 PIR2202 R22 PIR2201 PIQ2002


10K +5

PIQ20 1COQ20
Q20

RB1 RB2 RB3 RB4 RB5 RB6 RB7 RB0_1

COD2 D2 7 a 6 PID206 b 4 PID204 c 2 PID202 d 1 PID201 e 9 PID209 f 10 PID2010 g 5 PID205 DP


PID207

K K

PID203 PID208

3 8

PB RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 1 2 3 4 5 6 7 8 +5

PIVR4101 PIVR4103
GND

RA1 +5

COR23 PIR2302 R23 PIR2301 PIQ2102


10K

PIQ210 COQ21
Q21

PIVR4102

COVR41 VR41 15K


RB1 RB2 RB3 RB4 RB5 RB6 RB7

COR28 PIR2802 10K

PIR2702

PIQ20 3
COR20 R20
10k GND TXD

PIQ2103
+5 P2 1 2 GND DOWN CODOWN +5
PIJ101

PIR20 2
RA2

PIR2102 PIR2101

+5

COLCD16x2 LCD16x2 GND 1 VSS 2 PILCD16x202 VDD 3 PILCD16x203 VO 4 PILCD16x204 RS 5 PILCD16x205 RW 6 PILCD16x206 EN 11 PILCD16x2011 DB4 12 PILCD16x2012 DB5 13 PILCD16x2013 DB6 14 PILCD16x2014 DB7
PILCD16x201 PILCD16x2015
PILCD16x2016

COR21 R21
10k

GND

15 16

A K

PORB0 RB0 PIJ201 COJ2 PIJ202PORB001 RB0_1 J2


+5

PIR20 1
UP

PISW10
COSW1

PIDOWN01

COP2 P2
1 2

PIP201

COJ1 J1
J2

R6 PIJ102

PIQ502

PIQ501COQ5
Q5

LCD16x2

PIP202

GND C

MODULO DISPLAY 7

PISW102
GND

PIDOWN02
GND

10k RB0

PIQ503
GND C

MODULO LCD

MODULO IN/OUT
PA

MODULO PAP
POPHASE1 PHASE1
PIL102

PORA0 RA0 PORA1 RA1 PORA2 RA2


RA3

1 2 3 4 PB

RB0_1

PIR1001

COR10 R10 PIR1002 PIL101 220


R11 COR11 220

COL1 L1 COL2 L2
RB1 D1
PIR101

+12 PHASE1 +12 PHASE4 PHASE2 PHASE3

COMOTOR MOTOR
PIMOTOR01 PIMOTOR02

RB1

PIR1101

PIR1102 PIL201 PIL202

COR1 R1

PIR102

Q1

PIMOTOR03
PIMOTOR04 PIMOTOR05 PIMOTOR06

RB2

PIR1201

RB0 RB1 PORB1 RB2 PORB2 RB3 PORB3 PORB4 RB4 PORB5 RB5 PORB6 RB6 RB7 PORB7 RB0 +5

1 2 3 4 5 6 7 8 RB0_1

220

PIR1202 PIL301 PIL302

R12 COR12

COL3 L3 COL4 L4
PIL402

1k PB RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 1 2 3 4 5 6 7 8

1 2 3 4 5 6

RB3

PIR1301

COR13 R13 PIR1302 PIL401 220


220 R14 COR14 PIR1402 PIL501

GND

RB4

L5 COL5
PIL502

PIR1401

RB5 J2

PIR1501

220

PIR1502 PIL601

COR15 R15

L6 COL6
PIL602

RB2

PIR201

COR2 R2

PIQ201COQ2
PIR202 PIQ202

POPHASE2 PHASE2
D2

L1 PHASE1 = BLACK INA = BLACK L2 PHASE2 = YELLOW INB = ORANGE L1 PHASE3 = BROWN INC = BROWM L2 PHASE4 = GRAY IND = YELLOW

Q2

1k L7 COL7 +5 P1 1 2 GND +12

PIQ203
GND

RB6

PIR1601

220

R16 COR16 PIR1602 PIL701

RB5

RB6 SW2

RB7 SW3

PIL702

COP1 P1
1 2 RB7 +5
PIR1701

PIP101
PIP102

220

PIR1702 PIL801

COR17 R17

L8 COL8
PIL802

+5

GND

+5

P2 1 2

GND

RB3

PIR301

COR3 R3

PIQ301COQ3 PID302
PIR302 PIQ302

PHASE3 POPHASE3

SW1

Q3

COD3 D3
GND GND GND

PIR502
+5 + LS1 COLS1 R8 COR8 PORA3PIR801 RA3 A
PIR802 PIQ102 PILS101

COR5 R5
10k RA1

PIR602

COR6 R6
10k RA2

PIR702

1k

COR7 R7
10k GND +5

PIQ30
GND

PID301
PHASE4 POPHASE4 D4 COD4 A

PILS102

1 2

RA0

PIR501
SW1

PIR601

PIQ10 COQ1
Q1

PISW201 COSW2
SW2

PIR701

PISW301 COSW3
SW3

P3 COP3 1 2 RB4
PIR401

PIP301

PIP302

R4 COR4

PIQ401COQ4 PID402
PIR402 PIQ402

Q4

10k

PIQ103
GND GND

PISW20
GND

PISW302
GND

GND

1k

PIQ403
GND

PID401

S-ar putea să vă placă și