manual de microcontrolador 16f873 - fimee.ugto.mx · pdf file1.2. diferencia entre...

46
Manual de Microcontrolador 16F873 Universidad de Guanajuato FIMEE Barr´on Zambrano Jos´ e Hugo Dr. Gustavo Cerda Villafa˜ na

Upload: dangnga

Post on 27-Feb-2018

249 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

Manual de Microcontrolador 16F873

Universidad de GuanajuatoF I M E E

Barron Zambrano Jose HugoDr. Gustavo Cerda Villafana

Page 2: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

Indice general

Indice de cuadros III

Indice de figuras IV

1. Introduccion 11.1. Controlador y microcontrolador . . . . . . . . . . . . . . . . . 11.2. Diferencia entre microprocesador y microcontrolador . . . . . 21.3. Aplicaciones de los microcontroladores . . . . . . . . . . . . . 41.4. El mercado de los microcontroladores . . . . . . . . . . . . . . 41.5. ¿Que microcontrolador emplear? . . . . . . . . . . . . . . . . . 51.6. Recursos comunes a todos los microcontroladores . . . . . . . 8

1.6.1. Arquitectura basica . . . . . . . . . . . . . . . . . . . . 81.6.2. El procesador o CPU . . . . . . . . . . . . . . . . . . . 91.6.3. Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . 101.6.4. Puertas de Entrada y Salida . . . . . . . . . . . . . . . 121.6.5. Reloj principal . . . . . . . . . . . . . . . . . . . . . . 12

1.7. Recursos especiales . . . . . . . . . . . . . . . . . . . . . . . . 131.7.1. Temporizadores o Timers . . . . . . . . . . . . . . . . . 131.7.2. Perro guardian o Watchdog . . . . . . . . . . . . . . . 141.7.3. Proteccion ante fallo de alimentacion o Brownout . . . 141.7.4. Estado de reposo o de bajo consumo . . . . . . . . . . 141.7.5. Conversor A/D (CAD) . . . . . . . . . . . . . . . . . . 141.7.6. Conversor D/A (CDA) . . . . . . . . . . . . . . . . . . 151.7.7. Comparador analogico . . . . . . . . . . . . . . . . . . 151.7.8. Modulador de anchura de pulso o PWM . . . . . . . . 151.7.9. Puertos de E/S digitales . . . . . . . . . . . . . . . . . 151.7.10. Puertos de comunicacion . . . . . . . . . . . . . . . . . 16

1.8. Herramientas para el desarrollo de aplicaciones . . . . . . . . . 16

I

Page 3: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

INDICE GENERAL II

1.8.1. Desarrollo del software (Ensamblador) . . . . . . . . . 16

2. Introduccion al PIC16F873 192.1. Descripcion del PIC16F873 . . . . . . . . . . . . . . . . . . . . 192.2. Encapsulado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.3. Organizacion de memoria . . . . . . . . . . . . . . . . . . . . . 21

2.3.1. Memoria de Datos (RAM) . . . . . . . . . . . . . . . . 212.4. Puertos de Entrada/Salida . . . . . . . . . . . . . . . . . . . . 23

2.4.1. PUERTO A y el Registro TRISA . . . . . . . . . . . . 232.4.2. PUERTO B y el Registro TRISB . . . . . . . . . . . . 232.4.3. PUERTO C y el Registro TRISC . . . . . . . . . . . . 23

2.5. Ejemplo de configuracion para E/S . . . . . . . . . . . . . . . 24

3. Algoritmos implementados 263.1. Control de velocidad . . . . . . . . . . . . . . . . . . . . . . . 26

3.1.1. Driver L293D . . . . . . . . . . . . . . . . . . . . . . . 273.1.2. Programa para control de velocidad . . . . . . . . . . . 303.1.3. Diagrama de implementacion . . . . . . . . . . . . . . 32

3.2. Medidor de distancia con un sensor infrarrojo . . . . . . . . . 333.2.1. Convertidor Analogico-Digital . . . . . . . . . . . . . . 333.2.2. Sensor infrarrojo GP2D12. . . . . . . . . . . . . . . . . 373.2.3. Programa para la medicion de distancia . . . . . . . . 39

3.3. Implementacion . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Universidad de Guanajuato FIMEE

Page 4: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

Indice de cuadros

2.1. Caracterısticas del PIC16F873 . . . . . . . . . . . . . . . . . 192.2. Descripcion de pines del 16F873 . . . . . . . . . . . . . . . . . 25

3.1. Descripcion de funcionamiento del L293D . . . . . . . . . . . . 293.2. Maximas frecuencias de operacion . . . . . . . . . . . . . . . . 37

III

Page 5: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

Indice de figuras

1.1. Estructura de un sistema abierto basado en un microprocesador. 31.2. El microcontrolador es un sistema cerrado. . . . . . . . . . . . 4

2.1. Encapsulado del PIC16F873. . . . . . . . . . . . . . . . . . . . 202.2. Mapa de los bancos del PIC16F873. . . . . . . . . . . . . . . . 22

3.1. Modulacion por ancho de pulso (PWM). . . . . . . . . . . . . 273.2. Dirver L293D bloques. . . . . . . . . . . . . . . . . . . . . . . 283.3. Dirver L293D encapsulado . . . . . . . . . . . . . . . . . . . . 283.4. Conexion del L293D. . . . . . . . . . . . . . . . . . . . . . . . 293.5. Diagrama de conexion. . . . . . . . . . . . . . . . . . . . . . . 333.6. Registro de control ADCON0. . . . . . . . . . . . . . . . . . . 343.7. Registro de control ADCON1. . . . . . . . . . . . . . . . . . . 353.8. Operacion de justificacion. . . . . . . . . . . . . . . . . . . . . 373.9. Sensor infrarrojo GP2D12. . . . . . . . . . . . . . . . . . . . . 383.10. Curva de respuesta del sensor GP2D12. . . . . . . . . . . . . . 383.11. Diagrama de la implementacion para medicion de distancia. . 41

IV

Page 6: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

Capıtulo 1

Introduccion

Los microcontroladores estan conquistando el mundo. Estan presentesen nuestro trabajo, en nuestra casa y en nuestra vida, en general. Se puedenencontrar controlando el funcionamiento de los ratones y teclados de las com-putadoras, en los telefonos, en los hornos de microondas y los televisores denuestro hogar. Pero la invasion acaba de comenzar y el nacimiento del sigloXXI sera testigo de la conquista masiva de estas diminutas computadoras,que gobernaran la mayor parte de los aparatos que fabricaremos y usemoslos humanos.

1.1. Controlador y microcontrolador

Recibe el nombre de controlador el dispositivo que se emplea para el go-bierno de uno o varios procesos. Por ejemplo, el controlador que regula elfuncionamiento de un horno dispone de un sensor que mide constantementesu temperatura interna y, cuando traspasa los lımites prefijados, genera lassenales adecuadas que accionan los actuadores que intentan llevar el valor dela temperatura dentro del rango estipulado.

Aunque el concepto de controlador ha permanecido invariable a travesdel tiempo, su implementacion fısica ha variado frecuentemente. Hace tresdecadas, los controladores se construıan exclusivamente con componentes delogica discreta, posteriormente se emplearon los microprocesadores, que serodeaban con chips de memoria y E/S sobre una tarjeta de circuito impreso.

1

Page 7: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

1.2. Diferencia entre microprocesador y microcontrolador 2

En la actualidad, todos los elementos del controlador se han podido incluiren un chip, el cual recibe el nombre de microcontrolador. Realmente consisteen una sencilla pero completa computadora contenida en el corazon (chip)de un circuito integrado.

Un microcontrolador es un circuito integrado de alta escala de integracionque incorpora la mayor parte de los elementos que configuran un controlador.

Un microcontrolador dispone normalmente de los siguientes componentes:Procesador o CPU (Unidad Central de Procesamiento). Memoria RAM paracontener los datos. Memoria para el programa tipo ROM/PROM/EPROM.Lıneas de E/S para comunicarse con el exterior. Diversos modulos para elcontrol de perifericos (temporizadores, Puertos Serie y Paralelo, CAD: Con-versores Analogico/Digital, CDA: Conversores Digital/Analogico, etc.). Gen-erador de pulsos de reloj que sincronizan el funcionamiento de todo el sistema.

Los productos que para su regulacion incorporan un microcontroladordisponen de las siguientes ventajas: Aumento de prestaciones, un mayor con-trol sobre un determinado elemento representa una mejora considerable enel mismo. Aumento de la fiabilidad al reemplazar el microcontrolador porun elevado numero de elementos disminuye el riesgo de averıas y se precisanmenos ajustes. Reduccion del tamano en el producto acabado. La integraciondel microcontrolador en un chip disminuye el volumen, la mano de obra y losstocks. Mayor flexibilidad: las caracterısticas de control estan programadaspor lo que su modificacion solo necesita cambios en el programa de instruc-ciones.

Debido a su reducido tamano es posible montar el controlador en el propiodispositivo al que gobierna. En este caso el controlador recibe el nombre decontrolador empotrado (embedded controller).

1.2. Diferencia entre microprocesador y mi-

crocontrolador

El microprocesador es un circuito integrado que contiene la Unidad Cen-tral de Proceso (CPU), tambien llamada procesador, de una computadora. La

Universidad de Guanajuato FIMEE

Page 8: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

1.2. Diferencia entre microprocesador y microcontrolador 3

UCP esta formada por la Unidad de Control, que interpreta las instrucciones,y el Camino de Datos, que las ejecuta. Las patitas de un microprocesadorsacan al exterior las lıneas de sus buses de direcciones, datos y control, parapermitir conectarle con la Memoria y los Modulos de E/S y configurar unacomputadora implementada por varios circuitos integrados. Se dice que unmicroprocesador es un sistema abierto porque su configuracion es variable deacuerdo con la aplicacion a la que se destine. (Figura 1.1)

Figura 1.1: Estructura de un sistema abierto basado en un microprocesador.

La disponibilidad de los buses en el exterior permite que se configure a lamedida de la aplicacion. Si solo se dispusiese de un modelo de microproce-sador, este deberıa tener muy potenciados todos sus recursos para poder-se adaptar a las exigencias de las diferentes aplicaciones. Esta potenciacionsupondrıa en muchos casos un despilfarro.

El microcontrolador, por otro lado, es un sistema cerrado. Todas las partesdel microcontrolador estan contenidas en su interior y solo salen al exteriorlas lıneas que gobiernan los perifericos.

En la practica cada fabricante de microcontroladores oferta un eleva-do numero de modelos diferentes, desde los mas sencillos hasta los maspoderosos. Es posible seleccionar la capacidad de las memorias, el numero delıneas de E/S, la cantidad y potencia de los elementos auxiliares, la velocidadde funcionamiento, etc. Por todo ello, un aspecto muy destacado del disenoes la seleccion del microcontrolador a utilizar.

Universidad de Guanajuato FIMEE

Page 9: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

1.3. Aplicaciones de los microcontroladores 4

Figura 1.2: El microcontrolador es un sistema cerrado.

1.3. Aplicaciones de los microcontroladores

Cada vez existen mas productos que incorporan un microcontrolador conel fin de aumentar sustancialmente sus prestaciones, reducir su tamano ycosto, mejorar su fiabilidad y disminuir el consumo. Algunos fabricantes demicrocontroladores superan el millon de unidades de un modelo determina-do producidas en una semana. Este dato puede dar una idea de la masivautilizacion de estos componentes.

Los microcontroladores estan siendo empleados en multitud de sistemaspresentes en nuestra vida diaria, como pueden ser juguetes, horno microon-das, frigorıficos, televisores, computadoras, impresoras, modems, el sistemade arranque de nuestro coche, etc. Y otras aplicaciones con las que segu-ramente no estaremos tan familiarizados como instrumentacion electronica,control de sistemas en una nave espacial, etc. Una aplicacion tıpica podrıaemplear varios microcontroladores para controlar pequenas partes del sis-tema. Estos pequenos controladores podrıan comunicarse entre ellos y conun procesador central, probablemente mas potente, para compartir la infor-macion y coordinar sus acciones, como, de hecho, ocurre ya habitualmenteen cualquier PC.

1.4. El mercado de los microcontroladores

Aunque en el mercado de la microinformatica la mayor atencion la aca-paran los desarrollos de los microprocesadores, lo cierto es que se venden

Universidad de Guanajuato FIMEE

Page 10: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

1.5. ¿Que microcontrolador emplear? 5

cientos de microcontroladores por cada uno de aquellos. Existe una gran di-versidad de microcontroladores. Quiza la clasificacion mas importante seaentre microcontroladores de 4, 8, 16 o 32 bits. Aunque las prestaciones delos microcontroladores de 16 y 32 bits son superiores a los de 4 y 8 bits, larealidad es que los microcontroladores de 8 bits dominan el mercado y losde 4 bits se resisten a desaparecer. La razon de esta tendencia es que losmicrocontroladores de 4 y 8 bits son apropiados para la gran mayorıa delas aplicaciones, lo que hace absurdo emplear micros mas potentes y conse-cuentemente mas caros.

Uno de los sectores que mas tira del mercado del microcontrolador es elmercado automovilıstico. De hecho, algunas de las familias de microcontro-ladores actuales se desarrollaron pensando en este sector, siendo modificadasposteriormente para adaptarse a sistemas mas genericos. El mercado del au-tomovil es ademas uno de los mas exigentes: los componentes electronicosdeben operar bajo condiciones extremas de vibraciones, choques, ruido, etc.y seguir siendo fiables. El fallo de cualquier componente en un automovilpuede ser el origen de un accidente.

En cuanto a las tecnicas de fabricacion, cabe decir que practicamentela totalidad de los microcontroladores actuales se fabrican con tecnologıaCMOS (Complementary Metal Oxide Semiconductor). Esta tecnologıa su-pera las tecnicas anteriores por su bajo consumo y alta inmunidad al ruido.La distribucion de las ventas segun su aplicacion es la siguiente: Una ter-cera parte se absorbe en las aplicaciones relacionadas con las computadorasy sus perifericos. La cuarta parte se utiliza en las aplicaciones de consumo(electrodomesticos, juegos, TV, vıdeo, etc.). Tambien los modernos micro-controladores de 32 bits van afianzando sus posiciones en el mercado, siendolas areas de mas interes el procesamiento de imagenes, las comunicaciones, lasaplicaciones militares, los procesos industriales y el control de los dispositivosde almacenamiento masivo de datos.

1.5. ¿Que microcontrolador emplear?

A la hora de escoger el microcontrolador a emplear en un diseno concre-to hay que tener en cuenta multitud de factores, como la documentacion yherramientas de desarrollo disponibles y su precio, la cantidad de fabricantes

Universidad de Guanajuato FIMEE

Page 11: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

1.5. ¿Que microcontrolador emplear? 6

que lo producen y por supuesto las caracterısticas del microcontrolador (tipode memoria de programa, numero de temporizadores, interrupciones, etc.).Los costos, como es logico, los fabricantes de microcontroladores compitenduramente para vender sus productos. Y no les va demasiado mal ya quesin hacer demasiado ruido venden 10 veces mas microcontroladores que mi-croprocesadores. Para que nos hagamos una idea, para el fabricante que usael microcontrolador en su producto una diferencia de precio en el micro-controlador es importante (el consumidor debera pagar ademas el costo delempaquetado, el de los otros componentes, el diseno del hardware y el desar-rollo del software).

Si el fabricante desea reducir costos debe tener en cuenta las herramien-tas de apoyo con que va a contar: emuladores, simuladores, ensambladores,compiladores, etc. Es habitual que muchos de ellos siempre se apuesten pormicrocontroladores pertenecientes a una unica familia.

Antes de seleccionar un microcontrolador es imprescindible analizar losrequisitos de la aplicacion.

Procesamiento de datos; Puede ser necesario que el microcontrolador rea-lice calculos crıticos en un tiempo limitado. En ese caso debemos ase-gurarnos de seleccionar un dispositivo suficientemente rapido para ello.Por otro lado, habra que tener en cuenta la precision de los datos amanejar: si no es suficiente con un microcontrolador de 8 bits, puedeser necesario acudir a microcontroladores de 16 o 32 bits, o incluso ahardware de punto flotante. Una alternativa mas barata y quiza sufi-ciente es usar librerıas para manejar los datos de alta precision.

Entrada Salida: para determinar las necesidades de Entrada/Salida del sis-tema es conveniente dibujar un diagrama de bloques del mismo, de talforma que sea sencillo identificar la cantidad y tipo de senales a contro-lar. Una vez realizado este analisis puede ser necesario anadir perifericoshardware externos o cambiar a otro microcontrolador mas adecuado aese sistema.

Consumo: algunos productos que incorporan microcontroladores estan ali-mentados con baterıas y su funcionamiento puede ser tan vital comoactivar una alarma antirrobo. Lo mas conveniente en un caso como

Universidad de Guanajuato FIMEE

Page 12: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

1.5. ¿Que microcontrolador emplear? 7

este puede ser que el microcontrolador este en estado de bajo consumopero que despierte ante la activacion de una senal (una interrupcion) yejecute el programa adecuado para procesarla.

Memoria: para detectar las necesidades de memoria de nuestra aplicaciondebemos separarla en memoria volatil (RAM), memoria no volatil (ROM,EPROM, etc.) y memoria no volatil modificable (EEPROM). Este ulti-mo tipo de memoria puede ser util para incluir informacion especıfica dela aplicacion como un numero de serie o parametros de calibracion. Eltipo de memoria a emplear vendra determinado por el volumen de ven-tas previsto del producto: de menor a mayor volumen sera convenienteemplear EPROM, OTP (One Time Pro- grammable) y ROM. En cuan-to a la cantidad de memoria necesaria puede ser imprescindible realizaruna version preliminar, aunque sea en pseudo-codigo, de la aplicaciony a partir de ella hacer una estimacion de cuanta memoria volatil y novolatil es necesaria y si es conveniente disponer de memoria no volatilmodificable.

Ancho de palabra: el criterio de diseno debe ser seleccionar el microcon-trolador de menor ancho de palabra que satisfaga los requerimientosde la aplicacion. Usar un microcontrolador de 4 bits supondra una re-duccion en los costos importante, mientras que uno de 8 bits puede serel mas adecuado si el ancho de los datos es de un byte. Los microcon-troladores de 16 y 32 bits, debido a su elevado costo, deben reservarsepara aplicaciones que requieran sus altas prestaciones (Entrada/Salidapotente o espacio de direccionamiento muy elevado).

Diseno de la placa: la seleccion de un microcontrolador concreto condi-cionara el diseno de la placa de circuitos. Debe tenerse en cuenta quequiza usar un microcontrolador barato encarezca el resto de compo-nentes del diseno. Los microcontroladores mas populares se encuentran,sin duda, entre las mejores elecciones: 8048 (Intel). Es el padre de losmicrocontroladores actuales, el primero de todos. Su precio, disponibili-dad y herramientas de desarrollo hacen que todavıa sea muy popular.8051 (Intel y otros). Es sin duda el microcontrolador mas popular. Facilde programar, pero potente. Esta bien documentado y posee cientos devariantes e incontables herramientas de desarrollo. 80186, 80188 y 80386EX (Intel). Versiones en microcontrolador de los populares microproce-sadores 8086 y 8088. Su principal ventaja es que permiten aprovechar

Universidad de Guanajuato FIMEE

Page 13: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

1.6. Recursos comunes a todos los microcontroladores 8

las herramientas de desarrollo para PC. 68HC11 (Motorola y Toshiba).Es un microcontrolador de 8 bits potente y popular con gran cantidadde variantes. 683xx (Motorola). Surgido a partir de la popular familia68k, a la que se incorporan algunos perifericos. Son microcontroladoresde altısimas prestaciones.

PIC (MicroChip) familia de microcontroladores que gana popularidaddıa a dıa. Fueron los primeros microcontroladores RISC. Es precisoresaltar en este punto que existen innumerables familias de microcon-troladores, cada una de las cuales posee un gran numero de variantes.

1.6. Recursos comunes a todos los microcon-

troladores

Al estar todos los microcontroladores integrados en un chip, su estructurafundamental y sus caracterısticas basicas son muy parecidas. Todos debendisponer de los bloques esenciales: Procesador, memoria de datos y de in-strucciones, lıneas de E/S, oscilador de reloj y modulos controladores deperifericos. Sin embargo, cada fabricante intenta enfatizar los recursos masidoneos para las aplicaciones a las que se destinan preferentemente.

En esta parte se hace un recorrido de todos los recursos que se hallan entodos los microcontroladores describiendo las diversas alternativas y opcionesque pueden encontrarse segun el modelo seleccionado.

1.6.1. Arquitectura basica

Aunque inicialmente todos los microcontroladores adoptaron la arquitec-tura clasica de von Neumann, en el momento presente se impone la arqui-tectura Harvard.

La arquitectura de von Neumann se caracteriza por disponer de una solamemoria principal donde se almacenan datos e instrucciones de forma in-distinta. A dicha memoria se accede a traves de un sistema de buses unico(direcciones, datos y control). La arquitectura Harvard dispone de dos memo-rias independientes, una que contiene solo instrucciones y otra, solo datos.

Universidad de Guanajuato FIMEE

Page 14: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

1.6. Recursos comunes a todos los microcontroladores 9

Ambas disponen de sus respectivos sistemas de buses de acceso y es posiblerealizar operaciones de acceso (lectura o escritura) simultaneamente en ambasmemorias.Los microcontroladores PIC responden a la arquitectura Harvard.

1.6.2. El procesador o CPU

Es el elemento mas importante del microcontrolador y determina sus prin-cipales caracterısticas, tanto a nivel hardware como software. Se encarga dedireccionar la memoria de instrucciones, recibir el codigo de la instruccionen curso, su decodificacion y la ejecucion de la operacion que implica la in-struccion, ası como la busqueda de los operandos y el almacenamiento delresultado. Existen tres orientaciones en cuanto a la arquitectura y funcional-idad de los procesadores actuales.

CISC: Un gran numero de procesadores usados en los microcontroladoresestan basados en la filosofıa CISC (Computadoras de Juego de Instru-cciones Complejo). Disponen de mas de 80 instrucciones maquina ensu repertorio, algunas de las cuales son muy sofisticadas y potentes,requiriendo muchos ciclos para su ejecucion. Una ventaja de los proce-sadores CISC es que ofrecen al programador instrucciones complejasque actuan como macros.

RISC: Tanto la industria de los computadores comerciales como la de losmicrocontroladores estan decantandose hacia la filosofıa RISC (Com-putadoras de Juego de Instrucciones Reducido). En estos procesadoresel repertorio de instrucciones maquina es muy reducido y las instruc-ciones son simples y, generalmente, se ejecutan en un ciclo. La sencillezy rapidez de las instrucciones permiten optimizar el hardware y el soft-ware del procesador.

SISC: En los microcontroladores destinados a aplicaciones muy concretas,el juego de instrucciones, ademas de ser reducido, es especıfico, o sea,las instrucciones se adaptan a las necesidades de la aplicacion prevista.Esta filosofıa se ha bautizado con el nombre de SISC (Computadorasde Juego de Instrucciones Especıfico).

Universidad de Guanajuato FIMEE

Page 15: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

1.6. Recursos comunes a todos los microcontroladores 10

1.6.3. Memoria

En los microcontroladores la memoria de instrucciones y datos esta in-tegrada en el propio chip. Una parte debe ser no volatil, tipo ROM, y sedestina a contener el programa de instrucciones que gobierna la aplicacion.Otra parte de memoria sera tipo RAM, volatil, y se destina a guardar lasvariables y los datos.

Hay dos peculiaridades que diferencian a los microcontroladores de lascomputadoras personales: No existen sistemas de almacenamiento masivocomo disco duro o disquetes. Como el microcontrolador solo se destina a unatarea en la memoria ROM, solo hay que almacenar un unico programa detrabajo. La RAM en estos dispositivos es de poca capacidad pues solo debecontener las variables y los cambios de informacion que se produzcan en eltranscurso del programa.

Por otra parte, como solo existe un programa activo, no se requiereguardar una copia del mismo en la RAM pues se ejecuta directamente desde laROM. Los usuarios de computadoras personales estan habituados a manejarMegabytes de memoria, pero, los disenadores con microcontroladores traba-jan con capacidades de ROM comprendidas entre 512 bytes y 8 k bytes y deRAM comprendidas entre 20 y 512 bytes.

Segun el tipo de memoria ROM que dispongan los microcontroladores,la aplicacion y utilizacion de los mismos es diferente. Se describen las cincoversiones de memoria no volatil que se pueden encontrar en los microcontro-ladores del mercado.

ROM: con mascara Es una memoria no volatil de solo lectura cuyo con-tenido se graba durante la fabricacion del chip. El elevado costo deldiseno de la mascara solo hace aconsejable el empleo de los micro-controladores con este tipo de memoria cuando se precisan cantidadessuperiores a varios miles de unidades.

OTP: El microcontrolador contiene una memoria no volatil de solo lectura”programable una sola vez”por el usuario. Es el usuario quien puedeescribir el programa en el chip mediante un sencillo grabador controla-do por un programa desde una PC. La version OTP es recomendablecuando es muy corto el ciclo de diseno del producto, o bien, en la cons-

Universidad de Guanajuato FIMEE

Page 16: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

1.6. Recursos comunes a todos los microcontroladores 11

truccion de prototipos y series muy pequenas. Tanto en este tipo dememoria como en la EPROM, se suele usar la encriptacion mediantefusibles para proteger el codigo contenido.

EPROM: Los microcontroladores que disponen de memoria EPROM (Era-sable Programmable Read OnIy Memory) pueden borrarse y grabarsemuchas veces. La grabacion se realiza, como en el caso de los OTP,con un grabador gobernado desde una PC. Si, posteriormente, se deseaborrar el contenido, disponen de una ventana de cristal en su superficiepor la que se somete a la EPROM a rayos ultravioleta durante variosminutos. Las capsulas son de material ceramico y son mas caros que losmicrocontroladores con memoria OTP que estan hechos con materialplastico.

EEPROM: Se trata de memorias de solo lectura, programables y borrableselectricamente EEPROM (Electrical Erasable Programmable Read OnIyMemory). Tanto la programacion como el borrado, se realizan electri-camente desde el propio grabador y bajo el control programado de unaPC. Es muy comoda y rapida la operacion de grabado y la de borrado.No disponen de ventana de cristal en la superficie.

Los microcontroladores dotados de memoria EEPROM una vez insta-lados en el circuito, pueden grabarse y borrarse cuantas veces se quierasin ser retirados de dicho circuito. Para ello se usan ”grabadores encircuito”que confieren una gran flexibilidad y rapidez a la hora de rea-lizar modificaciones en el programa de trabajo. El numero de veces quepuede grabarse y borrarse una memoria EEPROM es finito, por lo queno es recomendable una reprogramacion continua. Son muy idoneospara la ensenanza y la Ingenierıa de diseno.

Se va extendiendo en los fabricantes la tendencia de incluir una pequenazona de memoria EEPROM en los circuitos programables para guardary modificar comodamente una serie de parametros que adecuan el dis-positivo a las condiciones del entorno. Este tipo de memoria es relati-vamente lenta.

FLASH: Se trata de una memoria no volatil, de bajo consumo, que se puedeescribir y borrar. Funciona como una ROM y una RAM pero consume

Universidad de Guanajuato FIMEE

Page 17: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

1.6. Recursos comunes a todos los microcontroladores 12

menos y es mas pequena. A diferencia de la ROM, la memoria FLASHes programable en el circuito. Es mas rapida y de mayor densidad quela EEPROM.

La alternativa FLASH esta recomendada frente a la EEPROM cuandose precisa gran cantidad de memoria de programa no volatil. Es masveloz, pero tolera menos ciclos de escritura/borrado.

Las memorias EEPROM y FLASH son muy utiles al permitir que los mi-crocontroladores que las incorporan puedan ser reprogramados en circuito,es decir, sin tener que sacar el circuito integrado de la tarjeta. Ası, un dis-positivo con este tipo de memoria incorporado al control del motor de unautomovil permite que pueda modificarse el programa durante la rutina demantenimiento periodico, compensando los desgastes y otros factores talescomo la compresion, la instalacion de nuevas piezas, etc. La reprogramaciondel microcontrolador puede convertirse en una labor rutinaria dentro de lapuesta a punto.

1.6.4. Puertas de Entrada y Salida

La principal utilidad de las patitas que posee la capsula que contiene unmicrocontrolador es soportar las lıneas de E/S que comunican al computadorinterno con los perifericos exteriores. Segun los controladores de perifericosque posea cada modelo de microcontrolador, las lıneas de E/S se destinan aproporcionar el soporte a las senales de entrada, salida y control.

1.6.5. Reloj principal

Todos los microcontroladores disponen de un circuito oscilador que gene-ra una onda cuadrada de alta frecuencia, que configura los pulsos de relojusados en la sincronizacion de todas las operaciones del sistema. General-mente, el circuito de reloj esta incorporado en el microcontrolador y solo senecesitan unos pocos componentes exteriores para seleccionar y estabilizarla frecuencia de trabajo. Dichos componentes suelen consistir en un cristalde cuarzo junto a elementos pasivos o bien un resonador ceramico o una redRC. Aumentar la frecuencia de reloj supone disminuir el tiempo en que seejecutan las instrucciones pero lleva aparejado un incremento del consumode energıa.

Universidad de Guanajuato FIMEE

Page 18: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

1.7. Recursos especiales 13

1.7. Recursos especiales

Cada fabricante oferta numerosas versiones de una arquitectura basicade microcontrolador. En algunas amplıa las capacidades de las memorias, enotras incorpora nuevos recursos, en otras reduce las prestaciones al mınimopara aplicaciones muy simples, etc. La labor del disenador es encontrar elmodelo mınimo que satisfaga todos los requerimientos de su aplicacion. Deesta forma, minimizara el coste, el hardware y el software. Los principalesrecursos especıficos que incorporan los microcontroladores son:

Temporizadores o ”Timers”.

Perro guardian o ”Watchdog”.

Proteccion ante fallo de alimentacion o ”Brownout”.

Estado de reposo o de bajo consumo.

Conversor A/D. o Conversor D/A.

Comparador analogico.

Modulador de anchura de pulsos o PWM.

Puertos de E/S digitales.

Puertos de comunicacion.

1.7.1. Temporizadores o Timers

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

Para la medida de tiempos se carga un registro con el valor adecuado ya continuacion dicho valor se va incrementando o decrementando al ritmode los pulsos de reloj o algun multiplo hasta que se desborde y llegue a 0,momento en el que se produce un aviso. Cuando se desean contar acontec-imientos que se materializan por cambios de nivel o flancos en alguna de laspatitas del microcontrolador, el mencionado registro se va incrementando odecrementando al ritmo de dichos pulsos.

Universidad de Guanajuato FIMEE

Page 19: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

1.7. Recursos especiales 14

1.7.2. Perro guardian o Watchdog

Cuando una computadora personal se bloquea por un fallo del softwareu otra causa, se pulsa el boton del reset y se reinicializa el sistema. Pero unmicrocontrolador funciona sin el control de un supervisor y de forma con-tinuada las 24 horas del dıa. El Perro guardian consiste en un temporizadorque, cuando se desborda y pasa por 0, provoca un reset automaticamente enel sistema. Se debe disenar el programa de trabajo que controla la tarea deforma que refresque o inicialice al Perro guardian antes de que provoque elreset. Si falla el programa o se bloquea, no se refrescara al Perro guardian y,al completar su temporizacion, ”ladrara y ladrara”hasta provocar el reset.

1.7.3. Proteccion ante fallo de alimentacion o Brownout

Se trata de un circuito que resetea al microcontrolador cuando el voltajede alimentacion (VDD) es inferior a un voltaje mınimo (”brownout”). Mien-tras el voltaje de alimentacion sea inferior al de brownout el dispositivo semantiene reseteado, comenzando a funcionar normalmente cuando sobrepasadicho valor.

1.7.4. Estado de reposo o de bajo consumo

Son abundantes las situaciones reales de trabajo en que el microcontro-lador debe esperar, sin hacer nada, a que se produzca algun acontecimientoexterno que le ponga de nuevo en funcionamiento. Para ahorrar energıa, (fac-tor clave en los aparatos portatiles), los microcontroladores disponen de unainstruccion especial (SLEEP en los PIC), que les pasa al estado de reposo ode bajo consumo, en el cual los requerimientos de potencia son mınimos. Endicho estado se detiene el reloj principal y se detienen sus circuitos asociados,quedando sumido en un profundo sueno el microcontrolador. Al activarse unainterrupcion ocasionada por el acontecimiento esperado, el microcontroladorse despierta y reanuda su trabajo.

1.7.5. Conversor A/D (CAD)

Los microcontroladores que incorporan un Conversor A/D (Analogico/Digital)pueden procesar senales analogicas, tan abundantes en las aplicaciones. Sue-len disponer de un multiplexor que permite aplicar a la entrada del CAD

Universidad de Guanajuato FIMEE

Page 20: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

1.7. Recursos especiales 15

diversas senales analogicas desde las patitas del circuito integrado.

1.7.6. Conversor D/A (CDA)

Transforma los datos digitales obtenidos del procesamiento de una com-putadora en su correspondiente senal analogica que saca al exterior por unade las patitas de la capsula. Existen muchos dispositivos que trabajan consenales analogicas.

1.7.7. Comparador analogico

Algunos modelos de microcontroladores disponen internamente de unAmplificador Operacional que actua como comparador entre una senal fijade referencia y otra variable que se aplica por una de las patitas de la capsula.

La salida del comparador proporciona un nivel logico 1 o 0 segun una senalsea mayor o menor que la otra. Tambien hay modelos de microcontroladorescon un modulo de tension de referencia que proporciona diversas tensionesde referencia que se pueden aplicar en los comparadores.

1.7.8. Modulador de anchura de pulso o PWM

Son circuitos que proporcionan en su salida pulsos de anchura variable,que se ofrecen al exterior a traves de las patitas del encapsulado.

1.7.9. Puertos de E/S digitales

Todos los microcontroladores destinan algunas de sus patitas a soportarlıneas de E/S digitales. Por lo general, estas lıneas se agrupan de ocho enocho formando Puertos.

Las lıneas digitales de los Puertos pueden configurarse como Entrada ocomo Salida cargando un 1 o un 0 en el bit correspondiente de un registrodestinado a su configuracion.

Universidad de Guanajuato FIMEE

Page 21: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

1.8. Herramientas para el desarrollo de aplicaciones 16

1.7.10. Puertos de comunicacion

Con objeto de dotar al microcontrolador de la posibilidad de comunicarsecon otros dispositivos externos, otros buses de microprocesadores, buses desistemas, buses de redes y poder adaptarlos con otros elementos bajo otrasnormas y protocolos. Algunos modelos disponen de recursos que permitendirectamente esta tarea, entre los que destacan:

UART: adaptador de comunicacion serie asıncrona.

USART: adaptador de comunicacion serie sıncrona y asıncrona Puerta par-alela esclava para poder conectarse con los buses de otros microproce-sadores.

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

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

CAN(Controller Area Network): , para permitir la adaptacion con re-des de conexionado multiplexado desarrollado conjuntamente por Bosche Intel para el cableado de dispositivos en automoviles. En EE.UU. seusa el J185O.

1.8. Herramientas para el desarrollo de apli-

caciones

Uno de los factores que mas importancia tiene a la hora de seleccionar unmicrocontrolador entre todos los demas es el soporte software como hardwarede que dispone. Un buen conjunto de herramientas de desarrollo puede serdecisivo en la eleccion, ya que pueden suponer una ayuda inestimable enel desarrollo del proyecto. La principal herramienta de ayuda al desarro-llo de sistemas basados en microcontroladores son: Desarrollo del software(Ensamblador).

1.8.1. Desarrollo del software (Ensamblador)

La programacion en lenguaje ensamblador puede resultar un tanto difıcilpara el principiante, pero permite desarrollar programas muy eficientes, yaque otorga al programador el dominio absoluto del sistema. Los fabricantes

Universidad de Guanajuato FIMEE

Page 22: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

1.8. Herramientas para el desarrollo de aplicaciones 17

suelen proporcionar el programa ensamblador de forma gratuita y en cualquiercaso siempre se puede encontrar una version gratuita para los microcontro-ladores mas populares.

Compilador: La programacion en un lenguaje de alto nivel (como el C o elBasic) permite disminuir el tiempo de desarrollo de un producto. Noobstante, si no se programa con cuidado, el codigo resultante puede sermucho mas ineficiente que el programado en ensamblador.

Las versiones mas potentes suelen ser muy caras, aunque para los micro-controladores mas populares pueden encontrarse versiones demo limi-tadas e incluso compiladores gratuitos.

Depuracion: Debido a que los microcontroladores van a controlar disposi-tivos fısicos, los desarrolladores necesitan herramientas que les permi-tan comprobar el buen funcionamiento del microcontrolador cuando esconectado al resto de circuitos.

Simulador: Los simuladores son capaces de ejecutar en una PC programasrealizados para el microcontrolador. Los simuladores permiten tener uncontrol absoluto sobre la ejecucion de un programa, siendo ideales parala depuracion de los mismos. Su gran inconveniente es que es difıcilsimular la entrada y salida de datos del microcontrolador. Tampococuentan con los posibles ruidos en las entradas, pero, al menos, per-miten el paso fısico de la implementacion de un modo mas seguro ymenos costoso, puesto que ahorraremos en grabaciones de chips parala prueba in-situ.

Placas de evaluacion; Se trata de pequenos sistemas con un microcontro-lador ya montado y que suelen conectarse a una PC desde el que secargan los programas que se ejecutan en el microcontrolador. Las pla-cas suelen incluir visualizadores LCD, teclados, LEDs, facil acceso a lospines de E/S, etc.

El sistema operativo de la placa recibe el nombre de programa moni-tor. El programa monitor de algunas placas de evaluacion, aparte de

Universidad de Guanajuato FIMEE

Page 23: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

1.8. Herramientas para el desarrollo de aplicaciones 18

permitir cargar programas y datos en la memoria del microcontrolador,puede permitir en cualquier momento realizar la ejecucion paso a pa-so, monitorizar el estado del microcontrolador o modificar los valoresalmacenados en los registros o en la memoria.

Emuladores en circuito: Se trata de un instrumento que se coloca entreuna PC anfitrion y el zocalo de la tarjeta de circuito impreso donde sealojara el microcontrolador definitivo. El programa es ejecutado desdeuna PC, pero para la tarjeta de aplicacion es como si lo hiciese elmismo microcontrolador que luego ira en el zocalo. Presenta en pantallatoda la informacion tal y como luego sucedera cuando se coloque elencapsulado.

Universidad de Guanajuato FIMEE

Page 24: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

Capıtulo 2

Introduccion al PIC16F873

En este capitulo se trataran las diversas caracterısticas de este microcon-trolador. Tambien se trataran las funciones basica como lo es la configuracionpara la entrada y salida de informacion.

2.1. Descripcion del PIC16F873

El PIC16F873 es un microcontrolador de Microchip,el cual tiene las sigu-ientes caracterısticas.

Cuadro 2.1: Caracterısticas del PIC16F873Caracterıstica Descripcion

Frecuencia de operacion 20 MHzMemoria FLASH de programa (palabra de 14 bits) 4kMemoria de datos (bytes) 192Memoria de datos EEPROM (bytes) 128Interrupciones 13Puertos de E/S Puertos A, B, CTemporizadores 3Modulos de Captura/Comparacion/PWM 2Comunicacion serial tipo MSSP, USARTModulo Analogo-Digital (10 bits) 5 canales de entradaConjunto de instrucciones 35

Por lo que el PIC es muy util para para el desarrollo de diferentes apli-

19

Page 25: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

2.2. Encapsulado 20

caciones tales como control y procesamiento digital de senales.

2.2. Encapsulado

El PIC16F873 se presenta en un encapsulado de 28 pines como se ve enla Figura 2.1 y la descripcion de cada pin se muestran en el cuadro 2.2.

Figura 2.1: Encapsulado del PIC16F873.

Universidad de Guanajuato FIMEE

Page 26: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

2.3. Organizacion de memoria 21

2.3. Organizacion de memoria

Hay tres bloques de memoria en este PIC los cuales son: memoria FLASHde programa , memoria de Datos (RAM) y memoria EEPROM de datos.Debido a las aplicaciones que se tratan , solo es necesario conocer la memoriade Datos (RAM).

2.3.1. Memoria de Datos (RAM)

La memoria de datos esta particionada en multiples bancos los cualescontiene Registro de Proposito General y Registros de Funciones Especiales.Los bits RP1 (STATUS(6)) y RP0 (STATUS(5)) son usados para la selecciondel banco.

P1:RP0 Banco00 001 110 211 3

Cada banco se extiende hasta la direccion 7Fh (128 bytes). La parte bajade cada banco es reservada para los Registros de Funciones Especiales. LosRegistro de Proposito General pueden ser accesados cada uno directamente,o indirectamente.

La conformacion de los bancos se muestra en la Figura 2.2.

Universidad de Guanajuato FIMEE

Page 27: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

2.3. Organizacion de memoria 22

Figura 2.2: Mapa de los bancos del PIC16F873.

Universidad de Guanajuato FIMEE

Page 28: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

2.4. Puertos de Entrada/Salida 23

2.4. Puertos de Entrada/Salida

Los PICs tiene la caracterısticas de que sus pines pueden ser todos configu-rados de acuerdo a la necesidad de la aplicacion, es decir, que lo pines de unmismo puerto pueden ser usados unos como entradas y otros como salidas.

Ademas, algunos pines E/S de los puertos son multiplexados a una fun-ciona alternativa de caracterısticas perifericas. En general, cuando una fun-cion de estas es habilitada, ese pin tal vez no pueda ser usado como un pinde proposito de E/S.

2.4.1. PUERTO A y el Registro TRISA

El puerto A es un puerto bidireccional con un ancho de 6 bits. La cor-respondiente direccion de datos es el registro TRISA. Al puerto A le cor-responde la direccion 05h del banco 0, en tanto que al registro TRISA lecorresponde la misma direccion pero del banco 1. Si queremos que el puertoA funcione como entrada de datos debemos poner los correspondientes bitsdel registro TRISA en 1, en cambio, si queremos que dicho puertos funcionecomo salida debemos colocar los del registro TRISA a 0.

2.4.2. PUERTO B y el Registro TRISB

El puerto B es un puerto bidireccional con un ancho de 8 bits. La cor-respondiente direccion de datos es el registro TRISB. Al puerto B le cor-responde la direccion 06h del banco 0, en tanto que al registro TRISB lecorresponde la misma direccion pero del banco 1.

La configuracion del puerto B se realiza de la misma forma que el puertoA, solo que ahora se manipula el registro TRISB.

2.4.3. PUERTO C y el Registro TRISC

El puerto C es un puerto bidireccional con un ancho de 8 bits. La cor-respondiente direccion de datos es el registro TRISC. Al puerto A le cor-responde la direccion 07h del banco 0, en tanto que al registro TRISC lecorresponde la misma direccion pero del banco 1.

Universidad de Guanajuato FIMEE

Page 29: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

2.5. Ejemplo de configuracion para E/S 24

La configuracion del puerto C se realiza de la misma forma que el puertoA, solo que ahora se manipula el registro TRISC.

2.5. Ejemplo de configuracion para E/S

En este ejemplo se mostrara la forma de realizar la configuracion delpuerto A como entradas y el puerto B como salidas.

LIST P=16F873;Usaremos el PIC16F873A-04/P

RADIX HEX ;Todo en hexadecimal

w EQU 0 ;Cuando d=0 el destino es w

f EQU 1 ;Cuando d=1 el destino es f

;Declaracion de las variables

PUERTOA EQU 05 ;Direccion del Puerto A

PUERTOB EQU 06 ;Direccion del Puerto B

ESTADO EQU 03 ;Control de los bancos

ORG 0

goto inicio ;Salto al vector de interrupcion

ORG 5

;Configuracion de los puertos A como Entrada y B como Salida

inicio bsf ESTADO,5 ;Apertura del banco 1

movlw 0x3Fh

movwf PUERTOA ;se configuran PUERTOA como entradas

clrw

movwf PUERTOB ;y configuran PUERTOB como salidas

bcf ESTADO,5 ;Cierre del banco 1

;Inicio de programa

clrf PUERToB ;Todo a pagado

CICLO movf PUERTOA,w ;Lleva lo del puerto A a W

movwf PUERTOB ;Lleva W al puerto B

goto CICLO

END ;Fin del programa

Universidad de Guanajuato FIMEE

Page 30: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

2.5. Ejemplo de configuracion para E/S 25

Cuadro 2.2: Descripcion de pines del 16F873Pin Tipo Descripcion

OSC1/CLKIN E Entrada de oscilador de cristalOSC2/CLKOUT S Salida de oscilador de cristalMCLR/VPP/THV E/V Reset o entrada de voltaje de programacion

PUERTO A es un puerto bidirectional de E/SRA0/AN0 E/S RA0 Tambien puede ser entrada analogica 0RA1/AN1 3 3 E/S RA1 Tambien puede ser entrada analogica 1RA2/AN2/VREF E/S RA2 Tambien puede ser entrada analogica 2 o

referencia analogica de voltaje negativoRA3/AN3/VREF+ E/S RA3 Tambien puede ser entrada analogica 3 o

referencia analogica de voltaje positivoRA4/T0CKI E/S RA4 Puede ser tambien la entrada de reloj

del modulo Temporizador 0RA5/SS/AN4 E/S RA5 Tambien puede ser entrada analogica 4

o esclavo en la seleccion de puertos serial sıncronoPUERTOB es un puerto bidirectional de E/S

RB0/INT E/S RB0 Tambien puede ser pin de interrupcion externaRB1, RB2 E/SRB3/PGM E/S RB3 Puede ser entrada de bajo voltaje de programacionRB4, RB5 E/SRB6/PGC E/S Reloj de programacion serialRB7/PGD E/S Dato serial de programacion

PUERTOC es un puerto bidirectional de E/SRC0/T1OSO/T1CKI E/S RC0 Puede ser la salida del oscilador Timer1

o entrada de reloj de Timer1RC1/T1OSI/CCP2 E/S ST RC1 Puede ser la entrada del oscilador Timer1

o entrada de Captura2/salida de Captura2/PWM2RC2/CCP1 E/S RC2 entrada Captura1/salida Comparador1/salida PWM1RC3/SCK/SCL E/S RC3 Puede ser entrada reloj de reloj de sincronıa serialRC4 E/S RC4 puede ser entrada de dato SPI (en modo SPI)RC5 E/S RC4 puede ser salida de dato SPI (en modo SPI)RC6/TX/CK E/S RC6 Puede ser pin transmision USARTRC7/RX/DT E/S RC7 Puede ser pin de recepcion USARTVSS G Referencia de tierraVDD V Fuente positiva .

Universidad de Guanajuato FIMEE

Page 31: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

Capıtulo 3

Algoritmos implementados

En este capitulo se describiran la algoritmos implementados, ası comolos diagramas para implementarlos fısicamente. Ademas, se describiran losdispositivos ajenos al microcontrolador que se usaron para el desarrollo de laaplicaciones.

3.1. Control de velocidad

El control de velocidad se realiza mediante la tecnica de modulacion deancho de pulso o PWM. Dicha tecnica consiste en hacer variar el ancho delpulso o ciclo de trabajo de una senal (Figura 3.1).

Ası, mientras el pulso sea mas ancho, la velocidad del motor sera masrapida y en cambio se el ancho del pulso es mas pequeno la velocidad dis-minuira.

Debido al uso de un motor, este no puede ser conectado directamente almicrocontrolador ya que el consumo de corriente es elevado y por lo tantodanarıa el PIC, por lo que se hara uso de el driver(L293D) para controlar elmotor.

26

Page 32: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

3.1. Control de velocidad 27

Figura 3.1: Modulacion por ancho de pulso (PWM).

3.1.1. Driver L293D

El L293 es un driver en circuito integrado para control de motores si-multaneos en forma bidireccional, el circuito usa dos puentes cada uno conun par de canales y equipado con una entrada de habilitacion o enable (Figu-ra 3.2) .

EL L293D esta limitado a 600 mA, pero se recomienda para motores conmenor demanda de corriente, sino no se quiere tener problema con el calen-tamiento del driver. Ademas, como se ve en la Figura cuenta con unos diodospara minimizar picos inducidos de voltaje. Este dispositivo se recomiendapara aplicaciones donde la velocidad de switcheo no es mayor a 5 KHz.

El L293 es un circuito integrado estandar de 16 pines como se observa enla Figura 3.3.

Universidad de Guanajuato FIMEE

Page 33: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

3.1. Control de velocidad 28

Figura 3.2: Dirver L293D bloques.

Figura 3.3: Dirver L293D encapsulado .

La forma en que el L293D fue conectado se observa en la Figura 3.5 ysu funcionamiento se describe en el Cuadro 3.1.

Universidad de Guanajuato FIMEE

Page 34: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

3.1. Control de velocidad 29

Figura 3.4: Conexion del L293D.

Cuadro 3.1: Descripcion de funcionamiento del L293DENABLE DIRA DIRB Function

H H L Giro a la derechaH L H Giro a la izquierdaH L/H L/H Alto rapidoL cualquiera cualquiera Alto lento

Universidad de Guanajuato FIMEE

Page 35: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

3.1. Control de velocidad 30

3.1.2. Programa para control de velocidad

Para el programa se utilizaron los 8 bits del puerto B como entradas y 2bits del puerto A se utilizaron como salida hacia el driver para controlar elmotor.

Los ocho bits de entrada del puerto B, indican el tiempo que durara elciclo de trabajo o el ancho de pulso, por ejemplo, si se quiere que el ciclo detrabajo o el ancho de pulso sea del 50 % se coloca en el puerto B la palabra80h (10000000b) y por lo tanto el motor girara de manera constante a unavelocidad dada. En cambio si se quire que el motor ofrezca su maxima ve-locidad se coloca la palabra FFh.

El codigo utilizado se muestra en seguida.

LIST P=16F873 ;Usaremos el PIC16F873-04/P

RADIX HEX ;Todo en hexadecimal

w EQU 0 ;Cuando d=0 el destino es w

f EQU 1 ;Cuando d=1 el destino es f

;****************Declaracion de las variables******************

PUERTOA EQU 05

PUERTOB EQU 06

ESTADO EQU 03

;********Variables auxiliares para el retardo*************

AUX1 EQU 0F

AUX2 EQU 0E

AUX3 EQU 0C

ORG 0

goto inicio

ORG 5

;***************Configuracion de Entradas/Salidas**************

Universidad de Guanajuato FIMEE

Page 36: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

3.1. Control de velocidad 31

inicio bsf ESTADO,5 ;Apertura del banco 1

clrw ;Se limpia w (w=00h)

movwf PUERTOA ;PUERTOA como salidas

movlw 0x0FF

movwf PUERTOB ;PUERTOB como entradas

bcf ESTADO,5 ;Cierre del banco 1

;**************Programa principal*******************************

clrf PUERTOA ;Todo apagado en el puerto A

ciclo movf PUERTOB,w ;Mueve lo del puerto de entrada a W

movwf AUX2 ;Mueve w a la direccion de memoria que

;apunta AUX2 (0Eh)

;********Calculo de tiempo que durara en bajo la se~nal******

sublw 0x0FF ;Resta el valor de entrada a FFh y se

;guarda en w

movwf AUX3 ;se mueve el resultado de la resta a la

;direccion que apunta AUX3 (0Ch)

;***********************************************************

movf AUX2,w

addlw 0X01

movwf AUX2

decfsz AUX2,f

goto uno

goto cero

;**********************************************************

uno movlw 0x01 ;Lleva el valor 01h a W

movwf PUERTOA ;Lleva W al puerto A

call retardo ;Llamado de el divisor de frecuencia

decfsz AUX2,f ;Se decrementa AUX2 y se deposita en

;ella misma y si llega a cero cambia

;la salida a 00h

goto uno ;si no es cero se repite

cero movlw 0x00 ;Lleva el valor 00h a W

movwf PUERTOA ;Lleva W al puerto A

call retardo ;Llamado de el divisor de frecuencia

decfsz AUX3,f ;Se decrementa AUX3 y se deposita en

;ella misma y si llega a cero

;salta a la ultima instruccion

Universidad de Guanajuato FIMEE

Page 37: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

3.1. Control de velocidad 32

goto cero ;si no es cero se repite

;*********************************************************

goto ciclo ;Vuelve a iniciar

;***************Rutina de retardo*****************************

;Esta rutina se utiliza como un divisor de frecuencia, ya que no

;se puede utilizar la frecuencia del PIC de manera directa.

retardo

movlw 0x90

movwf AUX1 ;se lleva este valor tambien a AUX2

one decfsz AUX1,f ;Se decrementa AUX1 y se deposita en

;ella misma

goto one ;si llega a cero sale e la rutina

return ;Una vez completados los ciclos se regresa

;al programa principal

END ;Fin del programa

El programa arroja una senal de salida de aproximadamente un 1 KHz,lo cual es bueno para el uso en motores pequenos.

3.1.3. Diagrama de implementacion

El diagram de conexion para el motor junto con el driver para el controlde velocidad. En la Figura 3.5 se presenta el esquema de conexion.

Como se menciono anteriormente los 8 bits del puerto B se utilizaroncomo entradas y solo 2 pines del puerto A como salidas.

En esta aplicacion solo se uso un motor y el pin 8 correspondiente a VS

se conecto a la misma fuente debido a que se uso un motor pequeno, peropude utilizarse otro voltaje mucho mayor.

Universidad de Guanajuato FIMEE

Page 38: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

3.2. Medidor de distancia con un sensor infrarrojo 33

Figura 3.5: Diagrama de conexion.

3.2. Medidor de distancia con un sensor in-

frarrojo

Para el desarrollo de esta aplicacion se utilizo el convertidor Analogico-Digital del PIC y el sensor infrarrojo de la marca Sharp modelo GP2D12.

3.2.1. Convertidor Analogico-Digital

El modulo convertidor Analogico-Digital (A/D) tiene 5 entradas o canales.La entrada analogica carga un muestra y la mantiene en un capacitor. Lasalida del muestreo y la retencion en el capacitor es la entrada al convertidor.

El convertidor entonces genera un resultado digital del nivel analogicopor el metodo de aproximaciones sucesivas. La conversion Analogico-Digitalde la entrada analogica resulta en un correspondiente numero de 10 bits. Elmodulo A/D tiene entradas de referencia de alto volatje (VDD) y bajo volta-je (VSS). Este modulo tiene la caracteritica de que puede operar mientras elPIC se encuentra en el modo de bajo consumo de voltaje (SLEEP mode).

EL modulo de conversion A/D esta formado por cuatro registros. Estos

Universidad de Guanajuato FIMEE

Page 39: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

3.2. Medidor de distancia con un sensor infrarrojo 34

registros son:

Registro de resultado parte alta (ADRESH)

Registro de resultado parte baja (ADRESL)

Registro de control0 (ADCON0)

Registro de control1 (ADCON1)

El registro ADCON0 , se muestra en la Figura 3.6, controla la operaciondel modulo A/D. El registro de control ADCON1 se muestra en la Figura3.7, configura las funciones de los pines del puerto. Los pines del puertopueden ser configurados como entrada analogicas (RA3 tambien puede ser lareferencia de voltaje) o como E/S digitales.

Figura 3.6: Registro de control ADCON0.

Universidad de Guanajuato FIMEE

Page 40: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

3.2. Medidor de distancia con un sensor infrarrojo 35

Figura 3.7: Registro de control ADCON1.

Los registro ADRESH:ADRESL contiene los 10 bits del resultado de laconversion A/D. Cuando el proceso de conversion A/D esta completo el re-sultado es cargado en este par de registros, el bit GO/DONE (ADCON0(2))es limpiado.

Despues de que el modulo A/D ha sido configurado como se desea, la se-leccion del canal debe ser realizada antes de iniciar la conversion. Los canalesanalogicos deben tener sus correspondientes bits TRIS seleccionados comoentrada.

En los siguientes pasos se muestran como realizar la conversion:

Universidad de Guanajuato FIMEE

Page 41: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

3.2. Medidor de distancia con un sensor infrarrojo 36

1. Configuracion de modulo A/D:

Seleccionar los canales de entrada,voltaje de referencia y E/S digi-tales (ADCON1)

Seleccionar el canal de entrada A/D (ADCON0)

Seleccionar reloj de conversion (ADCON0)

Encender el modulo A/D (ADCON0)

2. Espera el tiempo requerido de adquisicion

3. Iniciar conversion

4. Espera el proceso de conversion, por:

Limpiado del bit GO/DONE (ADCON0)

5. Leer el resultado en el par de registros (ADRESH:ADRESL)

6. Para la siguiente conversion repita el paso 1 e inicie la conversion.

Seleccion del reloj de Conversion A/D: La fuente de reloj para la con-version A/D es seleccionada por software. Las cuatro posibles opcionesson:

2TOSC

8TOSC

32TOSC

Internal RC oscillator

El Cuadro 3.2 muestra la frecuencia maxima de operacion del relojseleccionado para el convertidor A/D.

Registro de resultados A/D : El par de registro ADRESH:ADESRL esla locacion donde es cargado el resultado de 10 bits de la conversionA/D. El par de registros presenta un ancho de 16 bits. El modulo A/Dofrece la flexibilidad de justificar el resultado de 10 bits a la derecha oa la izquierda: El bit de seleccion del formato del resultado es el bit de

Universidad de Guanajuato FIMEE

Page 42: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

3.2. Medidor de distancia con un sensor infrarrojo 37

Cuadro 3.2: Maximas frecuencias de operacionOperacion ADCS1:ADCS0 Max frec.

2TOSC 00 1.25 MHz8TOSC 01 5 MHz32TOSC 10 20 MHz

RC 11

control ADFM.

La Figura 3.8 muestra la operacion de justificacion. Los bits extras sonleıdos como ceros.

Figura 3.8: Operacion de justificacion.

Ademas, cuando en este par de registro no se escribe (Conversion A/Ddeshabilitada), estos registro pueden ser usados como dos registros de8 bits de proposito general.

3.2.2. Sensor infrarrojo GP2D12.

El detector GP2D12 (Figura 3.9) toma continuamente lecturas cuandoes encendido. La salida del detector esta disponible en el pin Vo. Este valores actualizado aproximadamente cada 32 ms.

Universidad de Guanajuato FIMEE

Page 43: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

3.2. Medidor de distancia con un sensor infrarrojo 38

Figura 3.9: Sensor infrarrojo GP2D12.

Tıpicamente, la salida es conectada a un convertidor A/D (como este ca-so) el cual convierte la distancia medida a un numero que puede ser usadopor un microcontrolador. La salida puede ser tambien usada directamente enun circuito analogico.

El GP2D12 no tiene una salida lineal para la distancia medida. La graficade la Figura 3.10 muestra la tıpica curva de respuesta.

Figura 3.10: Curva de respuesta del sensor GP2D12.

Una vez que se describieron los dispositivos a utilizar falta el software yla implementacion.

Universidad de Guanajuato FIMEE

Page 44: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

3.2. Medidor de distancia con un sensor infrarrojo 39

3.2.3. Programa para la medicion de distancia

Para este programa se hace uso del convertidor Analogico-Digital paraprocesar la senal proveniente del sensor, la forma en que se hace la configu-racion es siguiendo los pasos anteriormente dichos.

Antes de describir el codigo se senalaran los parametros con los que seconfiguro el modulo.

Se configuro el RA0 y RA1 con entradas analogicas, RA3 como referen-cia positiva de voltaje (VREF+) y el formato de salida con justificacion a laizquierda, por lo que el dato que se debe de colocar en el registro ADCON1es el 05h.

Una vez configurado ADCON1, se configuro ADCON0 con las siguientescaracterısticas: se utilizo el reloj capaz de operar a 20 MHz, se selecciono RA0como canal de entrada, por lo que el dato a guardar en el regsitro ADCON0es el 81h.

A continuacion se muestra el programa para la medicion de distancia, elcual consiste en convertir la senal analogica proveniente del GP2D12 a digitaly desplegar los 8 bits mas significativos por los pines del puerto B.

LIST P=16F873 ;Usaremos el PIC16F873-04/P

RADIX HEX ;Todo en hexadecimal

w EQU 0 ;Cuando d=0 el destino es w

f EQU 1 ;Cuando d=1 el destino es f

;***********Declaracion de las variables*************************

PUERTOA EQU 05h

PUERTOB EQU 06h

ESTADO EQU 03h

AUX1 EQU 0Fh ;Variables auxiliares

AUX2 EQU 0Eh

AUX3 EQU 0Ch

ADCON EQU 1Fh

ADRESH EQU 1Eh

Universidad de Guanajuato FIMEE

Page 45: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

3.2. Medidor de distancia con un sensor infrarrojo 40

ORG 0

goto inicio ;Salto al vector de interrupcion

ORG 5

;********Configuracion de los puertos como E/S*****************

inicio bsf ESTADO,5 ;Apertura del banco 1

movlw 0x0FF

movwf PUERTOA ;PUERTOA como entradas

clrw

movwf PUERTOB ;PUERTOB como salida

bcf ESTADO,5 ;Cierre del banco 1

;*********Configuracion del modulo de A/D*********************

clrf PUERTOB ;Se limpian las salidas

bsf ESTADO,5 ;Apertura del banco 1

movlw 0x05 ;Mueve el valor de 05h a w

movwf ADCON ;Mueve el valor de W (05h) al registro

;de control ADCON1

bcf ESTADO,5 ;Cierre del banco 1

movlw 0x81 ;Mueve el valor de 81h a w

movwf ADCON ;Mueve el valor de w (81h) al registro

; de control ADCON0

;*********Proceso de conversion*******************************

CONV bsf ADCON,2 ;Inicia el proceso de conversion

;activando el bit GO/DONE

CHECA BTFSC ADCON,2 ;Checa que el bit GO/DONE sea cero

GOTO CHECA ;Salta a checar de nuevo el bit

movf ADRESH,w ;Mueve el resultado de la conversion a

;w

movwf PUERTOB ;Mueve el resultado guardado en w al

;puerto B

goto CONV ;Empieza de nuevo la conversion

END

Universidad de Guanajuato FIMEE

Page 46: Manual de Microcontrolador 16F873 - fimee.ugto.mx · PDF file1.2. Diferencia entre microprocesador y microcontrolador 2 En la actualidad, todos los elementos del controlador se han

3.3. Implementacion 41

3.3. Implementacion

El diagrama de la implementacion para este diseno se muestra e la Figura3.11.

Figura 3.11: Diagrama de la implementacion para medicion de distancia.

En este desarrollo la forma en que se visualiza es a traves de LEDs, perose pueden implementar otras interfaz de visualizacion como pantallas de LDCo Display.

Como se ve el diagrama es muy sencillo y aun se puede conectar otrosensor en el canal analogico RA1, pero aquı el problema es el desplegado yaque los puertos con los que se cuenta no son muchos.

Universidad de Guanajuato FIMEE