You are on page 1of 34

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

Unidad 4
4.1 Arquitectura.

Microcontroladores

Esquema de un microcontrolador.

Controladores y Microcontroladores
Un controlador es un dispositivo electrnico encargado de, valga la redundancia, controlar uno o ms procesos. Por ejemplo, el controlador del aire acondicionado, recoger la informacin de los sensores de temperatura, la procesar y actuar en consecuencia. Al principio, los controladores estaban formados exclusivamente por componentes discretos. Ms tarde, se emplearon procesadores rodeados de memorias, circuitos de E/S, sobre una placa de circuito impreso (PCB). Actualmente, los controladores integran todos los dispositivos antes mencionados en un pequeo chip. Esto es lo que hoy conocemos con el nombre de microcontrolador.

Diferencia entre microcontrolador y microprocesador


Es muy habitual confundir los trminos de microcontrolador y microprocesador, cayendo as en un error de cierta magnitud. Un microcontrolador es, como ya se ha comentado previamente, un sistema completo, con unas prestaciones limitadas que no pueden modificarse y que puede llevar a cabo las tareas para las que ha sido programado de forma autnoma. Un microprocesador, en cambio, es simplemente un componente que conforma el microcontrolador, que lleva acabo ciertas tareas que analizaremos ms adelante y que, en conjunto con otros componentes, forman un microcontrolador.
ING. JOSE ANTONIO MOLINA CARRILLO Pgina 1

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

Debe quedar clara por tanto la diferencia entre microcontrolador y microprocesador: a modo de resumen, el primero es un sistema autnomo e independiente, mientras que el segundo es una parte, cabe decir que esencial, que forma parte de un sistema mayor. Los microcontroladores representan la inmensa mayora de los chips de computadoras vendidos, sobre un 50% son controladores "simples" y el restante corresponde a DSPs ms especializados. Mientras se pueden tener uno o dos microprocesadores de propsito general en casa (Ud. est usando uno para esto), usted tiene distribuidos seguramente entre los electrodomsticos de su hogar una o dos docenas de microcontroladores. Pueden encontrarse en casi cualquier dispositivo electrnico como automviles, lavadoras, hornos microondas, telfonos, etc. Un microcontrolador difiere de una CPU normal, debido a que es ms fcil convertirla en una computadora en funcionamiento, con un mnimo de chips externos de apoyo. La idea es que el chip se coloque en el dispositivo, enganchado a la fuente de energa y de informacin que necesite, y eso es todo. Un microprocesador tradicional no le permitir hacer esto, ya que espera que todas estas tareas sean manejadas por otros chips. Hay que agregarle los modulos de entrada/salida (puertos) y la memoria para almacenamiento de informacin. Por ejemplo, un microcontrolador tpico tendr un generador de reloj integrado y una pequea cantidad de memoria RAM y ROM/EPROM/EEPROM/FLASH, significando que para hacerlo funcionar, todo lo que se necesita son unos pocos programas de control y un cristal de sincronizacin. Los microcontroladores disponen generalmente tambin de una gran variedad de dispositivos de entrada/salida, como convertidores de analgico a digital, temporizadores, UARTs y buses de interfaz serie especializados, como I2C y CAN. Frecuentemente, estos dispositivos integrados pueden ser controlados por instrucciones de procesadores especializados. Los modernos microcontroladores frecuentemente incluyen un lenguaje de programacin integrado, como el BASIC que se utiliza bastante con este propsito. Los microcontroladores negocian la velocidad y la flexibilidad para facilitar su uso. Debido a que se utiliza bastante sitio en el chip para incluir funcionalidad, como los dispositivos de entrada/salida o la memoria que incluye el microcontrolador, se ha de prescindir de cualquier otra circuitera.

Estructura bsica de un microcontrolador


En la figura anterior, vemos al microcontrolador metido dentro de un encapsulado de circuito integrado, con su procesador (CPU), buses, memoria, perifricos y puertos de entrada salida. Fuera del encapsulado se ubican otros circuitos para completar perifricos internos y dispositivos que pueden conectarse a los pines de entrada/salida. Tambin se conectarn a los pines del encapsulado la alimentacin, masa, circuito de completamiento del oscilador y otros circuitos necesarios para que el microcontrolador pueda trabajar.

Ncleo de un microcontrolador
Aun cuando el microcontrolador es una computadora embebida dentro de un circuito integrado, se compone de un ncleo y un conjunto de circuitos adicionales. Dentro del ncleo se encuentran el procesador y la memoria, todo ello estructurado de forma tal que conforma una arquitectura de computadora.

Arquitectura interna de un microcontrolador

ING. JOSE ANTONIO MOLINA CARRILLO

Pgina 2

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

Como ya hemos visto, un microcontrolador es un dispositivo complejo, formado por otros ms sencillos. A continuacin se analizan los ms importantes.

Procesador
Es la parte encargada del procesamiento de las instrucciones. Debido a la necesidad de conseguir elevados rendimientos en este proceso, se ha desembocado en el empleo generalizado de procesadores de Arquitectura Harvard frente a los tradicionales que seguan la Arquitectura de Von Neumann. Esta ltima se caracterizaba porque la CPU se conectaba con una memoria nica, donde coexistan datos e instrucciones, a travs de un sistema de buses. La arquitectura Von Neumann es la que se utiliza en las computadoras personales, para ella existe una sola memoria, donde coexisten las instrucciones de programa y los datos, accedidos con un bus de direccin, uno de datos y uno de control. Debemos comprender que en una PC, cuando se carga un programa en memoria, a ste se le asigna un espacio de direcciones de la memoria que se divide en segmentos, de los cuales tpicamente tenderemos los siguientes: cdigo (programa), datos y pila. Es por ello que podemos hablar de la memoria como un todo, aunque existan distintos dispositivos fsicos en el sistema (HDD, RAM, CD, FLASH). En el caso de los microcontroladores, existen dos tipos de memoria bien definidas: memoria de datos (tpicamente algn tipo de SRAM) y memoria de programas (ROM, PROM, EEPROM, FLASH u de otro tipo no voltil). En este caso la organizacin es distinta a las de las PC, porque hay circuitos distintos para cada memoria y normalmente no se utilizan los registros de segmentos, sino que la memoria est segregada y el acceso a cada tipo de memoria depende de las instrucciones del procesador. A pesar de que en los sistemas integrados con arquitectura Von Neumann la memoria est segregada, y existan diferencias con respecto a la definicin tradicional de esta arquitectura; los buses para acceder a ambos tipos de memoria son los mismos, del procesador solamente salen el bus de datos, el de direcciones, y el de control. Como conclusin, la arquitectura no ha sido alterada, porque la forma en que se conecta la memoria al procesador sigue el mismo principio definido en la arquitectura bsica. Esta arquitectura es la variante adecuada para las PC, porque permite ahorrar una buena cantidad de lneas de E/S, que son bastante costosas, sobre todo para aquellos sistemas como las PC, donde el procesador se monta en algn tipo de socket alojado en una placa madre (motherboard). Tambin esta organizacin les ahorra a los diseadores de motherboards una buena cantidad de problemas y reduce el costo de este tipo de sistemas. Algunas familias de microcontroladores como la INTEL-51 y la Z80 implementan este tipo de arquitectura, fundamentalmente porque era la utilizada cuando aparecieron los primeros microcontroladores

Arquitectura von Neumann


ING. JOSE ANTONIO MOLINA CARRILLO Pgina 3

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

En la arquitectura Harvard son independientes la memoria de instrucciones y la memoria de datos y cada una dispone de su propio sistema de buses para el acceso. Esta dualidad, adems de propiciar el paralelismo, permite la adecuacin del tamao de las palabras y los buses a los requerimientos especficos de las instrucciones y de los datos. En este caso, adems de la memoria, el procesador tiene los buses segregados, de modo que cada tipo de memoria tiene un bus de datos, uno de direcciones y uno de control. La ventaja fundamental de esta arquitectura es que permite adecuar el tamao de los buses a las caractersticas de cada tipo de memoria; adems, el procesador puede acceder a cada una de ellas de forma simultnea, lo que se traduce en un aumento significativo de la velocidad de procesamiento, tpicamente los sistemas con esta arquitectura pueden ser dos veces ms rpidos que sistemas similares con arquitectura Von Neumann. La desventaja est en que consume muchas lneas de E/S del procesador; por lo que en sistemas donde el procesador est ubicado en su propio encapsulado, solo se utiliza en supercomputadoras. Sin embargo, en los microcontroladores y otros sistemas integrados, donde usualmente la memoria de datos y programas comparten el mismo encapsulado que el procesador, este inconveniente deja de ser un problema serio y es por ello que encontramos la arquitectura Harvard en la mayora de los microcontroladores.

Arquitectura Harvard El procesador de los modernos microcontroladores responde a la arquitectura RISC (Computadores de Juego de Instrucciones Reducido), que se identifica por poseer un repertorio de instrucciones mquina pequeo y simple, de forma que la mayor parte de las instrucciones se ejecutan en un ciclo de instruccin. Otra aportacin frecuente que aumenta el rendimiento del computador es el fomento del paralelismo implcito, que consiste en la segmentacin del procesador (pipe-line), descomponindolo en etapas para poder procesar una instruccin diferente en cada una de ellas y trabajar con varias a la vez.

ING. JOSE ANTONIO MOLINA CARRILLO

Pgina 4

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

Familias de microcontroladores
Los microcontroladores ms comunes en uso son:

Observacin: Algunas arquitecturas de microcontrolador estn disponibles por tal cantidad de vendedores y en tantas variedades, que podran tener, con total correccin, su propia categora. Entre ellos encontramos, principalmente, las variantes de 8051 y Z80.

ING. JOSE ANTONIO MOLINA CARRILLO

Pgina 5

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

4.1.1 Terminales

El diagrama de un sistema microcontrolado sera algo as

Los

dispositivos

de

entrada

pueden

ser

un

teclado,

un

interruptor,

un

sensor,

etc.

Los dispositivos de salida pueden ser LED's, pequeos parlantes, zumbadores, interruptores de potencia (tiristores, optoacopladores), u otros dispositivos como rels, luces, un secador de pelo, en fin.. lo que quieras. Aqu tienes una representacin en bloques del microcontroador, para que te des una idea, y puedes ver que lo adaptamos tal y cual es un ordenador, con su fuente de alimentacin, un circuito de reloj y el chip microcontrolador, el cual dispone de su CPU, sus memorias, y por supuesto, sus puertos de comunicacin listos para conectarse al mundo exterior.

ING. JOSE ANTONIO MOLINA CARRILLO

Pgina 6

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

Se define entonces al microcontrolador como un circuito integrado programable, capaz de ejecutar las rdenes grabadas en su memoria. Est compuesto de varios bloques funcionales, los cuales cumplen una tarea especfica. Sacado de un libro...!!!. En fin estas son bsicamente algunas de sus partes...

Memoria ROM (Memoria de slo lectura) Memoria RAM (Memoria de acceso aleatorio) Lneas de entrada/salida (I/O) Tambin llamados puertos Lgica de control Coordina la interaccin entre los dems bloques

Eso no es todo, algunos traen funciones especiales, ya hablaremos de ellas.

Microcontroladores PIC16CXX/FXX de Microchip


Estos micros pertenecen a la gama media y disponen de un set de 35 instrucciones, por eso lo llaman de tipo RISC (Reduced Instruction Set Computer) en entendible sera "Computador con Set de Instrucciones Reducido" pocas instrucciones pero muy poderosas, otras son de tipo CISC (Complex Instruction Set Computer Computador con Set de Instrucciones Complejo), demasiadas instrucciones, y lo peor, difciles de recordar. Esta familia de microcontroladores se divide en tres rangos segn la capacidad de los microcontroladores. El ms bajo lo compone la familia 16C5X. El rango medio lo componen las familias 16C6X/ 7X/ 8X, algunos con conversores A/D, comparadores, interrupciones, etc. La familia de rango superior lo componen los 17CXX. Estas son las funciones especiales de las cuales disponen algunos micros...

Conversores anlogo a digital (A/D) en caso de que se requiera medir seales analgicas, por ejemplo temperatura, voltaje, luminosidad, etc. Temporizadores programables (Timer's) Si se requiere medir perodos de tiempo entre eventos, generar temporizaciones o salidas con frecuencia especfica, etc. Interfaz serial RS-232. Cuando se necesita establecer comunicacin con otro microcontrolador o con un computador. Memoria EEPROM Para desarrollar una aplicacin donde los datos no se alteren a pesar de quitar la alimentacin, que es un tipo de memoria ROM que se puede programar o borrar elctricamente sin necesidad de circuitos especiales. salidas PWM (modulacin por ancho de pulso) Para quienes requieren el control de motores DC o cargas resistivas, existen microcontroladores que pueden ofrecer varias de ellas. Tcnica llamada de "Interrupciones", (sta me gust) Cuando una seal externa activa una lnea de interrupcin, el microcontrolador deja de lado la tarea que est ejecutando, atiende dicha interrupcin, y luego contina con lo que estaba haciendo.

Todo esto, slo para tener una idea de lo que son los micros, ahora vamos a un par de ellos en especial

Presentacin oficial del PIC16C84/F84


Se trata de un microcontrolador de 8 bits. Es un PIC de gama baja, cuyas caractersticas podemos resumir en: - Memoria de 1K x 14 de tipo Flash - Memoria de datos EEPROM de 64 bytes
ING. JOSE ANTONIO MOLINA CARRILLO Pgina 7

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

- 13 lneas de E/S con control individual - Frecuencia de funcionamiento mxima de 10 Mhz. - Cuatro fuentes de interrupcin * Activacin de la patita RB0/INT * Desbordamiento del TMR0 * Cambio de estado en alguna patia RB4-RB7 * Fin de la escritura de la EEPROM de datos - Temporizador/contador TMR0 programable de 8 bits - Perro Guardin o WatchDog Generalmente se encuentra encapsulado en formato DIP18. A continuacin puede apreciarse dicho encapsulado y una breve descripcin de cada una de las patitas: imagen: - VDD: alimentacin - VSS: masa - OSC1/CLKIN-OSC2/CLKOUT: conexin del oscilador - VPP/MCLR: tensin de programacin y reset - RA0-RA3: lneas de E/S de la puerta A - RA4: lnea de E/S de la puerta A o entrada de impulsos de reloj para TMR0 - RB0/INT: lnea de E/S de la puerta B o peticin de interrupcin - RB1-RB7: lneas de E/S de la puerta B El PIC16C84 est fabricado en tecnologa CMOS, consume baja potencia, y es completamente esttico (si el reloj se detiene, los datos de la memoria no se pierden). El 16F84 tiene las mismas caractersticas pero posee memoria FLASH, esto hace que tenga menor consumo de energa, y como si fuera poco tiene mayor capacidad de almacenamiento. El encapsulado ms comn para estos microcontrolador es el DIP (Dual In line Pin) de 18 pines, (el nuestro... ), y utiliza un reloj de 4 MHz (cristal de cuarzo). Sin embargo, hay otros tipos de encapsulado, por ejemplo, el encapsulado tipo surface mount (montaje superficial) es mucho + pequeo.

Terminales del microcontrolador y sus respectivas funciones:


sta sera la disposicin de sus terminales y sus respectivos nombres...

Encapsulado DIP - PIC16C84/F84


ING. JOSE ANTONIO MOLINA CARRILLO Pgina 8

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

Patas 1, 2, 3, 17 y 18 (RA0-RA4/TOCKI): Es el PORT A. Corresponden a 5 lneas bidireccionales de E/S (definidas por programacin). Es capaz de entregar niveles TTL cuando la alimentacin aplicada en VDD es de 5V 5%. El pin RA4/TOCKI como entrada puede programarse en funcionamiento normal o como entrada del contador/temporizador TMR0. Cuando este pin se programa como entrada digital, funciona como un disparador de Schmitt (Schmitt trigger), puede reconocer seales un poco distorsionadas y llevarlas a niveles lgicos (cero y cinco voltios). Cuando se usa como salida digital se comporta como colector abierto; por lo tanto se debe poner una resistencia de pull-Up (resistencia externa conectada a un nivel de cinco voltios, ...no te preocupes, mas abajo lo entenders mejor). Como salida, la lgica es inversa: un "0" escrito al pin del puerto entrega a la salida un "1" lgico. Este pin como salida no puede manejar cargas como fuente, slo en el modo sumidero. Pata 4 (MCLR / Vpp): Es una pata de mltiples aplicaciones, es la entrada de Reset (master clear) si est a nivel bajo y tambin es la habilitacin de la tensin de programacin cuando se est programando el dispositivo. Cuando su tensin es la de VDD el PIC funciona normalmente. Patas 5 y 14 (VSS y VDD): Son respectivamente las patas de masa y alimentacin. La tensin de alimentacin de un PIC est comprendida entre 2V y 6V aunque se recomienda no sobrepasar los 5.5V. Patas 6, 7, 8, 9, 10, 11, 12, 13 (RB0-RB7): Es el PORT B. Corresponden a ocho lneas bidireccionales de E/S (definidas por programacin). Pueden manejar niveles TTL cuando la tensin de alimentacin aplicada en VDD es de 5V 5%. RB0 puede programarse adems como entrada de interrupciones externas INT. Los pines RB4 a RB7 pueden programarse para responder a interrupciones por cambio de estado. Las patas RB6 y RB7 se corresponden con las lneas de entrada de reloj y entrada de datos respectivamente, cuando est en modo programacin del integrado. Patas 15 y 16 (OSC1/CLKIN y OSC2/CLKOUT): Corresponden a los pines de la entrada externa de reloj y salida de oscilador a cristal respectivamente. estos dispositivos son de tecnologa CMOS, todos los pines deben estar conectados a alguna parte, nunca dejarlos al aire porque se puede daar el integrado. Los pines que no se estn usando se deben conectar a la fuente de alimentacin de +5V, como se muestra en la siguiente figura...

Capacidad de corriente en los puertos La mxima capacidad de corriente de cada uno de los pines de los puertos en modo sumidero (sink) es de 25 mA y en modo fuente (source) es de 20 mA. La mxima capacidad de corriente total de los puertos es:

ING. JOSE ANTONIO MOLINA CARRILLO

Pgina 9

ARQUITECTURA DE COMPUTADORAS

UNIDAD V PUERTO A 80 mA 50 mA

Microcontroladores PUERTO B 150 mA 100 mA

Modo Sumidero Modo Fuente

As se vera la conexin para ambos modos de funcionamiento.

El oscilador externo
Es un circuito externo que le indica al micro la velocidad a la que debe trabajar. Este circuito, que se conoce como oscilador o reloj, es muy simple pero de vital importancia para el buen funcionamiento del sistema. El P1C16C84/F84 puede utilizar cuatro tipos de reloj diferentes. Estos tipos son:

RC. Oscilador con resistencia y condensador. XT. Cristal. HS. Cristal de alta velocidad. LP. Cristal para baja frecuencia y bajo consumo de potencia.

En el momento de programar o "quemar" el microcontrolador se debe especificar que tipo de oscilador se usa. Esto se hace a travs de unos fusibles llamados "fusibles de configuracin" o fuses. Aqu utilizaremos el cristal de 4 MHz, porque garantiza mayor precisin y un buen arranque del microcontrolador. Internamente esta frecuencia es dividida por cuatro, lo que hace que la frecuencia efectiva de trabajo sea de 1 MHz, por lo que cada instruccin se ejecuta en un microsegundo. El cristal debe ir acompaado de dos condensadores y el modo de conexin es el siguiente...

Si no requieres mucha precisin en el oscilador, puedes utilizar una resistencia y un condensador, como se muestra en la figura. donde OSC2 queda libre entregando una seal cuya frecuencia es la del OSC/4.
ING. JOSE ANTONIO MOLINA CARRILLO Pgina 10

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

Segn las recomendaciones de Microchip R puede tomar valores entre 5k y 100k, y C superior a 20pf.

Reset
El PIC 16C84/F84 posee internamente un circuito temporizador conectado al pin de reset que funciona cuando se da alimentacin al micro, se puede entonces conectar el pin de MCLR a la fuente de alimentacin. Esto hace que al encender el sistema el microcontrolador quede en estado de reset por un tiempo mientras se estabilizan todas las seales del circuito (lo cual es bastante bueno, por eso siempre la usaremos...).

Este ltimo circuito, es por si deseas tener control sobre el reset del sistema, slo le conectas un botn y listo... ARQUITECTURA INTERNA DEL PIC 16C84 El PIC 16C84 al igual que los dems miembros de su familia, se caracterizan por que :

Su procesador es segmentado, "pipe-line". Su procesador es tipo RISC Tiene una arquitectura HARVARD El formato de las instrucciones es ortogonal Todas las instrucciones tienen la misma longitud (14 bits) La arquitectura est basada en banco de registros

Pero que significa todo esto? . Pues vamos a intentar aclarar estos conceptos:

Procesador segmentado "pipe-line": quiere decir que aplica la tcnica de segmentacin que permite al procesador realizar simultneamente la ejecucin de una instruccin y la bsqueda de cdigo de la
Pgina 11

ING. JOSE ANTONIO MOLINA CARRILLO

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

siguiente. De esta manera, se puede ejecutar una instruccin en un ciclo. (Cada ciclo de instruccin son cuatro ciclos de reloj).

Ejemplo: 1. MOVLW 55h 2 .MOVWF PORTB 3. CALL SUB_1 4. BSF PORTA,BIT3

Bsqueda 1 Ejecuta 1 Bsqueda 2 Ejecuta2 Bsqueda 3 Ejecuta 3 Busqueda 4 Salir Busqueda SUB_1 Ejecuta SUB_1

Procesador Segmentado pipeline Procesador tipo RISC: Las CPUs atendiendo al tipo de instrucciones que utilizan pueden clasificarse en:

CISC: (Complex Instruction Set Computer) Computadores de juego de instrucciones complejo, que disponen de un repertorio de instrucciones elevado (unas 80), algunas de ellas muy sofisticadas y potentes, pero que como contrapartida requieren muchos ciclos de mquina para ejecutar las instrucciones complejas. RISC: (Reduced Instruction Set Computer) Computadores de juego de instrucciones reducido, en los que el repertorio de instrucciones es muy reducido (en nuestro caso 35), las instrucciones son muy simples y suelen ejecutarse en un ciclo mquina. Adems los RISC deben tener una estructura pipeline y ejecutar todas las instrucciones a la misma velocidad. SISC.(Specific Instriction Set Computer) Computadores de juego de instrucciones especfico.

Cualquier instruccin puede utilizar cualquier elemento de la arquitectura como fuente o destino.

ING. JOSE ANTONIO MOLINA CARRILLO

Pgina 12

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

Es una arquitectura basada en banco de registros: Implica que todos los elementos del sistema, es decir, temporizadores, puertos de entrada/salida, posiciones de memoria, etc, estn implementados fsicamente como registros. En los PIC el manejo del banco de registros, que participan activamente en la ejecucin de las instrucciones, es muy interesante al ser ortogonales. En la figura siguiente se muestra como la ALU (Unidad Aritmtico-Lgica) efecta sus operaciones con dos operandos, uno que proviene del registro W (Work), que en otras CPUs recibe el nombre de Acumulador, y el otro que se encuentra en cualquier otro registro o del propio cdigo de instruccin.

Registros que pueden enviar datos a la ALU. El resultado puede ir a cualquier registro o al registro W La arquitectura del PIC16C84 se mantiene para todos los microcontroladores de esta subfamilia, diferencindose unos de otros por las siguientes caractersticas:

PIC 16F84PIC 16F84: La memoria de programa es de l K palabras de l4 bits, pero de tipo Flash. La memoria de datos RAM tiene 68 registros de tamao byte de propsito general, en lugar de 36. PIC16CR84: La memoria de programa es de IK palabras de 14 bits tipo ROM y la de datos tiene iguales caractersticas que el PIC16F84.: La memoria de programa es de 1K palabras de 14 bits tipo ROM y la de datos tiene iguales caractersticas que el PIC16F84. PIC16F83PIC16F83: La memoria de programa es de 512 palabras de 14 bits y la RAM de datos tiene 36 bytes de registros de propsito general. PIC16CR83PIC16CR83: Igual que el PIC16F83, pero la memoria de instrucciones es de tipo ROM, o sea, slo grabable durante el proceso de fabricacin y utilizada en grandes series.

El elemento diferencial ms importante del PIC16C84 respecto al resto de los elementos de la familia media de los PIC, es que la su memoria de programa es del tipo EEPROM y en el caso del PIC16F84 es que su memoria es del tipo Flash, por lo dems, otros dispositivos de esta familia disponen de ms memoria, tienen ms perifricos, etc..
ING. JOSE ANTONIO MOLINA CARRILLO Pgina 13

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

4.1.2 CPU El procesador o UCP


Es el elemento ms importante del microcontrolador. Se encarga de direccionar la memoria de instrucciones, recibir el cdigo OP de la instruccin en curso, decodificarlo y ejecutarlo, tambin realiza la bsqueda de los operandos y almacena el resultado.

El Procesador en la historia
En los aos 70 del siglo XX, la electrnica digital no estaba suficientemente desarrollada, pero dentro de la electrnica ya era una especialidad consagrada. En aquel entonces las computadoras se diseaban para que realizaran algunas operaciones muy simples, y si se quera que estas mquinas pudiesen hacer cosas diferentes, era necesario realizar cambios bastante significativos al hardware. A principios de los aos 70, una empresa japonesa le encarg a una joven compaa norteamericana que desarrollara un conjunto de circuitos para producir una calculadora de bajo costo. INTEL se dedic de lleno a la tarea y entre los circuitos encargados desarroll uno muy especial, algo no creado hasta la fecha: el primer microprocesador integrado. El 4004 sali al mercado en 1971, es una mquina digital sincrnica compleja, como cualquier otro circuito lgico secuencial sincrnico. Sin embargo, la ventaja de este componente est en que aloja internamente un conjunto de circuitos digitales que pueden hacer operaciones corrientes para el clculo y procesamiento de datos, pero desde una ptica diferente: sus entradas son una serie de cdigos bien definidos, que permiten hacer operaciones de carcter especfico cuyo resultado est determinado por el tipo de operacin y los operandos involucrados. Visto as, no hay nada de especial en un microprocesador; la maravilla est en que la combinacin adecuada de los cdigos de entrada, su ejecucin secuencial, el poder saltar hacia atrs o adelante en la secuencia de cdigos en base a decisiones lgicas u rdenes especficas, permite que la mquina realice un montn de operaciones complejas, no contempladas en los simples cdigos bsicos. Hoy estamos acostumbrados a los sistemas con microprocesadores, pero en el lejano 1971 esta era una forma de pensar un poco diferente y hasta escandalosa, a tal punto que Busicom, la empresa que encarg los chips a INTEL, no se mostr interesada en el invento, as que INTEL puso manos a la obra y lo comercializ para otros que mostraron inters; y bueno, el resto de la historia: una revolucin sin precedentes en el avance tecnolgico de la humanidad. Es lgico pensar que el invento del microprocesador integrado no fue una revelacin divina para sus creadores, sino que se sustent en los avances, existentes hasta el momento, en el campo de la electrnica digital y las teoras sobre computacin. Pero sin lugar a dudas fue la gota que colm la copa de la revolucin cientfico-tcnica, porque permiti desarrollar aplicaciones impensadas o acelerar algunas ya encaminadas. La conclusin es simple, el mundo era uno antes del microprocesador y otro despus de su invencin, piense en un mundo sin microprocesadores y se encontrar remontado a los aos 70 del siglo XX. Ahora comenzaremos a ver cmo es que est hecho un procesador, no ser una explicacin demasiado detallada porque desde su invencin ste ha tenido importantes revoluciones propias, pero hay aspectos bsicos que no han cambiado y que constituyen la base de cualquier microprocesador. En la Figura 'Esquema
ING. JOSE ANTONIO MOLINA CARRILLO Pgina 14

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

de un microcontrolador' podemos ver la estructura tpica de un microprocesador, con sus componentes fundamentales, claro est que ningn procesador real se ajusta exactamente a esta estructura, pero aun as nos permite conocer cada uno de sus elementos bsicos y sus interrelaciones.

Registros
Son un espacio de memoria muy reducido pero necesario para cualquier microprocesador, de aqu se toman los datos para varias operaciones que debe realizar el resto de los circuitos del procesador. Los registros sirven para almacenar los resultados de la ejecucin de instrucciones, cargar datos desde la memoria externa o almacenarlos en ella. Aunque la importancia de los registros parezca trivial, no lo es en absoluto. De hecho una parte de los registros, la destinada a los datos, es la que determina uno de los parmetros ms importantes de cualquier microprocesador. Cuando escuchamos que un procesador es de 4, 8, 16, 32 64 bits, nos estamos refiriendo a procesadores que realizan sus operaciones con registros de datos de ese tamao, y por supuesto, esto determina muchas de las potencialidades de estas mquinas. Mientras mayor sea el nmero de bits de los registros de datos del procesador, mayores sern sus prestaciones, en cuanto a poder de cmputo y velocidad de ejecucin, ya que este parmetro determina la potencia que se puede incorporar al resto de los componentes del sistema, por ejemplo, no tiene sentido tener una ALU de 16 bits en un procesador de 8 bits. Por otro lado un procesador de 16 bits, puede que haga una suma de 16 bits en un solo ciclo de mquina, mientras que uno de 8 bits deber ejecutar varias instrucciones antes de tener el resultado, aun cuando ambos procesadores tengan la misma velocidad de ejecucin para sus instrucciones. El procesador de 16 bits ser ms rpido porque puede hacer el mismo tipo de tareas que uno de 8 bits, en menos tiempo.

Unidad de control
Esta unidad es de las ms importantes en el procesador, en ella recae la lgica necesaria para la decodificacin y ejecucin de las instrucciones, el control de los registros, la ALU, los buses y cuanta cosa ms se quiera meter en el procesador. La unidad de control es uno de los elementos fundamentales que determinan las prestaciones del procesador, ya que su tipo y estructura, determina parmetros tales como el tipo de conjunto de instrucciones, velocidad de ejecucin, tiempo del ciclo de mquina, tipo de buses que puede tener el sistema, manejo de interrupciones y un buen nmero de cosas ms que en cualquier procesador van a parar a este bloque. Por supuesto, las unidades de control, son el elemento ms complejo de un procesador y normalmente estn divididas en unidades ms pequeas trabajando de conjunto. La unidad de control agrupa componentes tales como la unidad de decodificacin, unidad de ejecucin, controladores de memoria cache, controladores de buses, controladores de interrupcin, pipelines, entre otros elementos, dependiendo siempre del tipo de procesador.

Unidad aritmtico-lgica
Como los procesadores son circuitos que hacen bsicamente operaciones lgicas y matemticas, se le dedica a este proceso una unidad completa, con cierta independencia. Aqu es donde se realizan las sumas, restas, y operaciones lgicas tpicas del lgebra de Boole.

ING. JOSE ANTONIO MOLINA CARRILLO

Pgina 15

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

Actualmente este tipo de unidades ha evolucionado mucho y los procesadores ms modernos tienen varias ALU, especializadas en la realizacin de operaciones complejas como las operaciones en coma flotante. De hecho en muchos casos le han cambiado su nombre por el de coprocesador matemtico, aunque este es un trmino que surgi para dar nombre a un tipo especial de procesador que se conecta directamente al procesador ms tradicional. Su impacto en las prestaciones del procesador es tambin importante porque, dependiendo de su potencia, tareas ms o menos complejas, pueden hacerse en tiempos muy cortos, como por ejemplo, los clculos en coma flotante.

4.1.3 Espacio de Memoria.


Memoria de programa Esta vendra a ser la memoria de instrucciones, aqu es donde almacenaremos nuestro programa o cdigo que el micro debe ejecutar. No hay posibilidad de utilizar memorias externas de ampliacin. Son 5 los tipos de memoria. pero slo describir dos:

Memorias EEPROM. (Electrical Erasable Programmable Read Only Memory - Memoria de slo lectura Programable y borrable elctricamente) Comn en el PIC 16C84. sta tarea se hace a travs de un circuito grabador y bajo el control de un PC. El nmero de veces que puede grabarse y borrarse una memoria EEPROM es finito aproximadamente 1000 veces, no es acaso suficiente...?. Este tipo de memoria es relativamente lenta. Memorias FLASH. Disponible en el PIC16F84. Posee las mismas caractersticas que la EEPROM, pero sta tiene menor consumo de energa y mayor capacidad de almacenamiento, por ello est sustituyendo a la memoria EEPROM.

La memoria de programa se divide en pginas de 2,048 posiciones. El PIC16F84A slo tiene implementadas 1K posiciones es decir de 0000h a 03FFh y el resto no est implementado. (es aquello que se ve en gris) Cuando ocurre un Reset, el contador de programa (PC) apunta a la direccin 0000h, y el micro se inicia nuevamente. Por esta razn , en la primera direccin del programa se debe escribir todo lo relacionado con la iniciacin del mismo (por ejemplo, la configuracin de los puertos...). Ahora, si ocurre una interrupcin el contador de programa (PC) apunta a la direccin 0004h, entonces ah escribiremos la programacin necesaria para atender dicha interrupcin. Algo que se debe tener en cuenta es la pila o Stack, que consta de 8 posiciones (o niveles), esto es como una pila de 8 platos el ltimo en poner es el primero en sacar, si seguimos con este ejemplo, cada plato contiene la direccin y los datos de la instruccin que se est ejecutando, as cuando se efecta una llamada (CALL) o una interrupcin, el PC sabe donde debe regresar (mediante la instruccin RETURN, RETLW o RETFIE, segn el caso) para continuar con la ejecucin del programa.

ING. JOSE ANTONIO MOLINA CARRILLO

Pgina 16

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

Recuerda, slo 8 llamadas "CALL", ten en cuenta las "INTERRUPCIONES".

Memoria de datos
Tiene dos zonas diferentes: 1. RAM esttica SRAM: donde residen los Registros Especficos (SFR) con 24 posiciones de tamao byte, aunque dos de ellas no son operativas y los Registros de Propsito General (GPR) con 68 posiciones. La RAM del PIC16F84A se halla dividida en dos bancos (banco 0 y banco 1) de 128 bytes cada uno (7Fh), 2. EEPROM: de 64 bytes donde, opcionalmente, se pueden almacenar datos que no se pierden al desconectar la alimentacin.
Podemos comprobar cmo la memoria est dividida en dos bancos (cada una de las columnas): banco 0 y banco 1. Las primeras 12 posiciones de cada banco (00h-0Bh y 80h-8Bh) estn ocupadas por los Registros de Propsito Especial (Special Purpose Registers). Estos registros, en los que entraremos en detalle ms adelante, son los encargados de controlar ciertas funciones especficas del PIC. Las 68 posiciones siguientes (0Ch-4Fh y 8Ch-CFh) son los denominados Registros de Propsito General, del ingls General Purpose Registers. stos son empleados para guardar cualquier dato que necesitemos durante la ejecucin del programa.

BANCO 0

TMR0: es un temporizador/contador de 8 bits. Puede operar de dos modos distintos:


Pgina 17

ING. JOSE ANTONIO MOLINA CARRILLO

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

- Temporizador: el registro incrementa su valor en cada ciclo de instruccin (Fosc/4). - Contador: el registro incrementa su valor con cada impulso introducido en la patita RA4/TOSKI. En ambos casos, cuando el registro se desborda, es decir, llega a su valor mximo (en este caso 2^8 = 256. Como el 0 tambin se cuenta, el mximo valor sera 255), empieza de nuevo a contar a partir del 0, no sin antes informar de este evento a travs de la activacin de un flag y/o una interrupcin.

PCL: es el contador del programa. Indica la direccin de memoria que se leer a continuacin. En algunas ocasiones, como el empleo de las tablas, el uso de este registro es imprescindible. STATUS: registro de 8 bits que sirve para configurar ciertos aspectos del PIC. En la siguiente figura se aprecia la disposicin de los bits de dicho registro:

- RP0: indica el banco de memoria con el que se est trabajando. Cuando vale 0 se selecciona el Banco 0 y cuando vale 1 el Banco 1.

PORTA: representacin de la puerta A. Cada bit representa una lnea de E/S de la puerta A:

Como se puede comprobar, los tres bits de mayor peso no representan ninguna lnea de E/S, ya que la puerta A slo tiene 5 lneas de E/S

PORTB: lo mismo que la puerta A, pero en este caso con 8 lneas de E/S

BANCO 1

TRISA: registro de 8 bits de configuracin de la puerta A. Si un bit se encuentra en 1, esa lnea de E/S se configura como entrada; si, en cambio, se encuentra a 0, se configura como salida TRISB: lo mismo que TRISA, pero referente a la puerta B.

Finalmente cabe destacar el registro W, tambin conocido como registro de trabajo (del ingls work) o acumulador. Es de vital importancia ya que, entre otras, deberemos usarlo de registro puente para llevar a cabo ciertas operaciones. Repertorio de instrucciones

ING. JOSE ANTONIO MOLINA CARRILLO

Pgina 18

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

A continuacin veremos algunas de las instrucciones ms importantes, o al menos ms empleadas en la programacin de PICs, en ASM. Las restantes se irn viendo en entregas posteriores segn vaya siendo necesario u manejo: - Manejo de registros - clrf f: limpia el registro f, es decir, pone todos sus bits a 0. - comf f,d: complementa el registro fuente f cambia los 1 por 0 y viceversa) y el resultado lo deposita en el destino. Si d = 0 el destino es W y si d = 1, el destino es el registro fuente f. - Manejo de bits - bcf f,b: pone a 0 el bit b del registro f. - bsf f,b: pone a 1 el bit b del registro f. - Brinco - Btfsc f, b: explora el bit b del registro f y salta si vale 0 - Btfss f, b: explora el bit b del registro f y salta si vale 1 - Control y especiales - Goto etiqueta: sita el cursor del programa (PCL), en etiqueta El Contador de Programas (PC) Los microcontroladores de la gama media disponen de un Contador de Programa (PC) de 13 bits, cuyos bits de menor peso corresponden a los 8 bits del registro PCL, implementado en la posicin de memoria RAM 02h (y duplicado en la posicin 82h),y los cinco bit de mayor peso del PC corresponden con los 5 bits de menor peso del registro PCLATCH, implementado en la posicin de memoria RAM 0Ah (y duplicado en la posicin 8Ah), lo que le permite direccionar hasta 8 K x 14 bits dividido en pginas de 2 K x 14 bits. Sin embargo, el PIC16C84 dispone tan solo de 1Kx14 bits de memoria implementada, desde la posicin 0000h hasta la 03FFh, los 3 bit de mayor peso del PC no los tiene en cuenta, as pues la direccin 30h, 430h, 830h, C30h,1430h, 1830 y 1C30h se considera como la misma.

En las instrucciones CALL y GOTO los 11 <10:0> bits de menos peso corresponden al cdigo de operacin, mientras que los 2 bit de mayor peso<12:11> los suministran respectivamente los bit 4 y 3 del registro PCLATH que realmente apuntan a una de las 4 pginas del mapa de memoria que puede direccionar el PC.

ING. JOSE ANTONIO MOLINA CARRILLO

Pgina 19

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

Un Reset provoca que se pongan a cero todos los bits del los registros PCL y PCLATCH, forzando que la direccin de inicio sea la 0000h. Como puede verse en la siguiente figura, el vector de reset se almacena en la direccin 0000h, mientras que el vector de interrupcin est en la direccin 0004h. La memoria de programa de usuario propiamente dicha, comienza en la posicin 0005h y llega hasta la 03FFh

La Pila La pila es una zona de memoria, que se encuentra separada tanto de la memoria de programa como de la de datos. Tiene una estructura LIFO (Last In First Out), por lo que el ltimo valor que se guarda es el primero que sale. Dispone de 8 niveles de profundidad cada uno de ellos con una longitud de 13 bits. Su funcionamiento es
ING. JOSE ANTONIO MOLINA CARRILLO Pgina 20

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

como el de un buffer circular, de tal forma que el valor que se obtiene al realizar nueve desplazamientos, es igual al primer desplazamiento. La nica manera de cargar la Pila es a travs de la instruccin CALL (llamada a subrutina) o por una interrupcin que hacen que con cada una de ellas, se cargue el contenido del PC en el valor superior de la Pila. Para recuperar el contenido de la Pila en el PC hay que ejecutar una instruccin RETURN, RETLW o RETFIE (vuelta del programa de atencin a una subrutina o interrupcin). No se dispone de ningn flag (identificador) que indique un desbordamiento de la Pila. Palabras de Configuracin e Identificacin Los PIC de la gama media disponen de una palabra de configuracin de 14 bits que se escribe durante el proceso de grabacin del dispositivo y que debe hacerse de acuerdo con el sistema en el que se va a insertar. Dichos bits ocupan la posicin reservada de memoria de programa 2007h. En la Tabla siguiente se muestra la estructura de la Palabra de configuracin
CP bit 13 bit12 bit11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 PWRTE WDTE FOSC1 FOSC2 bit 3 bit 2 bit 1 bit 0

Bit 4: CP, bit de configuracin proteccin de cdigo

1= Proteccin de cdigo desactivado 0=Proteccin de cdigo activado Bit 3: PWRTE, Activacin del temporizador "Power-Up" 1= Desactivado 0= Activado Bit 2: bit de configuracin habilitacin del Watchdog (WDT) 1: WDT activado 0: WDT desactivado Bit1 y 2: FOSC<1:0> 11: Oscilador RC 10 Oscilador HS ( 8 - 20 MHz) 01 Oscilador XT ( 100 KHz- 4MHz) 00 Oscilador LP (Bajo consumo 32- 200 Hz) Palabra de Configuracin del PIC16C84 Adems dispone de cuatro posiciones de memoria de programa ubicadas en las direcciones <2000h:2003h>, reservadas para las Palabras de Identificacin ID. Estas palabras que se escriben durante el proceso de grabacin, slo emplean los 4 bits de menos peso y se utilizan por el programador para indicar el cdigo del dispositivo, el nmero de serie, la versin del programa, etc.

ING. JOSE ANTONIO MOLINA CARRILLO

Pgina 21

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

4.1.4 Entrada/ Salida.


Entradas y salidas de propsito general Tambin conocidos como puertos de E/S, generalmente agrupadas en puertos de 8 bits de longitud, permiten leer datos del exterior o escribir en ellos desde el interior del microcontrolador, el destino habitual es el trabajo con dispositivos simples como rels, LED, o cualquier otra cosa que se le ocurra al programador. Algunos puertos de E/S tienen caractersticas especiales que le permiten manejar salidas con determinados requerimientos de corriente, o incorporan mecanismos especiales de interrupcin para el procesador. Tpicamente cualquier pin de E/S puede ser considerada E/S de propsito general, pero como los microcontroladores no pueden tener infinitos pines, ni siquiera todos los pines que queramos, las E/S de propsito general comparten los pines con otros perifricos. Para usar un pin con cualquiera de las caractersticas a l asignadas debemos configurarlo mediante los registros destinados a ello.

Configuracin de los puertos del PIC


Lleg el momento de ver como configurar los puertos del PIC. Para poder hacerlo es necesario conocer la tabla de registros de la memoria de datos, la cual como dijimos, est dividida en el BANCO 0 y BANCO 1. Los registros importantes en la configuracin de los puertos son:

STATUS direccin 0x3 PORTA direccin 0x5 PORTB direccin 0x6 TRISA direccin 0x5 TRISB direccin 0x6
ING. JOSE ANTONIO MOLINA CARRILLO Pgina 22

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

Por defecto el PIC tendr todos los I/O port's (es decir los puertos RA y RB), colocados como entrada de datos, y si queremos cambiarlos habr que configurarlos. Al configurar los puertos debers tener en cuenta que: Si asignas un CERO (0) a un pin, ste quedar como salida y... Si le asignas un UNO (1), quedar como entrada Esta asignacin se hace en: TRISA para los pines del PUERTO A (5 bits) TRISB para los pines del PUERTO B (8 bits) Por Ejemplo: Si TRISA es igual a 11110 todos sus pines sern entradas salvo RA0 que esta como salida Si TRISB es igual a 00000001 todos sus pines sern salidas salvo RB0 que esta como entrada Cuando el PIC arranca se encuentra en el BANCO 0, como TRISA y TRISB estn en el BANCO 1 no queda otra, deberemos cambiar de banco. Esto se logra a travs del Registro STATUS STATUS es un Registro de 8 bits u 8 casillas, en el cual la N 5 (RP0) define la posicin del banco en donde nos encontramos Si pones un CERO (0) a RP0 estaremos en el BANCO 0 Si le pones un UNO (1) ya ves, estaremos en el BANCO 1
REGISTRO STATUS

7 IRP

6 RP1

5 RP0

4 TO

3 PD

2 Z

1 DC

0 C

Vamos a escribir un cdigo que configure todos los pines del puerto A como entrada y todos los del puerto B como salida.
;---------------Encabezado------------list radix p=16f84 hex ; usaremos el PIC 16f84 ; y la numeracin hexadecimal

;------------mapa de memoria--------estado equ 0x03 ; Aqu le asignamos nombres a

ING. JOSE ANTONIO MOLINA CARRILLO

Pgina 23

ARQUITECTURA DE COMPUTADORAS los trisa equ posicin trisb equ 0x05 0x06

UNIDAD V ; registros indicando la ; en la que se encuentran

Microcontroladores

;-------Configuracin de puertos------reset org comenzar 0x00 ; origen del programa, aqu ; siempre que ocurra un reset ; salto a "inicio" ; origen del cdigo de ; pongo rp0 a 1 y ; cargo W con 11111 ; y paso el valor a trisa ; cargo W con 00000000 ; y paso el valor a trisb ; pongo rp0 a 0 y

goto inicio org 0x05 programa inicio bsf estado,5 paso al banco1 movlw b'11111' movwf trisa movlw b'00000000' movwf trisb bcf estado,5 regreso al banco0

;-----------------------------------------end ; se acab ;------------------------------------------

Descripcin del cdigo: Todo lo que escribas luego de un ";" (punto y coma) ser ignorado por el ensamblador, estos son los famosos comentarios, y sirve para saber que hace cada lnea de cdigo. Dicho esto no queda ms que describir el cdigo, as que vamos por partes.
;---------------Encabezado------------list radix p=16f84 hex ; usaremos el PIC 16f84 ; y la numeracin hexadecimal

Aqu le indicas al ensamblador para que microcontrolador estas codificando (PIC16F84). y cual ser el sistema de numeracin que utilizars (hexadecimal). Nota que hay tres columnas, en este caso la primera est vaca. Respeta las tabulaciones para no confundir al ensamblador.
;------------mapa de memoria--------estado trisa trisb equ equ equ 0x03 0x05 0x06 ; Aqu le asignamos nombres a los ; registros indicando la posicin ; en la que se encuentran

ING. JOSE ANTONIO MOLINA CARRILLO

Pgina 24

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

Recuerdas lo de la memoria de datos...? Bien, al registro STATUS, que est en la posicin 0x03 de la memoria de datos le puse la etiqueta "estado". equ es algo as comoooo...igual . (Es decir, le estoy asignando el nombre estado al registro que est en la posicin 0x03 de la memoria de datos). Luego hice lo mismo con trisa y trisb. Ahora sigamos...
;-------Configuracin de puertos------reset org goto org bsf movlw movwf movlw movwf bcf 0x00 ; origen del programa, aqu comenzar ; siempre que ocurra un reset inicio ; salto a "inicio" 0x05 ; origen del cdigo de programa estado,5 ; pongo rp0 a 1 y paso al banco1 b'11111' ; cargo W con 11111 trisa ; y paso el valor a trisa b'00000000' ; cargo W con 00000000 trisb ; y paso el valor a trisb estado,5 ; pongo rp0 a 0 y regreso al banco0

inicio

La directiva org indica el sitio de la memoria en donde se escribe una parte del programa. En este caso el contador de programa apuntar a la direccin 0x00 (reset) entonces ejecutar la instruccin que sigue a continuacin, (saltar a la etiqueta inicio) y nuestro cdigo de programa comienza en la direccin de memoria 0x05 (aqu salto por encima de la interrupcin 0x04) BSF (SET FILE REGISTER), es la instruccin que pone un uno en el bit del registro especificado, en este caso pone a uno el bit 5 del registro STATUS (el rp0), para pasar al banco 1. movlw es algo as como... mueve el siguiente literal al Registro W. W es el Registro de Trabajo, y lo usamos para almacenar momentneamente los datos que queremos mover. una vez hecho esto pasamos el dato a trisa, o a trisb, segn el caso. movwf es algo as como... mueve el contenido del registro W al registro f, en este caso f sera trisa o trisb. BCF (BIT CLEAR FILE REGISTER), sta instruccin limpia el bit del registro especificado, o lo pone a cero, en este caso pone a cero el bit 5 del registro STATUS para regresar al banco 0.
;-----------------------------------------end ;------------------------------------------

; se acab

Programando en serio El programa lo utilizaremos de tiempo completo, y lo nico que cambiaremos sern los pines de entrada y salida. Ahora si programaremos en serio. Encenderemos un LED, lo mantendremos encendido por un tiempo, luego
ING. JOSE ANTONIO MOLINA CARRILLO Pgina 25

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

lo apagaremos y haremos que se repita todo de nuevo. Recuerda ponerle un nombre, aqu lo llamar LED1.asm (no olvides el .asm)

.Comencemos
;---------------Encabezado------------LIST radix p=16f84 hex

;------------mapa de memoria--------estado TRISB ptob reg1 reg2 reg3 equ equ equ equ equ equ 0x03 0x06 0x06 0x0C 0x0D 0x0E ; Haciendo asignaciones

; Estos 3 registros los utilizar ; para hacer el retardo

;-------Configuracin de puertos------reset org goto bsf movlw movwf bcf 0x00 ; origen del programa, aqu comenzar ; siempre que ocurra un reset inicio ; salta a "inicio" estado,5 ; pone rp0 a 1 y pasa al banco1 b'00000000' ; carga W con 00000000 TRISB ; y pasa el valor a trisb estado,5 ; pone rp0 a 0 y regresa al banco0

inicio

;----Aqu enciende y apaga el LED----ahora bsf call bcf call goto ptob,0 retardo ptob,0 retardo ahora ; pone un 1 en RB0 (enciende el LED) ; llama al retardo ; pone a 0 RB0 (apaga el LED) ; llama al retardo ; repite todo de nuevo

;-----------Rutina de Retardo----------retardo movlw movwf movlw movwf movlw movwf decfsz goto decfsz goto 10 reg1 20 reg2 30 reg3 reg3,1 uno reg2,1 dos ; Aqu se comienza a decrementar ; Cuando reg3 llegue a 0 ; le quitare 1 a reg2 ; cuando reg2 llegue a 0 Pgina 26 ; Aqu se cargan los registros ; reg1, reg2 y reg3 ; con los valores 10, 20 y 30 ; respectivamente

tres

dos

uno

ING. JOSE ANTONIO MOLINA CARRILLO

ARQUITECTURA DE COMPUTADORAS decfsz goto retlw reg1,1 tres 00

UNIDAD V ; le quitare 1 a reg1 ; cuando reg1 llegue a 0 ; regresare al lugar ; de donde se hizo la llamada

Microcontroladores

;-----------------------------------------end ;------------------------------------------

; se acab

Descripcin del cdigo:


Se agregaron 3 registros mas (reg1, reg2 y reg3), stos vendran a ser como variables ubicadas en sus respectivas posiciones (0x0C, 0x0D, 0x0E,) y son registros de propsito general (recuerda que para el PIC16F84 son 68, puedes elegir cualquiera). A dems se agreg ptob, etiqueta que corresponde a la direccin del puerto B Analicemos lo que sigue..., que ste es el programa en s:
;----Aqu enciende y apaga el LED----ahora bsf call bcf call goto ptob,0 retardo ptob,0 retardo ahora ; pone un 1 en RB0 (enciende el LED) ; llama al retardo ; pone a 0 RB0 (apaga el LED) ; llama al retardo ; repite todo de nuevo

La etiqueta "ahora" es el nombre de todo este procedimiento o rutina, de tal modo que cuando quiera repetir el procedimiento solo saltare a "ahora". bsf es poner a uno un bit, en este caso al primer bit (el bit 0) del puerto B (ptob). call es una llamada, en este caso llama a la rutina de retardo, cuando regrese, continuar con el cdigo. bcf es poner a cero un bit, en este caso al primer bit (bit 0) del puerto B (ptob). y luego llama al retardo, cuando regrese se encontrar con la instruccin goto obligndolo a saltar a la etiqueta ahora para que se repita todo de nuevo. Eso es todo...!!!. Rutina de retardo Esta es la parte ms difcil, pero tratar de hacerlo sencillo as puedes continuar con lo que sigue y no te trabas en esta parte. Primero veremos como se cargan los registros para el retardo. Veamos el cdigo... ;-----------Rutina de Retardo----------retardo movlw movwf 10 reg1 ; Aqu se cargan los registros ; reg1, reg2 y reg3 ; con los valores 10, 20 y 30
Pgina 27

ING. JOSE ANTONIO MOLINA CARRILLO

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

tres

movlw movwf movlw movwf

20 reg2 30 reg3

; respectivamente

dos

Recordemos que en el mapa de memoria los registros 0x0C, 0x0D y 0x0E fueron nombrados como reg1, reg2 y reg3 respectivamente. Ahora simularemos los tres registros para ver como se cargan mediante el registro de trabajo W, (utilizamos W por que los valores 10, 20 y 30 son valores constantes). Repito, esto es una simulacin bien a lo bruto, as que vamos a suponer que en vez de 10 cargo 1, en lugar de 20 cargo 2 y en lugar de 30 cargo 3, hago esto, solo con fines didcticos as podrs comprenderlo mejor, ok?.

Lo que acabas de ver, fue la carga de los registros reg1, reg2 y reg3. Ahora vers como se comienza a decrementar cada uno de esos registros, primero reg3, luego reg2 y finalmente reg1. tres movlw movwf movlw movwf decfsz goto decfsz goto decfsz goto retlw 20 reg2 30 reg3 reg3,1 uno reg2,1 dos reg1,1 tres 00 ; Aqu se comienza a decrementar ; Cuando reg3 llegue a 0 ; le quitare 1 a reg2 ; cuando reg2 llegue a 0 ; le quitare 1 a reg1 ; cuando reg1 llegue a 0 ; regresare al lugar ; de donde se hizo la llamada ; respectivamente

dos

uno

Veamos, decfsz reg3,1 esto es, decrementa reg3, si al decrementar te da cero saltate una lnea. El 1 que sigue a reg3, indica que guarde el valor de reg3 decrementado en el mismo reg3, es comoooo.... contador=contador-1 (se entiende...?) goto, es saltar y goto uno es saltar a la etiqueta uno. En esta pequea vuelta estoy decrementando reg3 hasta que se haga cero. Cuando reg3 llegue a 0 decrementar reg2 en una unidad, volver a cargar reg3 y lo decrementar
ING. JOSE ANTONIO MOLINA CARRILLO Pgina 28

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

nuevamente para recin restarle otra unidad a reg2, y as... hasta que reg2 se haga cero. Cuando eso ocurra decrementar reg1 en una unidad, cargar nuevamente reg2 y reg3, para luego decrementarlos de nuevo, todo esto ocurrir hasta que reg1 se haga igual a cero.

Esta rutina de retardo, aunque parezca absurda y larga nos permite ver como se enciende y se apaga el LED, de lo contrario no podramos notar la diferencia, o lo veramos apagado o encendido, ya que la velocidad es demasiado alta si estamos trabajando con un XT de 4 MHz. Finalmente nos queda la ltima instruccin:
;-----------------------------------------end ; se acab ;------------------------------------------

Sin palabras. Una vez cargado el programa en el PIC, necesitars ver el programa funcionando, por lo que debers armar este circuito.

El pin 4 (MCLR) est conectado por lo del Reset, para que se estabilicen los niveles de tensin.

4.1.5 Caractersticas especiales. Interrupciones


Imagine que est esperando la visita de un amigo, al que llamaremos Juan. Usted y Juan han acordado que cuando l llegue a su casa esperar pacientemente a que le abra la puerta. Juan no debe tocar a la puerta porque alguien en la casa duerme y no quiere que le despierten.
ING. JOSE ANTONIO MOLINA CARRILLO Pgina 29

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

Ahora usted ha decidido leer un libro mientras espera a que Juan llegue a la casa, y para comprobar si ha llegado, cada cierto tiempo detiene la lectura, marca la pgina donde se qued, se levanta y va hasta la puerta, abre y comprueba si Juan ha llegado, si ste todava no est en la puerta, esperar unos minutos, cerrar la puerta y regresar a su lectura durante algn tiempo. Como ver este es un mtodo poco eficiente para esperar a Juan porque requiere que deje la lectura cada cierto tiempo y vaya hasta la puerta a comprobar si l ha llegado, adems debe esperar un rato si todava no llega. Y por si fuera poco, imagine que Juan no llega nunca porque se le present un problema, tuvo que cancelar la cita y no pudo avisarle a tiempo, o peor, que Juan ha llegado a la puerta un instante despus que usted la cerraba. Juan, respetando lo acordado, espera un tiempo, pero se cansa de esperar a que le abran y decide marcharse porque cree que ya usted no est en la casa o no puede atenderlo. A este mtodo de atender la llegada de Juan lo llamaremos encuesta. Veamos ahora otro mtodo. En esta ocasin simplemente se recuesta en el sof de la sala y comienza a leer su libro, cuando Juan llegue debe tocar el timbre de la puerta y esperar unos momentos a que le atiendan. Cuando usted oye sonar el timbre, interrumpe la lectura, marca la pgina donde se qued y va hasta la puerta para atender a la persona que toca el timbre. Una vez que Juan o la persona que ha tocado el timbre, se marcha, usted regresa a su asiento y retoma la lectura justo donde la dej. Este ltimo es un mtodo ms eficiente que el anterior porque le deja ms tiempo para leer y elimina algunos inconvenientes como el de que Juan nunca llegue o se marche antes de que usted abra la puerta. Es, en principio, un mtodo simple pero muy eficaz y eficiente, lo llamaremos atencin por interrupcin. El primero de ellos, la encuesta, es un mtodo eficaz, pero poco eficiente porque requiere realizar lecturas constantes y muchas veces innecesarias del estado del proceso que queremos atender. Sin embargo, es muy utilizado en la programacin de microcontroladores porque resulta fcil de aprender, la implementacin de cdigo con este mtodo es menos compleja y no requiere de hardware especial para llevarla adelante. Por otra parte, la encuesta, tiene muchas deficiencias que con frecuencia obligan al diseador a moverse hacia otros horizontes El mundo est lleno de situaciones; de las cuales no podemos determinar ni cuando, ni como ni por qu se producen, en la mayora de los casos lo nico que podemos hacer es enterarnos de que determinada situacin, asociada a un proceso, ha ocurrido. Para ello seleccionamos alguna condicin o grupo de condiciones que nos indican que el proceso que nos interesa debe ser atendido, a este fenmeno, en el cual se dan las condiciones que nos interesa conocer, lo llamaremos evento. En el segundo ejemplo vemos que para atender a Juan, ste debe tocar el timbre, por tanto, la llegada de Juan es el proceso que debemos atender y el sonido del timbre es el evento que nos indica que Juan ha llegado. El mtodo de atencin a procesos por interrupcin, visto desde la ptica del ejemplo que se utiliz para mostrarlo, es ms simple que el de la encuesta, pero no es cierto, el mtodo se complica porque requiere que el microprocesador incorpore circuitos adicionales para registrar los eventos que le indican que debe atender al proceso asociado y comprender estos circuitos y su dinmica no es una tarea sencilla. Los circuitos para la atencin a las interrupciones y todas las tareas que debe realizar el procesador para atender al proceso que lo interrumpe son bastante complejos y requieren una visin diferente de la que estamos acostumbrados a tener de nuestro mundo. Los seres humanos no estamos conscientes de las interrupciones, en nuestro organismo existen mecanismos que nos interrumpen constantemente, para ello tenemos a nuestro sistema sensorial, pero no somos conscientes del proceso de interrupcin, aunque s de la atencin a las interrupciones. Eso es porque
ING. JOSE ANTONIO MOLINA CARRILLO Pgina 30

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

incorporamos mecanismos que nos sacan rpidamente de la tarea que estemos haciendo para atender una situacin que no puede o no debe esperar mucho tiempo. Bien, esa misma es la idea que se incorpora en los microprocesadores para atender procesos que no pueden esperar o que no sabemos cuando deben ser atendidos porque ello depende de determinadas condiciones. La cosa se complica en la secuencia de acciones a realizar desde el momento en que se desencadena el proceso de interrupcin, hasta que se ejecuta el programa que lo atiende, y en la secuencia de acciones posteriores a la atencin. Piense en cuantas cosas debe hacer su organismo ante una interrupcin, utilicemos el segundo ejemplo para atender la llegada de Juan. Piense en cuantas cosas su cerebro hace a espaldas de su conciencia, desde el momento en que suena el timbre hasta que usted se encuentra listo (consciente de que es probable que Juan ha llegado) para abrir la puerta, y todo lo que su cerebro debe trabajar para retomar la lectura despus que Juan se ha marchado. Todo eso, excepto abrir la puerta y atender a Juan, lo hacemos de forma inconsciente porque para ello tenemos sistemas dedicados en nuestro organismo, pero en el mundo de los microcontroladores debemos conocer todos esos detalles para poder utilizar los mecanismos de interrupcin. Los procesos de atencin a interrupciones tienen la ventaja de que se implementan por hardware ubicado en el procesador, as que es un mtodo rpido de hacer que el procesador se dedique a ejecutar un programa especial para atender eventos que no pueden esperar por mecanismos lentos como el de encuesta. En trminos generales, un proceso de interrupcin y su atencin por parte del procesador, tiene la siguiente secuencia de acciones: 1. En el mundo real se produce el evento para el cual queremos que el procesador ejecute un programa especial, este proceso tiene la caracterstica de que no puede esperar mucho tiempo antes de ser atendido o no sabemos en que momento debe ser atendido. 2. El circuito encargado de detectar la ocurrencia del evento se activa, y como consecuencia, activa la entrada de interrupcin del procesador. 3. La unidad de control detecta que se ha producido una interrupcin y levanta una bandera para registrar esta situacin; de esta forma si las condiciones que provocaron el evento desaparecen y el circuito encargado de detectarlo desactiva la entrada de interrupcin del procesador, sta se producir de cualquier modo, porque ha sido registrada. 4. La unidad de ejecucin termina con la instruccin en curso y justo antes de comenzar a ejecutar la siguiente comprueba que se ha registrado una interrupcin 5. Se desencadena un proceso que permite guardar el estado actual del programa en ejecucin y saltar a una direccin especial de memoria de programas, donde est la primera instruccin de la subrutina de atencin a interrupcin. 6. Se ejecuta el cdigo de atencin a interrupcin, esta es la parte consciente de todo el proceso porque es donde se realizan las acciones propias de la atencin a la interrupcin y el programador juega su papel. 7. Cuando en la subrutina de atencin a interrupcin se ejecuta la instruccin de retorno, se desencadena el proceso de restauracin del procesador al estado en que estaba antes de la atencin a la interrupcin. Como podemos observar, el mecanismo de interrupcin es bastante complicado, sin embargo tiene dos ventajas que obligan a su implementacin: la velocidad y su capacidad de ser asincrnico. Ambas de conjunto permiten que aprovechemos al mximo las capacidades de trabajo de nuestro procesador.
ING. JOSE ANTONIO MOLINA CARRILLO Pgina 31

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

Los mecanismos de interrupcin no solo se utilizan para atender eventos ligados a procesos que requieren atencin inmediata sino que se utilizan adems para atender eventos de procesos asincrnicos. Las interrupciones son tan eficaces que permiten que el procesador acte como si estuviese haciendo varias cosas a la vez cuando en realidad se dedica a la misma rutina de siempre, ejecutar instrucciones una detrs de la otra. Perifricos Cuando vimos la organizacin bsica de un microcontrolador, sealamos que dentro de este se ubican un conjunto de perifricos, cuyas salidas estn reflejadas en los pines del microcontrolador. A continuacin describiremos algunos de los perifricos que con mayor frecuencia encontraremos en los microcontroladores. Temporizadores y contadores Son circuitos sincrnicos para el conteo de los pulsos que llegan a su entrada de reloj. Si la fuente de conteo es el oscilador interno del microcontrolador es comn que no tengan un pin asociado, y en este caso trabajan como temporizadores. Por otra parte, cuando la fuente de conteo es externa, entonces tienen asociado un pin configurado como entrada, este es el modo contador. Los temporizadores son uno de los perifricos ms habituales en los microcontroladores y se utilizan para muchas tareas, como por ejemplo, la medicin de frecuencia, implementacin de relojes, para el trabajo de conjunto con otros perifricos que requieren una base estable de tiempo entre otras funcionalidades. Es frecuente que un microcontrolador tpico incorpore ms de un temporizador/contador e incluso algunos tienen arreglos de contadores. Como veremos ms adelante este perifrico es un elemento casi imprescindible y es habitual que tengan asociada alguna interrupcin. Los tamaos tpicos de los registros de conteo son 8 y 16 bits, pudiendo encontrar dispositivos que solo tienen temporizadores de un tamao o con ms frecuencia con ambos tipos de registro de conteo. Conversor analgico/digital Como es muy frecuente el trabajo con seales analgicas, stas deben ser convertidas a digital y por ello muchos microcontroladores incorporan un conversor A/D, el cual se utiliza para tomar datos de varias entradas diferentes que se seleccionan mediante un multiplexor. Las resoluciones ms frecuentes son 8 y 10bits, aunque hay microcontroladores con conversores de 11 y 12 bits, para resoluciones mayores es preciso utilizar conversores A/D externos. Los conversores A/D son uno de los perifricos ms codiciados en el mundo de los microcontroladores y es por ello que muchsimos PIC los incorporan, siendo esta una de las caractersticas ms destacables de los dispositivos que fabrica Microchip. Puerto serie Este perifrico est presente en casi cualquier microcontrolador, normalmente en forma de UART (Universal Asynchronous Receiver Transmitter) o USART (Universal Synchronous Asynchronous Receiver Transmitter) dependiendo de si permiten o no el modo sincrnico de comunicacin. El destino comn de este perifrico es la comunicacin con otro microcontrolador o con una PC y en la mayora de los casos hay que agregar circuitos externos para completar la interfaz de comunicacin. La forma ms comn de completar el puerto serie es para comunicarlo con una PC mediante la interfaz EIA-232 (ms
ING. JOSE ANTONIO MOLINA CARRILLO Pgina 32

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

conocida como RS-232), es por ello que muchas personas se refieren a la UART o USART como puerto serie RS232, pero esto constituye un error, puesto que este perifrico se puede utilizar para interconectar dispositivos mediante otros estndares de comunicacin. Puerto serie sincrnico Este tipo de perifrico se utiliza para comunicar al microcontrolador con otros microcontroladores o con perifricos externos conectados a l, mediante las interfaces SPI (Serial Peripheral Interface) o I2C (InterIntegrated Circuit). A pesar de que es tambin un tipo de puerto serie, es costumbre tratarlo de forma diferenciada respecto a la UART/USART porque las interfaces SPI e I2C aparecieron mucho despus que la UART/USART, su carcter es nicamente sincrnico y no estn diseadas para interconectar al sistema con otros dispositivos independientes como una PC, sino para conectar al microcontrolador dispositivos tales como memorias, pantallas LCD, conversores A/D o D/A. Otros puertos de comunicacin En un mundo cada vez ms orientado a la interconexin de dispositivos, han aparecido muchas interfaces de comunicacin y los microcontroladores no se han quedado atrs para incorporarlas, es por ello que podemos encontrar algunos modelos con puertos USB (Universal Serial Bus), CAN (Controller Area Network), Ethernet, puerto paralelo entre otros. Comparadores Son circuitos analgicos basados en amplificadores operacionales que tienen la caracterstica de comparar dos seales analgicas y dar como salida los niveles lgicos 0 o 1 en dependencia del resultado de la comparacin. Es un perifrico muy til para detectar cambios en seales de entrada de las que solamente nos interesa conocer cuando est en un rango determinado de webetas. Modulador de ancho de pulsos Los PWM (Pulse Width Modulator) son perifricos muy tiles sobre todo para el control de motores, sin embargo hay un grupo de aplicaciones que pueden realizarse con este perifrico, dentro de las cuales podemos citar: la conversin digital analgica D/A, el control regulado de luz (dimming) entre otras. Memoria de datos no voltil Muchos microcontroladores han incorporado este tipo de memoria como un perifrico ms, para el almacenamiento de datos de configuracin o de los procesos que se controlan. Esta memoria es independiente de la memoria de datos tipo RAM o la memoria de programas, en la que se almacena el cdigo del programa a ejecutar por el procesador del microcontrolador. Muchos de los microcontroladores PIC, incluyen este tipo de memoria, tpicamente en forma de memoria EEPROM, incluso algunos de ellos permiten utilizar parte de la memoria de programas como memoria dedatos no voltil, por lo que el procesador tiene la capacidad de escribir en la memoria de programas como si sta fuese un perifrico ms.
ING. JOSE ANTONIO MOLINA CARRILLO Pgina 33

ARQUITECTURA DE COMPUTADORAS

UNIDAD V

Microcontroladores

4.2 Programacin. 4.2.1 Modelo de programacin.


Programacin de microcontroladores La utilizacin de los lenguajes ms cercanos a la mquina (de bajo nivel) representan un considerable ahorro de cdigo en la confeccin de los programas, lo que es muy importante dada la estricta limitacin de la capacidad de la memoria de instrucciones. Los programas bien realizados en lenguaje Ensamblador optimizan el tamao de la memoria que ocupan y su ejecucin es muy rpida. Los lenguajes de alto nivel ms empleados con microcontroladores son el C y el BASIC de los que existen varias empresas que comercializan versiones de compiladores e interpretes para diversas familias de microcontroladores. En el caso de los PIC es muy competitivo e interesante el compilador de C PCM de la empresa CCS y el PBASIC de microLab Engineerign, ambos comercializados en Espaa por Mircosystems Engineering. Hay versiones de interpretes de BASIC que permiten la ejecucin del programa lnea a lnea, y en ocasiones, residen en la memoria del propio microcontrolador. Con ellos se puede escribir una parte del cdigo, ejecutarlo y comprobar el resultado antes de proseguir. Aunque no son los microcontroladores que ms prestaciones ofrecen, en los ltimos aos han ganado mucho mercado, debido al bajo precio de stos, lo sencillo de su manejo y programacin y la ingente cantidad de documentacin y usuarios que hay detrs de ellos. Para qu sirve un PIC? Un PIC, al ser un microcontrolador programable, puede llevar a cabo cualquier tarea para la cual haya sido programado. No obstante, debemos ser conscientes de las limitaciones de cada PIC. As, el 16F84, PIC que se tratar en este tutorial, no podr generar un PWM ni convertir seales analgicas en digitales, entre otras. Quizs la forma ms sencilla de probarlo es configurar al puerto A como de entrada y al puerto B como de salida para enviar el estado del puerto A al puerto B. El programa en ensamblador sera el siguiente:
LIST P=16C84 ;P=16f84a INCLUDE <p16c84.inc> ;INCLUDE <p16f84a.inc> ORG 0 configurar bsf STATUS, RP0 ; Cambiamos al banco 1 clrf TRISB ; Todo el puerto B se configura como salida movlw b'00011111' ; Las lneas del Puerto A se configuran como entradas ING. JOSE ANTONIO MOLINA CARRILLO Pgina 34

You might also like