Vous êtes sur la page 1sur 199

Microprocesadores y microcontroladores

serie/desarrollo de contenidos coleccin/fludica y controladores lgicos programables

INET / Fludica y controladores lgicos programables

Autoridades

Presidente de la Nacin Nstor C. Kirchner Ministro de Educacin, Ciencia y Tecnologa Daniel Filmus Directora Ejecutiva del Instituto Nacional de Educacin Tecnolgica Mara Rosa Almandoz Director Nacional del Centro Nacional de Educacin Tecnolgica Juan Manuel Kirschenbaum

Especialista en contenidos Marcelo Estvez

Todos los derechos reservados. Ley 11.723 Ministerio de Educacin, Ciencia y Tecnologa Instituto Nacional de Educacin Tecnolgica Saavedra 789. C1229ACE Ciudad Autnoma de Buenos Aires Repblica Argentina

serie/desarrollo de contenidos

Colecciones Autotrnica Comunicacin de seales y datos Diseo grfico industrial Electrnica y sistemas de control Fludica y controladores lgicos programables 1. Tecnologa neumtica 2. Controladores lgicos programables PLC 3. Microprocesadores y microcontroladores Gestin de la calidad Gestin de las organizaciones Informtica Invernadero computarizado Laboratorio interactivo de idiomas Procesos de produccin integrada Proyecto tecnolgico Unidades de cultura tecnolgica

INET / Fludica y controladores lgicos programables

ndice

El Centro Nacional de Educacin Tecnolgica De qu se ocupa Microprocesadores y microcontroladores? El problema tecnolgico Las primeras decisiones Ficha 1. Introduccin a los sistemas basados en microprocesador Referencia histrica Sistema mnimo microprocesador Arquitecturas bsicas de microprocesadores y microcontroladores. Harvard versus Von Neumann Ficha 2. Introduccin a los microcontroladores Controlador y microcontrolador Microprocesador y microcontrolador Aplicaciones de los microcontroladores Qu microcontrolador emplear? Almacenamiento y ejecucin del programa Recursos comunes a todos los microcontroladores Recursos especiales Herramientas para el desarrollo de aplicaciones Ejemplos de microcontroladores y aplicaciones Ficha 3. Microcontroladores ms utilizados Motorota 68HC908 (68HC908KX8) Intel 8051(ATMEL AT89S8252) Microchip PIC 16F84 Ficha 4. Programacin de microcontroladores Registros del microcontrolador Lenguaje assembler Estructura de un programa en assembler Desarrollo de un programa en assembler Archivo de cdigo objeto

12 13

23 29 39

48 49 50 51 55 56 62 66 67

79 83 89

109 112 122 128 134

INET / Fludica y controladores lgicos programables

INET / Fludica y controladores lgicos programables

Ficha 5. Set de instrucciones Modos de direccionamiento Clasificacin de las instrucciones 1. Instrucciones de movimiento de datos 2. Instrucciones aritmticas 3. Instrucciones lgicas 4. Instrucciones de manipulacin de bits 5. Instrucciones de manipulacin de datos 6. Instrucciones de control del programa 7. Instrucciones de operaciones BCD 8. Instrucciones especiales Ficha 6. Procesando excepciones Reset e interrupciones Vinculacin con el mundo exterior Volviendo a nuestro problema Anexos Sistemas de numeracin Representacin de la informacin Set de instrucciones de la familia 68HC08 Set de instrucciones PIC 16xxx Bibliografa

145 161 161 164 168 169 169 170 173 173

177 182 184

199 201 208 217 218

El Centro Nacional de Educacin Tecnolgica


Generar valor con equidad en la sociedad del conocimiento.

La misin del Centro Nacional de Educacin Tecnolgica CeNET comprende el diseo, el desarrollo y la implementacin de proyectos innovadores en el rea de la educacin tecnolgica y de la educacin tcnico profesional, que vinculan la formacin con el mundo del trabajo. Acorde con esta misin, el CeNET tiene como propsitos los de: Constituirse en referente nacional del Sistema de Educacin Tecnolgica, sobre la base de la excelencia de sus prestaciones y de su gestin. Ser un mbito de capacitacin, adopcin, adaptacin y desarrollo de metodologa para la generacin de capacidades estratgicas en el campo de la Educacin Tecnolgica. Coordinar, mediante una red, un Sistema de Educacin Tecnolgica. Favorecer el desarrollo de las pequeas y medianas empresas, a travs del sistema educativo. Capacitar en el uso de tecnologas a docentes, jvenes, adultos, personas de la tercera edad, profesionales, tcnicos y estudiantes. Brindar asistencia tcnica. Articular recursos asociativos, integrando los actores sociales interesados en el desarrollo del Sistema de Educacin Tecnolgica. Desde el CeNET venimos trabajando, as, en distintas lneas de accin que convergen en el objetivo de reunir a profesores, a especialistas en Tecnologa y a representantes de la industria y de la empresa, en acciones compartidas que permitan que la Educacin Tecnolgica se desarrolle en la escuela de un modo sistemtico, enriquecedor, profundo... autnticamente formativo, tanto para los alumnos como para los docentes. Una de nuestras lneas de accin es la de disear, implementar y difundir trayectos de capacitacin y de actualizacin. En CeNET contamos con quince unidades de gestin de aprendizaje en las que se desarrollan cursos, talleres, pasantas, encuentros, destinados a cada educador y a cada miembro de la comunidad que desee integrarse en ellos: Autotrnica. Centro multimedial de recursos educativos. Comunicacin de seales y datos. Cultura tecnolgica. Diseo grfico industrial. Electrnica y sistemas de control. Fludica y controladores lgicos programables. Gestin de la calidad. Gestin de las organizaciones. Informtica. Invernadero computarizado. Laboratorio interactivo de idiomas. Procesos de produccin integrada. CIM. Proyecto tecnolgico. Simulacin por computadora.

INET / Fludica y controladores lgicos programables

INET / Fludica y controladores lgicos programables

Otra de nuestras lneas de trabajo asume la responsabilidad de generar y participar en redes que integren al Centro con organismos e instituciones educativos ocupados en la Educacin Tecnolgica, y con organismos, instituciones y empresas dedicados a la tecnologa en general. Entre estas redes, se encuentra la que conecta a CeNET con los Centros Regionales de Educacin Tecnolgica CeRET y con las Unidades de Cultura Tecnolgica instalados en todo el pas. Tambin nos ocupa la tarea de producir materiales didcticos. Desde CeNET hemos desarrollado cinco series de publicaciones: Educacin Tecnolgica, que abarca materiales (uni y multimedia) que buscan posibilitar al destinatario una definicin curricular del rea de la Tecnologa en el mbito escolar y que incluye marcos tericos generales, de referencia, acerca del rea en su conjunto y de sus contenidos, enfoques, procedimientos y estrategias didcticas ms generales. Desarrollo de contenidos, nuestra segunda serie de publicaciones, que nuclea fascculos de capacitacin que pueden permitir una profundizacin en los campos de problemas y de contenidos de las distintas reas del conocimiento tecnolgico (los quince mbitos que puntualizbamos y otros que se les vayan sumando) y que recopila, tambin, experiencias de capacitacin docente desarrolladas en cada una de estas reas. Educacin con tecnologas, que propicia el uso de las nuevas tecnologas de la informacin y de la comunicacin como recursos didcticos, en las clases de todas las reas y espacios curriculares. Educadores en tecnologa, que focaliza el anlisis y las propuestas en uno de los constituyentes del proceso didctico: el profesional que ensea Tecnologa, ahondando en los rasgos de formacin, de sus prcticas, de sus procesos de capacitacin, de su vinculacin con los lineamientos curriculares y con las polticas educativas, de interactividad con sus alumnos, y con sus propios saberes y modos de hacer. Documentos de la escuela tcnica, que difunde los marcos normativos y curriculares que desde el CONET Consejo Nacional de Educacin Tcnica delinearon la educacin tcnica de nuestro pas. A partir de estas lneas de trabajo, el CeNET intenta constituirse en un mbito en el que las escuelas, los docentes, los representantes de los sistemas tcnico y cientfico, y las empresas puedan desarrollar proyectos innovadores que redunden en mejoras para la enseanza y el aprendizaje de la Tecnologa.

Buenos Aires, febrero de 2004

De qu se ocupa Microprocesadores y microcontroladores ?


A mediados del siglo XX, tras el desarrollo de la bomba atmica y las centrales nucleares, comienza a hablarse de la Era atmica. Algo ms adelante, cuando el hombre pisa por primera vez la Luna, se habla de la Era espacial. Sin ninguna duda, nuestra poca est siendo la Era de las comunicaciones debido, fundamentalmente, al desarrollo de la informtica y las telecomunicaciones, sustentadas por el enorme avance de las tecnologas electrnicas, microelectrnicas y optoelectrnicas.

Para confirmarlo, slo meditemos sobre el avance de la telefona celular y satelital, sobre el enorme potencial de informacin que nos pone al alcance de la mano Internet, as como sobre la posibilidad de comunicarnos con otros pases por escrito o videoconferencia, dependiendo cada vez ms del omnipotente computador personal, que incide ms y ms en nuestra sociedad (automatizacin de plantas industriales, control de trfico por tierra, mar y aire, gestin de empresas y bancos, diseo de ingeniera, etc.). La electrnica ha sido y es la causante y soporte de esta verdadera revolucin de la sociedad. Y, dentro del campo de la electrnica, el microprocesador o su versin customizada, el microcontrolador es, con frecuencia, el gran protagonista. El desarrollo de los microprocesadores, un invento introducido recientemente en 1971 en el mbito comercial, ha revolucionado las reas ms importantes de la electrnica y este avance no le resulta ajeno al individuo medio que trabaja asiduamente con su computador personal (Pentium, Power PC, etc.), an cuando la mayor parte de los microprocesadores no reside en los computadores, sino oculta en cualquier dispositivo electrnico que el usuario utiliza sin ser consciente de l. En 1971, la compaa de semiconductores Intel lanza al mercado el primer microprocesador, lo que impone un cambio decisivo en las tcnicas de diseo de los equipos de instrumentacin y control. Este circuito integrado contiene todos los componentes de la unidad central de procesos (CPU) de una computadora dentro de un solo dispositivo. Los fabricantes, conscientes de la importancia de este mercado, crean una amplia gama de estos circuitos integrados, constituyendo familias de microprocesadores. En el ao 1976, gracias al aumento de la densidad de integracin de componentes en un circuito integrado, sale a la luz el primer ordenador en un chip: en l se integran, junto con el microprocesador, otros subsistemas que anteriormente formaban unidades independientes (memoria, entradas/salidas, etc.). A este nuevo integrado se lo denomina microcomputadora monopastilla. Cuando los sistemas basados en microprocesadores se especializan en aplicaciones industriales, aparece la versin industrial de la microcomputadora monopastilla, el

Microprocesador Componente electrnico que contiene, en una nica pastilla, el procesador (CPU Central Process Unit o unidad central de proceso) de una mquina programable de tratamiento de informacin.

INET / Fludica y controladores lgicos programables

10

INET / Fludica y controladores lgicos programables

microcontrolador, que produce un obvio beneficio en aplicaciones pequeas. Su caracterstica ms sobresaliente es que se trata de un sistema integrado.

El microprocesador es un componente electrnico complejo que incorpora las funciones tpicas de todo un computador. La clave del xito de los microprocesadores como componente electrnico reside en que, modificando el programa almacenado en memoria, puede adaptarse a numerosas y diferentes aplicaciones.

As, en la actualidad, debido a su creciente potencia de clculo y variedad de funciones integradas, se ha convertido en el estndar para la implementacin de soluciones, tanto de clculo como de control. De este modo, los microprocesadores no slo se utilizan para construir potentes computadoras quizs su aplicacin ms difundida sino tambin para la realizacin de tareas de control en sistemas de aplicacin especfica (por ejemplo, el control de un horno a microondas, un telfono celular o unos frenos ABS para el automvil), sustituyendo la circuitera convencional. Las reas de aplicacin de este tipo de productos tambin exceden el ambiente de los procesos continuos y se expanden en una gran diversidad de rubros: cerveceras, curtiembres, edificios inteligentes, bancos de prueba o ensayo, estaciones de carga, frigorficos, plantas automotrices, industrias alimenticias, industrias madereras, industrias metalrgicas, industrias petroleras, laboratorios, medicin de energa, plantas petroqumicas, plantas aceiteras, plantas embotelladoras, plantas generadoras de energa, plantas papeleras, plantas pesqueras, plantas potabilizadoras, silos, subestaciones elctricas y centros de comando, supermercados, sistemas de transporte y muchas ms. En nuestro curso estudiaremos al microprocesador desde dos puntos de vista: Como componente electrnico se trata de un componente especial, ya que tiene un aspecto hardware, y otro software o de programacin. Como ladrillo bsico en la construccin de sistemas de procesamiento de datos microprocesador, mP , P o de control microcontrolador, mC, C que sustituye a sistemas cableados. En las aplicaciones sencillas, resultan preferibles las soluciones no programables que no requieren desarrollo de software (Escribir software consume mucho tiempo, por lo que resulta ms costoso; por esto, en aplicaciones sencillas y/o de poca tirada, a menudo es ms razonable efectuar tareas en hardware.) Sin embargo, conforme aumenta la complejidad del sistema, aumentan las ventajas del uso de sistemas programables. Una de las principales ventajas de los sistemas programables es su flexibilidad, la que permite actualizar el funcionamiento de un sistema tan slo mediante el cambio del programa, sin tener que volver a disear el hardware. Esta flexibilidad es muy importante, al permitir que los productos se actualicen con facilidad y economa. Un C tpico tiene instrucciones para: transferir informacin entre registros y memoria, realizar operaciones aritmticas y lgicas,

Programa Es una lista de instrucciones al procesador. Todos los P y C tienen un conjunto de instrucciones que pueden ejecutar. Cada tipo de procesador y controlador tiene su propio conjunto de instrucciones y, por lo general, los programas escritos para una mquina no funcionan en otra.

11

efectuar comparaciones y pruebas sobre el contenido de sus registros de memoria, controlar la secuencia de ejecucin de programas, controlar entradas y salidas. La gran oferta de microcontroladores y las muy similares prestaciones que todos ellos ofrecen, han desviado el foco de atencin de los potenciales usuarios hacia cuestiones que poco tienen que ver con la funcionalidad misma del producto. Se asume que cualquier microcontrolador que est disponible en el mercado es bueno y relativamente fcil de usar. En el pasado, un producto deba demostrar que era capaz de hacer determinada tarea; hoy esto se da por descontado y, por lo tanto, lo que pesa en la decisin de utilizar un determinado producto es su precio, el apoyo y soporte local inmediato, los antecedentes de aplicaciones instaladas, la capacidad de conectarse con el equipamiento de campo que se utiliza en el pas donde se comercializa, etc. Podemos decir que los microcontroladores tienden, con el tiempo, a ser todos iguales. Van incorporando prestaciones similares modeladas por un set de instrucciones cada vez ms parecido, que afecta a casi todos los fabricantes de microprocesadores y microcontroladores. Otra ventaja interesante que ofrece la utilizacin de microcontroladores sobre todo para quien desarrolla aplicaciones basadas en ellos es que permite obtener mayores ganancias como resultado del valor que agrega al hacer la tarea de integracin o de armado (En otro mbito, todos sabemos que es mucho ms barato comprar una PC en partes sueltas y luego armarla, que ir a comprarla a un negocio en donde nos la entregan funcionando, con todo instalado y probado. Lo mismo pasa con los mC.). Sin duda, para un usuario final con muchos recursos puede ser ms interesante evitarse problemas y comprar un producto llave en mano; pero, para el integrador o el usuario que recin comienza, un alto costo inicial puede ser una barrera para decidirse a comenzar. En la figura vemos equipos de control industrial; en cada uno de ellos existe un microprocesador o microcontrolador para llevar a cabo las tareas de supervisin y control, o para comunicarse entre ellos y dar informacin a un computador central:

INET / Fludica y controladores lgicos programables

12

INET / Fludica y controladores lgicos programables

Se trata de sistemas de control clsicos donde se pone de manifiesto el empleo intensivo de los microprocesadores y microcontroladores en la industria.

El problema tecnolgico Este problema nos acompaar a lo largo del cursado de Microprocesadores y microcontroladores:

Nos han pedido realizar el estudio de un dispositivo que realice un conformado de un perfil plegndolo; sus dimensiones son 100 mm x 300 mm x 3 mm. Algunas de las condiciones planteadas son que el ciclo debe ser automtico, de fcil manejo, seguro y confiable; y, adems, disponemos de los siguientes datos: el material de la pieza es aluminio, la fuerza necesaria para realizar el plegado es de, aproximadamente, 1000 N.

Perfil sin plegar y plegado. Fases o etapas de trabajo de nuestra mquina o sistema, para plegar el perfil.

Naturalmente, existen diferentes soluciones para esta situacin. La eleccin del sistema adecuado, en la prctica, no siempre resulta fcil y bien definida. A esto debemos agregarle que, en funcin de la propia formacin, el electricista propondr una solucin elctrica; el especialista en hidrulica, una solucin hidrulica; y el especialista en neumtica pretender una solucin neumtica. La solucin ptima de un problema exige el conocimiento de todas las alternativas que se ofrecen. Para esto, le proponemos que...

13

Actividad Analice las posibles soluciones para los elementos de trabajo y de mando ms usuales, los criterios de seleccin, as como sus ventajas y desventajas. Para esto, refirase al sistema completo, empezando por las seales de entrada (emisores de seal), pasando por la parte de mando (procesadores), llegando hasta los rganos de maniobra y actuadores. Adems, tome en cuenta los siguientes factores: Medios de control preferidos. Equipos ya instalados. Conocimientos tcnicos disponibles. Sistemas ya instalados: neumtica, hidrulica, electricidad, electrnica. Como criterios de seleccin: Capacidad de regulacin. Seguridad. Influencias ambientales. Costo. Facilidad de manejo, reprogramabilidad, etc. Y, como criterios para la eleccin del sistema: Fiabilidad de los elementos. Facilidad de conmutacin de los elementos (tiempo de conmutacin). Velocidad de transmisin de la seal. Distancias mximas. Dimensiones necesarias. Tratamiento principal de la seal. Aqu tambin puede analizar cmo se comporta el sistema frente a las influencias ambientales, qu formacin requiere el personal destinado al servicio y mantenimiento, o bien si ya se dispone de este personal. Nuestra propuesta es que intente llegar a alguna conclusin usted mismo an cuando no le hemos presentado an informacin conceptual, ya sea a travs de bsquedas bibliogrficas o a travs de Internet (si dispone del recurso), de catlogos, del anlisis de dispositivos con los que se encuentra en su vida cotidiana, de la integracin de conocimientos previos, solicitando informacin en empresas o industrias que trabajen con alguna de estas tecnologas.

A lo largo de Microprocesadores y microcontroladores iremos sugirindole que compare sus respuestas iniciales con la informacin que le acercaremos.

Las primeras decisiones Viendo las caractersticas del problema planteado surgen, por lo menos, cuatro alternativas de solucin con sus ventajas y desventajas:

INET / Fludica y controladores lgicos programables

14

INET / Fludica y controladores lgicos programables

1. 2. 3. 4.

Neumtica bsica Electroneumtica PLC controladores lgicos programables Microcontroladores

Si algunos conceptos planteados en esta sntesis inicial no le resultan del todo claros, no se preocupe: iremos explicndolos pormenorizadamente a lo largo del texto.

La alternativa 1, neumtica bsica, presenta una solucin mecnicamente robusta, con un costo relativamente alto por la cantidad de vlvulas neumticas para el control del sistema y sensado de posiciones. Respecto al mantenimiento, las vlvulas y la preparacin del aire comprimido lo requieren. Cada cambio en el sistema representa una modificacin mecnica de las conexiones. Solucin neumtica El ciclo es automtico, luego de presionar el pulsador de marcha:

Vemoslo presurizado:

En el prximo esquema mostramos el mismo circuito con el agregado de una parada de emergencia. Presionando sobre ella se despresuriza el sistema y queda detenida la mquina en forma instantnea:

15

La alternativa 2, electroneumtica, presenta una solucin bsicamente elctrica, reemplazando a las vlvulas de lgica por rel. Pero, tambin en esta solucin, el cambio en el sistema representa una modificacin mecnica de las conexiones cuyo costo de desarrollo es elevado.

Solucin electroneumtica El ciclo es automtico luego de presionar el pulsador de marcha que, en este caso, es elctrico. Circuito neumtico y elctrico:

INET / Fludica y controladores lgicos programables

16

INET / Fludica y controladores lgicos programables

En este circuito se utilizaron dos rels K1 y K2 que sirven de memoria y de reset al sistema. S0 es el pulsador de marcha y S1, S2, S3, y S4 son los fines de carrera elctricos de los cilindros.

La alternativa 3, PLC controladores lgicos programables, presenta una solucin muy integrada, reemplazando a las vlvulas de lgica o los rel por un dispositivo llamado PLC que permite la actualizacin del sistema, el mejoramiento de las secuencias y las modificaciones, sin necesidad de cambiar circuitalmente la mquina o sistema. Por otra parte, la necesidad del mantenimiento en cuanto a desgaste y posibles falsos contactos es mnima, puesto que es un dispositivo electrnico cuyo costo es competitivo a partir de la utilizacin de ms de 3 o 4 vlvulas o rels en una automatizacin (Dicho PLC representa, en su interior, un sistema con una cantidad importante de rels, memorias, timers, contadores, etc.). Solucin con PLC Un PLC no es ms que un dispositivo electrnico con capacidad de procesar informacin que se ingres en l en forma de un programa, y que puede manejar un nmero limitado de entradas y salidas la parte visible, ya que en su estructura podemos diferenciar claramente borneras y conectores de comunicacin, separados de acuerdo a sus funciones.

En el caso de un PLC, ste posee entradas para conectar directamente los finales de carrera y el pulsador de marcha o parada a dichos bornes, de modo que su conexin es simple, vinculndola a una fuente llamada de campo o independiente de la de su propia CPU. No es necesario conectar contactos NA y NC ya que se pueden leer invertidos en el PLC. As, es habitual conectar todos los mdulos normal abiertos. Veamos un esquema de su conexin elctrica de entradas:

17

Ahora, consideremos un esquema de su conexin elctrica de salidas (En esta oportunidad, utilizamos salidas rel; pero, el PLC de este ejemplo posee tambin salidas transistorizadas que podan haberse utilizado sin inconvenientes. Las salidas pueden ser utilizadas con la fuente de campo del PLC o utilizar otra fuente como se indica en el esquema, incluso de otra tensin o caracterstica como es la de corriente alterna):

Al igual que en el microcontrolador, para vincular las entradas y salidas, y lograr que stas respondan al problema sealado, el PLC debe ser programado en un lenguaje que interprete su sistema operativo (generalmente, en lista de instrucciones awl o diagrama de contactos ladder. Tambin es posible en diagrama de funciones esquemas de compuertas lgicas) Veamos cmo es el programa del PLC en lista de instrucciones: LD AND AND ANDN =SET =SET =SET LD AND =SET =SET =RST LD AND =RST =RST =RST =RST PE IN IN IN MEM OUT MEM MEM MEM IN OUT MEM MEM MEM IN OUT OUT MEM MEM 02 09 12 01 05 01 02 02 04 06 03 02 03 06 05 06 01 03

Este programa fue desarrollado con la tcnica de cascada de flag o de memorias, y est pensado para todas las entradas con mdulos normal abiertos todos los fines de carrera son iguales y normales abiertos, si bien como los cilindros estn en reposo en posicin retrada se encuentran presionados S1 y S3.

INET / Fludica y controladores lgicos programables

18

INET / Fludica y controladores lgicos programables

Lgicamente, el circuito neumtico es equivalente a la solucin electroneumtica:

La alternativa 4, microcontroladores, presenta una solucin completamente integrada electrnicamente, reemplazando a las vlvulas de lgica o los rel por un dispositivo llamado microcontrolador que no es ni ms ni menos que lo que tienen los PLC aunque algunos de ellos poseen microprocesadores ms potentes, de acuerdo a la aplicacin a comandar, que permite la actualizacin del sistema, el mejoramiento de las secuencias y todas las modificaciones, sin necesidad de cambiar circuitalmente la mquina o sistema. La necesidad del mantenimiento en cuanto a desgaste y posibles falsos contactos es mnima, ya que es un dispositivo electrnico de costo altamente competitivo: representa ntegramente la solucin a mltiples situaciones, teniendo como contrapartida la necesidad de un especialista para su programacin y vinculacin con sistemas de entrada y salida (Requiere, tambin, la realizacin de una placa de circuito impreso para hacer de contenedor de los elementos por los cuales llevar las seales).

Solucin con microcontrolador El ciclo es automtico, luego de presionar el pulsador de marcha que es un elemento elctrico S0. Circuito electrnico:

19

La entrada Stop, de ser programada, como est conectada a una interrupcin, permite detener inmediatamente al sistema y esperar a que se restablezcan las condiciones para continuar. S1, S2, S3, y S4 son fines de carrera elctricos de los cilindros. Y1 e Y2 son las bobinas de las electrovlvulas que comandan los cilindros. Circuito neumtico:

Plantear una alternativa con componentes de hidrulica no parece ser una opcin vlida, por las fuerzas necesarias a desarrollar, ya que son de un bajo rango, fciles de obtener con elementos de neumtica. Asimismo, la implementacin de soluciones con hidrulica representa un costo mayor. Balanceando las ventajas y desventajas, y pensando que el costo final representara el indicador ms decisivo a la hora de volcarnos por una alternativa, es que consideramos la mejor solucin desde el punto de vista econmico a la automatizacin con microcontroladores, cuyos costos principales son: vlvulas finales de mando, cilindros de doble efecto, reguladores de caudal, pulsadores de marcha, parada, FRL (hasta ac son los mismos para cualquiera de las soluciones), diferencindose en aspectos como: placa de circuito impreso, componentes electrnicos frente a una gran cantidad de vlvulas o rels de costos elevados o frente a un PLC.

INET / Fludica y controladores lgicos programables

21

FICHA 1 Introduccin a los sistemas basados en microprocesador

INET / Fludica y controladores lgicos programables

23

Referencia histrica Decamos que en 1971, la compaa de semiconductores Intel lanza al mercado el primer microprocesador. Veamos algunos datos que nos muestran cmo va desplegndose el proceso tecnolgico que permite llegar a estos complejos sistemas electrnicos:

Lgica cableada Corresponde a circuitos diseados exclusivamente para realizar una aplicacin concreta.

Lgica programada Corresponde a un concepto ms amplio que da lugar a las mquinas universales programadas. Se trata de mquinas potentes y flexibles capaces de realizar la mayora de las funciones bsicas necesarias para cualquier aplicacin, que trabajan de forma secuencial, ejecutando progresivamente las operaciones necesarias.

3000 A.C. baco, empleado para realizar clculos aritmticos. Edad Media. Autmatas de reloj: mquinas con un programa interior fijo. Siglo XVII. Blaise Pascal, matemtico francs, construye la primera mquina mecnica capaz de sumar y restar. 1674. G. H. von Leibniz, matemtico alemn, incorpora a la mquina de Pascal la posibilidad de multiplicar y dividir. 1850. D. D. Parmalee automatiza la mquina Pascal-Leibniz. Aparecen las primeras cajas registradoras. Finales del siglo XIX. Charles Babbage, matemtico ingls, idea una mquina que es capaz de realizar cualquier operacin. La mquina se instruye desde el exterior por medio de un sistema de tarjetas perforadas. 1925. V. Bush, ingeniero norteamericano, construye la primera mquina capaz de resolver ecuaciones diferenciales. 1940. Von Neumann acaba configurando la arquitectura bsica de los ordenadores modernos, basada en los conceptos de programa almacenado y de ruptura de la secuencia de programa mediante la toma de decisiones. Su diagrama de bloques:

A partir de la concepcin de mquina universal de Von Neumann, los ordenadores se desarrollan paralelamente a la tecnologa. Aparecen cinco generaciones. Primera generacin. Es la generacin de las vlvulas de vaco. Los ordenadores son muy voluminosos, con alto consumo y coste muy elevado. Algunos ordenadores famosos de esta generacin son: ENIAC Electronic Numerical Integrator and Computer, construido por la Universidad de Pennsylvania durante la II Guerra Mundial, estructurado por John Mauchly y John Eckert, estadounidenses, y puesta en funcionamiento en 1945, marca el inicio de nuestra era computacional. Se trata de una mquina programable y universal a la que se poda llamar electrnica; ocupa 160 metros cuadrados, pesa 30 toneladas, con 17.468 vlvulas de vaco, 70.000 resistencias, 10.000 condensadores y un consumo de, aproximadamente, 200 KW. Deja de funcionar en 1955 y es desmontada en 1957.

INET / Fludica y controladores lgicos programables

24

INET / Fludica y controladores lgicos programables

Fotografa del ENIAC. Fuente: http://ftp.arl.mil/

UNIVAC Universal Automatic Computer; construido en 1951, es el primer computador digital con fines comerciales. IBM604 e IBM650 aparecen en 1953 y se hacen muy populares en las dcadas de los 50 y 60. Segunda generacin. Aparece con el transistor bipolar. Se consigue una gran disminucin de volumen, mayor fiabilidad y menor consumo. Los ordenadores se empiezan a hacer populares en las grandes empresas. Tercera generacin. Aparecen los primeros circuitos integrados, se agudizan an ms las mejoras de la generacin anterior. Paralelamente, empiezan a desarrollarse los lenguajes de alto nivel como el Fortran y el Cobol, as como los primeros sistemas operativos. Cuarta generacin. Aparecen las tcnicas de alta escala de integracin LSI, propiciando, en 1971, la aparicin del primer microprocesador 4004 de Intel. Posteriormente, en 1972, el 8008 de Intel y, a partir de ste, todos los fabricantes de circuitos integrados empiezan a lanzar sus microprocesadores: 6800 y 6802 de Motorola, 6502 de Rockwell, Z80 de Zilog, 8088 de Intel, etc. El ordenador empieza a hacerse muy popular. Aparecen tambin microprocesadores de 16 bits en el bus de datos: 8086, 80286 de Intel, 68000, 68010 de Motorola, Z8000 de Zilog, etc. Quinta generacin. Aumenta la densidad de integracin al aparecer la tecnologa VLSI1 de muy alta escala de integracin. En 1976, gracias al aumento de la densidad de integracin de componentes en un circuito integrado, sale a la luz el primer ordenador en un chip; como decamos, a este nuevo integrado se le denomin microcomputadora monopastilla. Cuando los sistemas basados en microprocesadores se especializan en aplicaciones industriales, aparece la versin industrial de la microcomputadora monopastilla, el microcontrolador; estos dispositivos producen un obvio beneficio en aplicaciones pequeas; su caracterstica ms sobresaliente es que son sistemas integrados, utilizados en la actualidad (en automviles: inyeccin, suspensin; control de procesos; control de interruptores de potencia; etc.). En este marco, resulta interesante reconstruir la historia de cambios tecnolgicos desarrollada por Intel2 una compaa del valle del silicio, especializada en la fabricacin de memorias. Veamos...
1 VRSI Very large-scale integration. Muy alta escala de integracin; ms de 10000 transistores por chip. 2

http://www.intel.es ; http://www.intel.com

25

La casa Data Point saca a concurso un driver para la CRT3 hasta aqu, todo se hacia con transistores. A este concurso slo se presentan las firmas Texas Instruments e Intel. Al cabo del tiempo, Texas se retira e Intel termina su proyecto; pero no gana, porque el dispositivo es considerado poco eficiente como controlador: resulta 10 veces ms lento de lo requerido y Datapoint no lo compra. Por la poca (1969), la compaa japonesa Busicom, fabricante de calculadoras, encarga a Intel la realizacin del circuito de control de un nuevo modelo de calculadora de sobremesa. El primer diseo resulta tan complejo que Ted Hoff, ingeniero de Intel, redisea el sistema basndose en la estructura de los computadores: existira un chip que integrara una CPU sencilla, que ejecutara un programa de control que se guardara en una memoria ROM; empleara una RAM para almacenamiento de datos y un registro como puerto de entrada/salida. Por lo tanto, el nuevo diseo resulta un conjunto de cuatro chips que implementaban la estructura de un computador de modo que, cambiando el programa, poda dedicarse a realizar tareas muy diferentes. Desde que se contrata a Intel hasta que el diseo resulta operativo pasan muchos meses, durante los cuales los precios caen y el valor del contrato inicial resulta desorbitado. Busicom pide, entonces, a Intel una rebaja en el precio. Intel acepta, a cambio de quedarse con los derechos del conjunto de circuitos integrados construido la familia 4000 para poder comercializarlos por su cuenta. Finalmente, Intel introduce en sus catlogos el chip programable desarrollado el 4004 en noviembre de 1971, bautizndolo como microprocesador y, as, comienza a comercializarlo. El 4004 puede direccionar slo 4096 (4k) localidades de memoria de 4 bits, reconocer 45 instrucciones y ejecutar una instruccin en 20 seg en promedio. Intel, entonces, lo saca al mercado para el uso de memorias. Al registrarse una demanda considerable, el equipo de diseo se pone a trabajar para desarrollarlo, consiguiendo el 8080 y el 8008, que son de 8 bits. Con el microprocesador surgen las primeras computadoras de tipo personal y la introduccin del procesador 8080, un dispositivo 10 veces ms rpido que el 8008, con capacidad de direccionar 64kB de memoria. Dos ingenieros del equipo de desarrollo crean la empresa Zilog, que comienza a competir con Intel, y fabrican el Z-80. Intel saca, entonces, el 8085 y, despus, el 8086. Ms tarde salen algunas versiones posteriores como el 8088 que es de 16 bits pero con buses de 8. MITS introduce, en 1975, un kit que, en la actualidad, es considerado como la primera computadora personal: el modelo Altair. Esta pequea computadora incluye una arquitectura abierta (basada en ranuras o slots) que permite conectar varios aditamentos y perifricos de otras marcas. Hacia 1980, el mundo de las computadoras personales est dominado, bsicamente, por dos tipos de sistemas: El Apple II, con un gran nmero de usuarios y una importante base de software, que crece rpidamente. Un sistema ms sencillo que gira en torno al original MITS Altair, que se basa en la filosofa de la compatibilidad, apoyado en slots de expansin y en el empleo del sistema operativo CP/M4. Son mquinas construidas por varias compaas
3 4

Tubos de rayos catdicos o terminal de video utilizado por televisores y computadoras. Sistema operativo de gran utilizacin hasta que aparece el DOS desarrollado por Microsoft.

INET / Fludica y controladores lgicos programables

26

INET / Fludica y controladores lgicos programables

y se venden con diversos nombres aunque, en esencia, utilizan el mismo software y el mismo hardware interconectable. En 1981 se presenta la IBM PC IBM Personal Computer, introduciendo los lenguajes y sistemas operativos. La empresa llega a un acuerdo con Microsoft por entonces una pequea compaa para incluir su sistema operativo DOS en sus modelos. La primera IBM PC incluye un microprocesador Intel 8088, con 128kB de RAM (expandibles 512kB), una unidad de disco flexible de 51/4 pulgadas y 360kB de capacidad.

Luego, aparece el estndar que toma el nombre de IBM PC-XT Personal Computer. Extended Technology; tambin aprovecha los microprocesadores de 16 bits y cumple con la principal virtud de la plataforma: su arquitectura abierta. La plataforma PC no es la nica; pero s es la predominante, por su amplia gama de aplicaciones, a diferencia de otros formatos como Macintosh, Sun, Amiga, Silicon Graphics, etc. La industria de microprocesadores se sigue desarrollando y se crea el 80186 que ofrece periferia integrada. Ms tarde, aparece el 80286, adoptado por IBM; se trata de un 8086 pero con mayor capacidad de direccionamiento de memoria, que implementa el modo protegido. Su evolucin es el 80386, el primer micro Intel de 32 bits que puede direccionar hasta 4 GB. Cuenta con modo protegido, modo real y un nuevo modo que es el virtual que trabaja en modo real, pero en realidad trabaja en protegido; de aqu surgen el 80386SX y el 80486 con sus variantes: 486 SX: Como 386 sin coprocesador matemtico, con cach interna y mejor arquitectura. 486 DX: Genrico pero a 33 y 50 MHz. 486 DX2: Interno a doble frecuencia: 50,66 MHz. 486 DX4: Interno a cudruple frecuencia: 75,100 MHz. La evolucin hasta el momento actual: Equipo XT. Ao 1981, con procesador 8086 u 8088 de Intel, mquina pionera de los PC, usaba 128K, 256 o 512 Kilobytes de memoria Ram. Se le instalaba el sistema operativo DOS, disco duro de 5 o 10 megabytes de capacidad. Su gabinete era horizontal. El monitor era monocromtico con fondo negro y letras de color verde. Su velocidad de procesamiento estaba entre los 4 y 8 MHz. Equipo AT 80286. Su memoria Ram poda alcanzar los 16 MB, adicionndole una placa de expansin especial. El disco duro normal para l era de 30 o 40MB. Las unidades de diskettes de 1.2 y 1.44 MB de capacidad. Sistema operativo DOS 2.1. Gabinete horizontal. Los monitores eran a color con tecnologa EGA (baja resolucin, comparados con los actuales VGA). Su velocidad promediaba los 25MHz.

27

Equipos AT 80386. Usaban en promedio 8 y 16 MB de ram, integrando mdulos removibles de memoria, tipo SIMM de 32 pines. El disco duro promediaba los 512 MB, DOS 4.0. Monitores sper VGA. mdem interno de 14.400 baudios por segundo. Velocidad promedio: 40MHz. Aparece la unidad CD ROM de simple velocidad. Equipos AT 80486. Ram promedio de 8 y 16 MB. Discos duros de 1 gigabyte promedio. DOS 6.22. Mdem de 28.800 bps. Monitores con resolucin .28. Unidad de CD ROM de 2, 4 y 8 velocidades. Equipos Pentium de 75MZ. Ram promedio de 16 MB expandible a 128 MB, discos duros de 3 gigas o mayor, mdem de 33.600 bps, Windows 95, coprocesador matemtico y memoria cach interna. Unidad de CD ROM de 16 velocidades. Otros procesadores: el 586 y 686 de AMD. Pentium MMX. Tecnologa con prestaciones para multimedia, con velocidades de 200, 233 y 266 MHz. Discos duros de 4 y 6 gigas. RAM promedio de 16 y 32 MB expandible. Unidad de CD ROM de 24 y 36 velocidades. Sistema Operativo Windows 95 A y Windows 95 B. Pentium Celeron. Con velocidades desde 300 MHz a 1.3 GHz, cach de 128 KB, discos duros mayores de 6 gigas como promedio, monitores no entrelazados, RAM promedio de 32 MB expandible, motherboard multifuncional, tanto en equipos genricos como de marca, Incluye, normalmente, sonido, video y mdem fax incorporado en la placa madre. La velocidad de los mdem promedio es de 56.600 bps. Las unidades de CD ROM alcanzan velocidades de 40X. De mejora Windows 95 creando Windows 98. Las generaciones de Pentium II, Pentium III y Pentium IV. Bsicamente, utilizan los mismos elementos de base: motherboard multifuncional, ram promedio de 128 MB, discos de 15, 30, 40 o ms gigas, multimedia de 52x-56x, mdem de 56.600. Sus velocidades varan desde los 350MHz a 550MHz los pentium II, de 500, 1 GHz los pentium III y 1.4 a 2GHz los pentium IV. Sistemas Operativos: Windows 98, Windows 2000, Windows NT, Windows Me y Windows XP . Otros procesadores: los K6-2 y Athlon de AMD.

Pentium5 P5: Trabaja a 5V con frecuencias de 60 y 66 MHz. Pentium P54: Trabaja con 3,34V y con frecuencias de 75 y 90 MHz. Pentium P54C/P54C5: Frecuencias de 100,120,135,150,166 MHz. Pentium P55C (MMX): Frecuencias de 166,200,233. Pentium PRO: Frecuencias de 180 y 200, con mejoras en arquitectura y con la cach integrada, utiliza un zcalo Socket 8.

El Pentium es un micro de 32 bits, pero con bus de datos de 64.

INET / Fludica y controladores lgicos programables

28

INET / Fludica y controladores lgicos programables

Pentium II: Fecuencias de 233, 266, 300, que es un PPRO sin cach con MMX y cach de segundo nivel; tiene zcalo slot 1 y SEC.

Utiliza el slot 2, que es una variante del slot 1, pero incompatible con aquel. Est optimizado para aplicaciones de 32 bits. Posee 32 KBytes de cach L1 (de primer nivel) repartidos en 16KB. para datos y los otros 16 para instrucciones. La cach de segundo nivel puede ser de 512 KB o 1 MB. Para comunicarse con el bus utiliza una velocidad de 100 MHz. Incorpora 7,5 millones de transistores. Puede cachear hasta 4 GB de memoria RAM.

Pentium III: Se le han aadido las llamadas SSE Streaming SIMD Extensions, que son 70 nuevas instrucciones orientadas hacia tareas multimedia, especialmente en 3D. Estas extensiones son el equivalente a las 3D Now que lleva implementando AMD desde hace tiempo en el K6-2, K6-III y Athlon y que tambin han incorporado otros fabricantes como IDT en sus Winchip2 y 3.

Por supuesto, dicho juego de instrucciones a pesar de realizar operaciones similares en ambos procesadores es totalmente incompatible... Otra de las novedades introducidas y tambin la ms polmica es la incorporacin de un nmero de serie que permite identificar unvocamente a cada una de las unidades, con lo que se obtiene una especie de carn de identidad, nico para cada PC. Este ID se puede utilizar para realizar transacciones ms seguras a travs de Internet y para facilitar la vida a los administradores de redes; pero, tambin ha sido duramente criticado por algunos grupos de presin como una invasin de la privacidad, con lo que Intel se ha visto obligada a ofrecer una utilidad que permite desactivar dicha funcin: Est optimizado para aplicaciones de 32 bits. Se comercializa en versiones que van desde los 450 hasta los 600 MHz. Posee 32 Kbytes de cach L1 (de primer nivel) repartidos en 16Kb. para datos y los otros 16 para instrucciones. La cach L2 (segundo nivel) es de 512 Kb. y trabaja a la mitad de la frecuencia del procesador. La velocidad a la que se comunica con el bus (la placa base) es de 100 MHz. Incorpora 9,5 millones de transistores. Pueden cachear hasta 4 GB. Los modelos actuales todava estn fabricados con tecnologa de 0,25 micras.

29

Pentium IV: Ya hay tres nuevos procesadores basados en la arquitectura Pentium 4: 2.53, 2.40 y 2.26 GHz. Estos nuevos chips incluyen un bus de sistema a 533 MHz a diferencia de los anteriores Pentium 4 que interactuaban con un bus de velocidad menor: a 400 MHz. La compaa anunci, asimismo, la aparicin del chipset 850E, diseado para operar a la velocidad del nuevo bus de sistema. Itanium: La arquitectura EPIC Explicity Parallel Instruction Computing paraleliza todas aquellas rdenes que se ejecutan en un ordenador. Si en los procesadores superescalares, como son el Pentium III o el Pentium 4, se ejecutan dos instrucciones por ciclo de reloj, Itanium es capaz de ejecutar hasta seis instrucciones por ciclo. Esto significa que es tres veces ms rpido (En Itanium tenemos, por ejemplo, seis unidades de suma, dos de coma flotante y cuatro de enteros). Principales fabricantes: Gama Pentium: Classic, MMX, Pro, PII, Celeron, Xeon, PIII, P 4
Registros internos Son bloques de biestables que permiten el almacenamiento de los datos bsicos con los cuales va a trabajar la CPU durante la ejecucin de cada instruccin.

K5, K6, K6-2, K6-III, Athlon 6x86, 6x86MX, MII, Media GX Winchip C6, Winchip2, Winchip3

Sistema mnimo microprocesador


Unidad de control Su funcin es enviar, consecutivamente, instrucciones del programa desde la memoria hasta la unidad de proceso.

El sistema mnimo est basado en la estructura de Von Neumann. Sus bloques bsicos son: 1. Unidad central de proceso CPU, Central Process Unit , formada por los bloques: 1.1. Registros internos. 1.2. Unidad de control. 1.3. Unidad de proceso u operativa. 2. Unidad de memoria, donde residen las instrucciones del programa y sus datos. 3. Unidad de entrada/salida, encargada de recibir y entregar informacin al exterior.

Unidad de proceso u operativa Las instrucciones son decodificadas y ejecutadas en esta unidad.

Unidad de memoria En ella se almacena el programa a ejecutar, en forma de secuencia de instrucciones.

Unidad de entrada/salida Realiza la comunicacin con el mundo exterior, es decir, con el ser humano. Recibe y representa los datos y resultados de forma asequible para el hombre.

INET / Fludica y controladores lgicos programables

30

INET / Fludica y controladores lgicos programables

Los tres mdulos estn conectados entre s por medio de los buses de comunicacin.
Bus de comunicacin

Nos referiremos a tres clases de buses de comunicacin: bus de direcciones, bus de datos, bus de control. Bus de direcciones: A0-AM-1. Es el empleado por la CPU para seleccionar la direccin de memoria o el dispositivo de E/S con el cual va a intercambiar informacin. Es, por tanto, unidireccional. El tamao nmero de conductores que lo constituyen determina la capacidad de direccionamiento de la CPU, que es el mximo nmero de posiciones de memoria y dispositivos E/S a los que la CPU puede acceder. Para m lneas la capacidad de direccionamiento ser: 2m. Ejemplos: - 68HC08, Z80, 8051: m=16 Capacidad de dir.= 216= 65536 posiciones (64 k Byte) - 80286: m=20 Capacidad de dir.= 220 = 1.048.576 posiciones (1 Mega Byte) Bus de datos: D0 - DN-1. El bus de datos es el conjunto de conductores a travs del cual el microprocesador intercambia informacin con la unidad de memoria o E/S seleccionada mediante el bus de direcciones. Caractersticas: - Bidireccional: La informacin puede viajar en los dos sentidos. - Nmero de lneas (N): representa la cantidad de bits que se pueden transmitir simultneamente. Suele denominarse la palabra del P. - Triestado: Las lneas del bus de datos deben ser triestado. Las lneas triestado son aquellas capaces de tener tres estados: - Estado alto (High, H). - Estado bajo (Low, L). - Estado de alta impedancia (High Impedance, HZ).

Conjunto de conductores por los cuales se transmite la informacin digital en forma de pulsos elctricos.

El P se est comunicando con el dispositivo E/S 1. Slo estos dos dispositivos pueden disponer del bus de datos. El resto de dispositivos conectados fsicamente al bus de datos debe permanecer con sus lneas en alta impedancia (dispositivo E/S 2). La unidad de control de la CPU es la que decide qu elemento enva la informacin y qu elemento la recibe, as como los elementos que deben desconectarse del bus y ponerse en alta impedancia.

31

Reloj El reloj se encarga de sincronizar todo el sistema, compensando los retardos de los diferentes mdulos. El sistema P es un sistema secuencial; la secuencia que realiza es la ejecucin continua de instrucciones.

Bus de control. Est formado por un conjunto de lneas por las que circulan las seales auxiliares de gobierno y sincronizacin del sistema. Las lneas existentes dependen del fabricante del P y de las funciones que desee implementarle.

Algunas seales tpicas en todos los sistemas son: seal de reloj de sincronizacin, seal de RESET o inicializacin, seal de lectura/escritura en memoria, etc. Su diagrama de bloques es el siguiente:

Algoritmo Secuencia ordenada de acciones mediante la cual se resuelve un problema.

Esta triple estructura que se ve en el diagrama programa-unidad de proceso-unidad de control surge de la propia estructura de los algoritmos: Ejemplo: Comprobar si dos nmeros son iguales INICIO Iguales = 0 Leer A y B Hacer D = A - B Si D = 0 hacer Iguales = 1 FIN

En la parte operativa se realizan acciones y ensayos: leer A y B (accin); hacer A-B y asignarlo a D (acciones); comprobar si D=0 (ensayo).

INET / Fludica y controladores lgicos programables

32

INET / Fludica y controladores lgicos programables

La parte de control define el encadenamiento (orden) de las acciones, segn el resultado de los ensayos. Esta estructura de los algoritmos es la que dio lugar a la arquitectura Von Neumann. El elemento bsico es el microprocesador o CPU que engloba a la unidad de control y a la unidad de proceso. Le hablbamos al comienzo de los tres bloques bsicos del sistema microprocesador. Nos referiremos, a continuacin a cada uno de ellos. 1. Unidad central de proceso CPU Est formada por los siguientes bloques: 1.1. Registros internos 1.2. Unidad de control 1.3. Unidad de proceso u operativa

1.1. Registros internos

Los registros pueden escribirse, leerse e intercambiar informacin entre ellos por medio de los buses internos de la CPU. Con estructuras adecuadas, es posible intercambiar informacin entre registros, cargar registros, descargarlos, etc.:

33

Las seales CS1 y CE2 son gestionadas por la unidad de control de la CPU instruida por el cdigo de la instruccin de transferencia A-B. Los datos que estn almacenados en los registros de la CPU tienen un tiempo de acceso muy bajo, muy inferior del correspondiente a los datos que se encuentran en memoria externa. Existen diferentes tipos de registros que permiten realizar diferentes funciones: De desplazamiento, empleando biestables D encadenados. Permiten hacer rotaciones y desplazamientos de bits (x2, %2, E/S serie, etc.) Contadores, con biestables T encadenados. Permiten medir tiempos, temporizar, etc. Registros ndices o de direcciones. Permiten el acceso estructurado a datos de memoria. Registros de datos, para almacenamiento de variables del programa. Registros especiales, contador de programa (Program Counter PC), puntero de pila (Stack Pointer SP).

1.2. Unidad de control Su misin principal consiste en interpretar y ejecutar las instrucciones que le llegan desde la memoria:

El cdigo binario de la instruccin en curso se recibe por el bus de datos y se almacena en el Registro de Instrucciones (IR). El decodificador de instrucciones selecciona las posiciones que corresponden a esa instruccin en una memoria ROM interna de la CPU. En ella se almacenan las diferentes instrucciones elementales o microinstrucciones instrucciones que componen esa instruccin. Estas microinstrucciones hacen que el secuenciador active las seales correspondientes para ejecutar la instruccin. El contador de programa PC es un registro que contiene la direccin de memoria donde est la siguiente instruccin del programa a ejecutar. Una de las primeras acciones del secuenciador, antes de ejecutar una instruccin, es incrementar el PC para que apunte a la instruccin siguiente. Existen instrucciones que permiten modificar el PC o incrementarlo en ms de una unidad, permitiendo la realizacin de saltos en la secuencia del programa. 1.3. Unidad de proceso u operativa El bloque principal es la ALU unidad lgico-aritmtica que permite realizar las operaciones aritmticas y lgicas indicadas por las instrucciones del programa.

INET / Fludica y controladores lgicos programables

34

INET / Fludica y controladores lgicos programables

El secuenciador UC, instruido por el cdigo de la instruccin en curso, activa las lneas de seleccin de la ALU para realizar la operacin.

Los operandos se suministran por medio de dos registros cargados desde el bus de datos: Registro acumulador, contiene siempre el resultado de la ltima operacin realizada en la ALU. Registro segundo operando, suministra el segundo operando para realizar la instruccin y viene normalmente aportado por el cdigo de operacin de la instruccin a ejecutar segn los diferentes modos de direccionamiento. Esta forma de trabajar es tpica de los micros de 8 bits y permite simplificar las instrucciones, ya que cada instruccin slo tiene que suministrar un operando: el otro se encuentra cargado previamente en el acumulador. El registro de estado est formado por bits denominados banderas flags 1 0, de acuerdo con el resultado obtenido. Algunos bits tpicos son: Z, bit zero, se pone a 1 si el resultado fue nulo. C, bit carry, se pone a 1 si hubo acarreo de orden superior. V, bit overflow, se pone a 1 si hubo desbordamiento. I, bit de interrupcin. Este bit es independiente del resultado. Escribiendo un 1 en l, por medio de la instruccin correspondiente, se puede inhibir la interrupcin exterior enmascarable.

Diagrama general de un sistema basado en un microprocesador de 8 bits:

35

La realizacin de una instruccin se lleva a cabo en dos fases: Fase de bsqueda. Es comn a todas las instrucciones. Se inicia en el contador de programa, que contiene la direccin de memoria donde se encuentra el cdigo binario de la instruccin. Esta direccin se coloca en el registro de direcciones de la CPU y, de ah a la memoria, a travs del bus de direcciones. Una vez decodificada la direccin en la memoria, su contenido se traslada al bus de datos hacia el registro de Instrucciones de la unidad de control. En este momento finaliza la fase de bsqueda.

Fase de ejecucin. En esta fase se decodifica la instruccin dentro de la unidad de control. Se busca su cdigo de microinstrucciones en la memoria interna de la CPU y se activan las seales correspondientes del secuenciador, para ejecutar la instruccin completa. Durante la fase de ejecucin, los buses externos del sistema no son utilizados por la CPU. Pueden ser empleados por otros dispositivos externos para transferir datos.

INET / Fludica y controladores lgicos programables

36

INET / Fludica y controladores lgicos programables

Las instrucciones que constituyen el programa se almacenan en memoria, en paquetes de 8 bits (Bytes). Normalmente, la forma es la siguiente: Byte 1. Es el cdigo de operacin COP o OPCODE que indica la operacin de la que se trata y su funcin. Por ejemplo: Operacin lgica AND. Byte 2 y siguientes. Normalmente, nos dan la informacin necesaria para acceder al dato sobre el que va a trabajar la instruccin. Puede ser el propio dato, la direccin de memoria donde se encuentra el dato, etc. las diferentes posibilidades para acceder a ese dato se denominan modos de direccionamiento del microprocesador.

Los COP suelen ser del mismo tamao que el bus de datos del micro. En los micros de 8 bits (6805/08, Z80, 8051), los COP son de 8 bits. En los micros de 16 bits (68000, 8086, Z8000), los COP son de 16 bits. En general, el conjunto de instrucciones del microprocesador se puede dividir en los siguientes bloques funcionales: Aritmticas. Suma, resta, producto, etc. Lgicas. AND, OR, NOT, EXOR, etc. De transferencia. Permiten transferir datos entre registros, entre memoria y los registros de la CPU, entre dos posiciones de memoria, etc. De entrada/salida. Permiten la lectura y escritura en los bloques perifricos de E/S. De ruptura de secuencia del programa. Permiten realizar saltos condicionales o incondicionales dentro del programa. De control. Parada (STOP), no operacin (NOP), interrupciones, etc.

37

2. Unidad de memoria La memoria se emplea para dos funciones bsicas: Almacenamiento de las instrucciones que constituyen el programa. Las instrucciones se codifican mediante su cdigo de operacin COP, formado por uno o varios Bytes. Almacenamiento de los datos y variables del programa. stos estn normalmente agrupados en paquetes de 8 bits (Byte), 16 bits (Word) o 32 bits (Long Word). La velocidad (o el tiempo de respuesta) de la memoria debe ser compatible con el microprocesador empleado. Normalmente, se emplean memorias basadas en semiconductores: RAM, memorias de lectura/escritura para almacenamiento de variables y datos del programa. Son voltiles. ROM (EPROM, EEPROM), memorias de slo lectura para almacenamiento de programas fijos (aplicaciones, rutinas bsicas de sistemas operativos, etc.) y constantes. Son no voltiles.

3. Unidad de entrada/salida Permiten la comunicacin del sistema microprocesador con el mundo exterior. Los dispositivos de E/S se denominan habitualmente perifricos (por ejemplo: teclado, pantalla, impresora, unidades de disco, etc.) Cualquier perifrico necesita un mdulo adicional que permite realizar su conexin con los buses del sistema microprocesador; este mdulo se denomina interface:

INET / Fludica y controladores lgicos programables

38

INET / Fludica y controladores lgicos programables

Existen varios mtodos para manejar los dispositivos de E/S: Mediante instrucciones especficas de E/S que se emplean en el programa de control para acceder al perifrico. Mediante acceso directo a memoria DMA. La CPU pone en triestado los buses de direcciones y de datos. Un dispositivo controlador de DMA toma el control de los buses y pasa los datos, directamente, entre el dispositivo E/S y la memoria. Mediante tcnicas de interrupcin. El perifrico activa las lneas de interrupcin de la CPU que detienen el programa en ejecucin y trasladan el contador de programa a la direccin de inicio de otro programa creado especialmente para atender al perifrico que solicita la interrupcin. Suele denominarse rutina de servicio.

Mediante el tratamiento de E/S como posiciones de memoria. Permite el empleo de las mismas instrucciones para acceso a memoria y a E/S. Una zona del mapa de memoria es reservada para los dispositivos de E/S. Estas posiciones se llaman puertos de E/S. Escribir o leer en uno de estos puertos equivale a hacerlo en el perifrico.

Arquitecturas bsicas de microprocesadores y microcontroladores. Harvard versus Von Neumann Harvard y Von Neumann son dos arquitecturas que se caracterizan por la forma en la que distribuyen la memoria de datos y de programa dentro de un microcontrolador. En la arquitectura Harvard, la memoria de datos y la de programa estn separadas, y para almacenar las instrucciones se utilizan lo que da en llamarse palabras. Palabras las hay de muchos tamaos como, por ejemplo, en los microcontroladores PIC. Los PIC de gama baja usan palabras de 12 bit, los de gama media 14 bit y los de gama alta 16 bit. Por otro lado, est la arquitectura Von Neumann que se caracteriza por tener la memoria de programa y la de datos implementada en un mismo bloque de memoria, compartiendo datos e instrucciones en un mismo bus. En este tipo de microcontroladores se usan bytes para almacenar datos e instrucciones. Ejemplos de estos microcontroladores son los Zilog, National Semiconductors o los de Motorola. Ambas arquitecturas tienen ventajas e inconvenientes y, como siempre pasa en el mundo de la electrnica, la seleccin depende de la aplicacin en la que vayamos a usar el microcontrolador, la frecuencia de trabajo, la conexin a otros perifricos, etc.

39

Arquitectura Von Neumann Los sistemas basados en arquitectura Von Neumann tienen un solo bus para acceder tanto a datos como a instrucciones. Diremos que un microcontrolador es de 4 bit cuando el bus de ste es de 4 bit; ser de 8 bit cuando el bus sea de 8 bit. Esto facilita en gran medida la conexin de memoria externa a travs de las lneas de entrada/ salida con una mnima implementacin extra de hardware. Por contra, tenemos que una instruccin puede ocupar ms de un byte, con lo que para poder leer la instruccin completa tendremos que hacer varias lecturas en la memoria. Ser necesario emplear varios ciclos de reloj para extraer una instruccin. Otra desventaja es que es posible que el contenido del contador del programa se corrompa, con lo que se podra estar leyendo un dato y tratar de interpretarlo como instruccin, con la consecuencia del deterioro y cada del sistema. Normalmente, un microprocesador controla que el contador no haga cosas raras. Una de las caractersticas que poseen los microcontroladores basados en este tipo de arquitectura es que suelen tener un repertorio de instrucciones bastante grande. Este tipo de repertorio se llama CISC Complex Instruction Set Computer. La caracterstica principal de este conjunto es que suele ser bastante elevado, con instrucciones microcodificadas una instruccin es decodificada por la CPU en varias instrucciones bsicas. Es fcil deducir que esto hace la ejecucin del programa un poco ms lenta; pero, tiene la ventaja de que ahorramos memoria: para dividir slo usamos una instruccin (Por supuesto, an as, tenemos que tener en cuenta que la decodificacin se est llevando a cabo en el interior del microcontrolador, lo que va a ralentizar su ejecucin; y considerar qu tipo de microcontrolador usar, segn la tarea a desarrollar). De acuerdo con la problemtica a resolver, debemos seleccionar el C segn: Arquitectura Conjunto de instrucciones N de instrucciones Por ejemplo: Pic 16Cxxx Hardvard RISC 35 Pic 17Cxxx Hardvard RISC 58 Motorola HC11 Von Neumann CISC 109 Intel 8051 Von Neumann CISC 40

As, pues, podemos decir que la principal ventaja de usar MCU6 con conjunto de instrucciones CISC es que, para una instruccin compleja, slo usaremos una posicin de memoria (al contrario de lo que ocurre con RISC Reduced Instruction Set Computer, que consideraremos en un momento ms; en este ltimo conjunto de instrucciones, para realizar, por ejemplo, una divisin debemos de usar varias instrucciones, consumiendo ms memoria). Frente a esta ventaja de los repertorios CISC, se nos presenta una desventaja con respecto a los RISC, y es que el ancho de banda se ve reducido considerablemente, debido a que una instruccin va a consumir varios ciclos de instruccin para ejecutarse. Como ya analizamos, estos microcontroladores son ms lentos que los que usan
6

MCU es la abreviatura de chip o unidad microcontroladora o microprocesador monopastilla.

INET / Fludica y controladores lgicos programables

40

INET / Fludica y controladores lgicos programables

repertorios RISC y, adems, puede ser que el conjunto de instrucciones sea bastante grande (como vamos a considerarlo en nuestro prximo captulo para Motorola HC11 o INTEL 8051), lo que no es en s un gran problema pero s un trabajo extra para aprender a usarse.

Arquitectura Harvard La arquitectura Harvard se caracteriza por tener la memoria de datos separada de la memoria del programa y stas, a su vez, unidas a la CPU a travs de buses independientes. El que la informacin se almacene en palabras tiene una gran ventaja y es que tanto el cdigo de operacin como el dato asociado a ste estn en la misma posicin (por tanto, su lectura es mucho ms rpida). sta es una gran ventaja ya que dota al microcontrolador de gran agilidad. La tcnica de procesar varias instrucciones al mismo tiempo se conoce como pipelining o segmentacin. Con esta tcnica se dividen las instrucciones en distintas etapas, de modo que el procesador pueda procesar distintas instrucciones en estas etapas. Veamos un ejemplo de esto. Una instruccin tpica se divide en cinco etapas: 1. Bsqueda de la instruccin. 2. Decodificacin de la instruccin. 3. Lectura del dato a travs del bus de datos, ya sea de la memoria RAM o de cualquier registro mapeado en cualquier parte de la zona de memoria. 4. Ejecucin de la instruccin. 5. Almacenamiento del resultado en memoria. Una desventaja de este sistema es que la adicin de memoria externa es mucho ms compleja e, incluso, a veces, imposible. En contraposicin con los microcontroladores con arquitectura von Neumann, los basados en Harvard tienen repertorios de instrucciones RISC Reduced Instruction Set Computer. Sus ventajas saltan a la vista: ms rapidez de ejecucin de cdigo incluso en algoritmos de divisin que vienen implementados con ms cdigo en los RISC que en los CISC, la velocidad de ejecucin es mayor en los primeros y menor el nmero de instrucciones lo que simplifica, tambin, nuestro aprendizaje cuando queremos programar un MCU para una tarea simple. Por el contrario, requiere utilizar ms memoria en un PIC7 que en un HC08 o un 8051 para realizar una funcin.

PIC es el nombre de los microcontroladores de la lnea Microchip, HC08 de la lnea Motorota y 8051 de la de Intel.

FICHA 2
41
INET / Fludica y controladores lgicos programables

Introduccin a los microcontroladores

43

Microcontrolador Circuito integrado o chip que incluye en su interior las tres unidades funcionales de un ordenador: CPU unidad central de proceso, memoria y unidades de entrada/ salida.

Los microcontroladores estn conquistando el mundo. Estn presentes en nuestro trabajo, en nuestra casa y en nuestra vida, en general. Se pueden encontrar controlando el funcionamiento de los ratones y de los teclados de los computadores, en los telfonos, en los hornos microondas y en los televisores de nuestro hogar. Pero... la invasin acaba de comenzar y el nacimiento del siglo XXI ser testigo de la conquista masiva de estos diminutos computadores que gobernarn la mayor parte de los aparatos que fabricaremos y usaremos los humanos. Se trata de un computador monopastilla de limitadas prestaciones que, normalmente, se dedica a resolver una tarea especfica. Es ms pequeo que una caja de fsforos por lo que suele estar incluido en el dispositivo que controla y, en ocasiones, cuesta menos que aqulla.

Un microcontrolador es un microprocesador optimizado para controlar equipos electrnicos. Los microcontroladores representan la inmensa mayora de los chips de ordenador vendidos: un 50% est integrado por controladores simples y otro 50% por DSP Procesador digital de seal ms especializados. Se puede tener uno o dos microprocesadores de propsito general en casa (usted est usando uno para leer este material de capacitacin), y entre una y dos docenas de microcontroladores si sumamos los que contiene cada dispositivo elctrico de lavadoras, horno microondas, telfonos, etc.. Un microcontrolador difiere de una CPU normal, debido a que es ms fcil convertirlo en un ordenador en funcionamiento, con un mnimo de microchips externos de apoyo: el chip se coloca en el dispositivo, conectado a la fuente de energa y de informacin que necesita... y eso es todo! Por supuesto, un microprocesador tradicional no nos permite hacer esto, ya que espera que todas estas tareas sean manejadas por otros chips. Consideremos un ejemplo. Un microcontrolador tpico tiene un generador de reloj integrado y una pequea cantidad de memoria RAM y ROM/EPROM/EEPROM; para hacerlo funcionar, slo se necesitan unos pocos programas de control y un cristal de sincronizacin.

Recuerda el problema que tenemos que resolver? Bien... Dijimos que podamos solucionarlo por caminos diferentes y que el ms adecuado, en cuanto a fuerzas a desarrollar, sera el de los dispositivos de accionamiento neumtico; en lugar de controlarlos con dispositivos tambin neumticos que son muy caros resultara de mxima eficacia utilizar componentes electrnicos. Entonces, adems del microcontrolador (que posee memoria RAM, ROM, y dispositivos de entrada y salida de informacin) se necesitarn algunas resistencias, dos transistores, algunos diodos y una placa de circuito impreso.

INET / Fludica y controladores lgicos programables

44

INET / Fludica y controladores lgicos programables

La ventaja comparativa ms importante de este modo de resolucin es el costo, que no representa ms de una decena de dlares.

Por lo general, los microcontroladores tambin disponen de una gran variedad de dispositivos de entrada/salida, como convertidores analgico a digital, temporizadores, UART y buses de interfaz serie especializados, como I2C y CAN. Frecuentemente, estos dispositivos integrados pueden ser controlados por instrucciones de procesadores especializados. Algunos microcontroladores incluyen un lenguaje de programacin integrado, como el lenguaje de programacin BASIC. El controlador embebido se emplea para controlar el funcionamiento de una tarea determinada y, debido a su reducido tamao, suele ir incorporado de ah su denominacin en el propio dispositivo al que gobierna. Se dice que es la solucin en un chip, porque su reducido tamao minimiza el nmero de componentes y el coste. El microcontrolador es un computador dedicado: En su memoria slo reside un programa destinado a gobernar una aplicacin determinada; sus lneas de entrada/salida soportan el conexionado de los sensores y actuadores de ese dispositivo a controlar. Una vez programado y configurado, el microcontrolador solamente sirve para gobernar la tarea asignada1. Estas caractersticas los hacen muy apropiados para desarrollar dispositivos de control o mquinas automticas, ya que poseen los elementos claves de control encapsulados en un mismo chip, lo que posibilita una inmejorable inmunidad al ruido (Inmunidad al ruido muy envidiada en los sistemas con microprocesador que poseen sus buses al aire, pasendose por el circuito impreso, o por cintas planas de cables de interconexin entre perifricos e interfaces). Un microcontrolador es la unin de tres tipos de dispositivos en un chip: un microprocesador, memorias y otros dispositivos perifricos. Evidentemente, el corazn del microcontrolador es un microprocesador; pero, cabe recordar que... El microcontrolador es para una aplicacin concreta y no es universal como el microprocesador. El nmero de productos que funcionan en base a uno o varios microcontroladores aumenta de forma exponencial. Casi todos los perifricos del computador (ratn, teclado, impresora, etc.) son regulados por el programa de un microcontrolador.
Controlador embebido embedded controller Es un circuito integrado que contiene todos los componentes de un computador.

An cuando estamos enfatizando el hecho de que el microcontrolador es un dispositivo dedicado a una tarea en particular, una vez programado, gracias a los avances de la tecnologa, este programa puede ser actualizado tantas veces como sea necesario, incluso en el mismo sistema de trabajo; es decir, podemos reprogramarlo para que realice otras tareas o mejorar su funcionamiento incorporando rutinas ms apropiadas.

45

Los electrodomsticos de lnea blanca (lavadoras, hornos, etc.) y de lnea marrn (televisores, videos, aparatos de msica, etc.) incorporan numerosos microcontroladores. Igualmente, los sistemas de supervisin, vigilancia y alarma en los edificios utilizan estos chips para optimizar el rendimiento de ascensores, calefaccin, alarmas de incendio, robo... Los microcontroladores ofrecen la nica solucin prctica a muchos problemas de diversos campos: Perifricos y dispositivos auxiliares de los computadores. Electrodomsticos. Aparatos porttiles y de bolsillo (tarjetas, monederos, telfonos, etc.). Mquinas expendedoras y juguetera. Instrumentacin. Industria de automocin. Control industrial y robtica. Electromedicina. Sistema de navegacin espacial. Sistemas de seguridad y alarma. Domtica en general.

Aplicaciones de microcontroladores en un automvil

En las aplicaciones sencillas resultan preferibles las soluciones no programables que no requieren desarrollo de software (escribir software consume mucho tiempo, por lo que resulta ms costoso; en aplicaciones sencillas y/o de poca tirada, a menudo es ms razonable efectuar tareas en hardware). Sin embargo, conforme aumenta la complejidad del sistema, aumentan las ventajas del uso de sistemas programables. Una de las principales ventajas de los sistemas programables es su flexibilidad, la que permite actualizar el funcionamiento de un sistema mediante tan slo el cambio del programa, sin tener que volver a disear el hardware. Esta flexibilidad es muy importante, al permitir que los productos se actualicen con facilidad y economa.

INET / Fludica y controladores lgicos programables

46

INET / Fludica y controladores lgicos programables

Controlador y microcontrolador Partamos de un ejemplo para caracterizar cmo se vinculan, y en qu se diferencian un controlador y un microcontrolador. El controlador que regula el funcionamiento de un horno dispone de un sensor que mide constantemente su temperatura interna y, cuando sta traspasa los lmites prefijados, genera las seales adecuadas que accionan los efectores que intentan llevar el valor de la temperatura dentro del rango estipulado. Aunque el concepto de controlador ha permanecido invariable a travs del tiempo, su implementacin fsica ha variado frecuentemente. Hace tres dcadas, los controladores se construan exclusivamente con componentes de lgica discreta; posteriormente, se emplearon los microprocesadores, que se rodeaban con chips de memoria y E/S sobre una tarjeta de circuito impreso. En la actualidad, todos los elementos del controlador se han podido incluir en un chip, el cual recibe el nombre de microcontrolador, que consiste en un sencillo pero completo computador, contenido en el corazn chip de un circuito integrado. Un microcontrolador es un circuito integrado de alta escala de integracin que incorpora la mayor parte de los elementos que configuran un controlador. Un microcontrolador dispone normalmente de los siguientes componentes: Procesador o CPU. Memoria RAM para contener los datos. Memoria para el programa tipo ROM/PROM/EPROM. Lneas de E/S para comunicarse con el exterior. Diversos mdulos para el control de perifricos (temporizadores, puertas serie y paralelo, ADC: conversores analgico/digital, DAC: conversores digital/ analgico, etc.). Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema. Los productos que para su regulacin incorpora un microcontrolador, disponen de las siguientes ventajas: Aumento de prestaciones. Un mayor control sobre un determinado elemento representa una mejora considerable. Aumento de la fiabilidad. El microcontrolador reemplaza a un elevado nmero de elementos, disminuye el riesgo de averas y requiere menos ajustes. Reduccin del tamao en el producto acabado. La integracin del microcontrolador en un chip disminuye el volumen, la mano de obra y el stock. Mayor flexibilidad. Las caractersticas de control estn programadas, por lo que su modificacin slo necesita cambios en el programa de instrucciones.
Controlador Dispositivo que se emplea para el gobierno de uno o varios procesos.

En nuestro problema, es bueno recordar que la solucin planteada con microcontroladores permite mayor flexibilidad, ya que prev algunas entradas y salidas extras que posibilitarn controlar otros dispositivos como son los cargadores automticos de piezas, la descarga de productos automatizada o trabajar en forma autnoma hasta una cantidad determinada de piezas. Como se logra esto? Simplemente, actualizando el programa y conectando algunos transistores o rels. Respecto a la inmunidad al ruido, al encontrarse prcticamente todo en un chip, es difcil interferir en su funcionamiento o toma de decisin.

47

Microprocesador y microcontrolador Un microprocesador es un sistema abierto (configuracin variable) con el que puede construirse un computador con las caractersticas que se desee, acoplndole los mdulos necesarios. Un microcontrolador es un sistema cerrado que contiene un computador completo y de prestaciones limitadas que no se pueden modificar.

Estructura de un sistema abierto basado en un microprocesador

Microcontrolador

El microcontrolador es un sistema cerrado. Todas las partes del computador estn contenidas en su interior y slo salen al exterior las lneas que gobiernan los perifricos.

Cuando el volumen de informacin es importante o bien cuando el tratamiento de sus datos es exigente, el sistema con microprocesador es ms apropiado, por tener una estructura abierta que permite al diseador seleccionar los perifricos ms adecuados y prever futuras expansiones de memoria.

Decidirse por construir el sistema con el microprocesador o utilizar, directamente, el microcontrolador depender de la economa. Si el C est limitado por su propia CPU, es necesario elegir un P potente y aadir los buffers, drivers, decodificadores, memorias... pertinentes. Generalmente, salvo que la aplicacin exija grandes prestaciones, el C ser una solucin vlida, con la ventaja de que reduce el espacio y el hardware. Si slo dispusisemos de un modelo de microcontrolador, ste debe tener muy potenciados todos sus recursos para poderse adaptar a las exigencias de las diferentes aplicaciones. Esta potenciacin supone, en muchos casos, un despilfarro.

INET / Fludica y controladores lgicos programables

48

INET / Fludica y controladores lgicos programables

En la prctica, cada fabricante de microcontroladores oferta un elevado nmero de modelos diferentes, desde los ms sencillos hasta los ms poderosos. Es posible seleccionar la capacidad de las memorias, el nmero de lneas de E/S, la cantidad y potencia de los elementos auxiliares, la velocidad de funcionamiento, etc. Por todo ello, un aspecto muy destacado del diseo es la seleccin del microcontrolador a utilizar.

Para resolver nuestro problema, es necesario determinar la cantidad de entradas y salidas vinculadas con el proceso, as como otros elementos necesarios para la determinacin de posiciones, acciones del operario y protecciones. Tambin es necesario evaluar posibles expansiones, de acuerdo a las tareas a realizar; y considerar la memoria, tanto RAM como ROM. Todo esto para determinar y caracterizar al microcontrolador ms adecuado para nuestra situacin problemtica y buscar el que se adapte mejor a dicha situacin, tanto tcnica como econmicamente.

Aplicaciones de los microcontroladores Cada vez existen ms productos que incorporan un microcontrolador con el fin de aumentar sustancialmente sus prestaciones, reducir su tamao y coste, mejorar su fiabilidad y disminuir el consumo. Este dato puede dar una idea de la masiva utilizacin de estos componentes: Algunos fabricantes de microcontroladores superan el milln de unidades de un modelo determinado, producidas en una semana. Aunque en el mercado de la microinformtica la mayor atencin la acaparan los desarrollos de los microprocesadores, lo cierto es que se venden cientos de microcontroladores por cada uno de aqullos. Una aplicacin tpica podra emplear varios microcontroladores para controlar pequeas partes del sistema. Estos controladores podran comunicarse entre ellos y con un procesador central, probablemente ms potente, para compartir la informacin y coordinar sus acciones, como, de hecho, ocurre ya habitualmente en cualquier PC. Existe una gran diversidad de microcontroladores. Quiz la clasificacin ms importante sea entre microcontroladores de 4, 8, 16 32 bits. Aunque las prestaciones de los microcontroladores de 16 y 32 bits son superiores a los de 4 y 8 bits, la realidad es que los microcontroladores de 8 bits dominan el mercado y los de 4 bits se resisten a desaparecer. La razn de esta tendencia es que los microcontroladores de 4 y 8 bits son apropiados para la gran mayora de las aplicaciones, lo que hace absurdo emplear micros ms potentes y, consecuentemente, ms caros. Uno de los sectores que ms tracciona el mercado del microcontrolador es el mercado automovilstico. De hecho, algunas de las familias de microcontroladores actuales se desarrollaron pensando en este sector, siendo modificadas posteriormente para adaptarse a sistemas ms genricos. El mercado del automvil es, adems, uno de los ms exigentes: los componentes electrnicos deben operar con condiciones extremas de vibracin, choques, ruido, etc. y seguir siendo fiables, ya que el fallo de cualquier componente en un automvil puede ser el origen de un accidente.

49

En cuanto a las tcnicas de fabricacin, cabe decir que prcticamente la totalidad de los microcontroladores actuales se fabrica con tecnologa CMOS 4 Complementary Metal Oxide Semiconductor. Esta tecnologa supera a las tcnicas anteriores por su bajo consumo y su alta inmunidad al ruido. La distribucin de las ventas, segn su aplicacin, es la siguiente: Una tercera parte se absorbe en las aplicaciones relacionadas con los computadores y sus perifricos. La cuarta parte se utiliza en las aplicaciones de consumo (electrodomsticos, juegos, TV, video, etc.) El 16% de las ventas mundiales se destina al rea de las comunicaciones. Otro 16% es empleado en aplicaciones industriales. El resto de los microcontroladores vendidos en el mundo, aproximadamente un 10%, es adquirido por las industrias de automocin.

Los modernos microcontroladores de 32 bits tambin van afianzando sus posiciones en el mercado. Las reas ms interesadas en ellos son las del procesamiento de imgenes, las comunicaciones, las aplicaciones militares, los procesos industriales y el control de los dispositivos de almacenamiento masivo de datos.

Qu microcontrolador emplear? A la hora de escoger el microcontrolador a emplear en un diseo concreto como el del problema que nos ocupa, hay que tener en cuenta multitud de factores, como la documentacin y herramientas de desarrollo disponibles y su precio, la cantidad de fabricantes que lo producen y, por supuesto, las caractersticas del microcontrolador (tipo de memoria de programa, nmero de temporizadores, interrupciones, etc.).

Costos. Como es lgico, los fabricantes de microcontroladores compiten duramente para vender sus productos. Y no les va demasiado mal ya que, sin hacer demasiado ruido, venden 100 veces ms microcontroladores que microprocesadores. Para que nos hagamos una idea: para el fabricante que usa el microcontrolador en su producto, una diferencia de precio de algunos dlares en el microcontrolador es importante (el consumidor debe pagar, adems, el costo del empaquetado, el de los otros componentes, el diseo del hardware y el desarrollo del software). Si el fabricante desea reducir costos, debe tener en cuenta las herramientas de apoyo con que va a contar: emuladores, simuladores, ensambladores, compiladores, etc. Es habitual que muchos de ellos se decidan por microcontroladores pertenecientes a una nica familia, para unificar herramientas de programacin, recursos humanos, etc. Aplicacin. Antes de seleccionar un microcontrolador es imprescindible analizar los requisitos de la aplicacin: Procesamiento de datos. Puede ser necesario que el microcontrolador realice clculos crticos en un tiempo limitado. En ese caso, debemos seleccionar un dispositivo suficientemente rpido para ello. Por otro lado, es necesario tener en cuenta la precisin de los datos a manejar: si no es suficiente con un microcontrolador de 8 bits, puede ser necesario acudir a microcontroladores

INET / Fludica y controladores lgicos programables

50

INET / Fludica y controladores lgicos programables

de 16 32 bits o, incluso, a hardware de coma flotante2. Una alternativa ms barata y quiz suficiente es usar libreras, para manejar los datos de alta precisin. Entrada/salida. Para determinar las necesidades de entrada/salida del sistema es conveniente dibujar su diagrama de bloques, de tal forma que sea sencillo identificar la cantidad y el tipo de seales a controlar. Una vez realizado este anlisis, puede ser necesario aadir perifricos hardware externos o cambiar a otro microcontrolador ms adecuado a ese sistema. Consumo. Algunos productos que incorporan microcontroladores estn alimentados con bateras; su funcionamiento puede ser tan vital como activar una alarma antirrobo. Lo ms conveniente, en un caso como ste, puede ser que el microcontrolador est en estado de bajo consumo pero que despierte ante la activacin de una seal (una interrupcin) y ejecute el programa adecuado para procesarla. Memoria. Para detectar las necesidades de memoria de nuestra aplicacin debemos separarla en memoria voltil (RAM), memoria no voltil (ROM, EPROM, etc.) y memoria no voltil modificable (EEPROM). Este ltimo tipo de memoria puede ser til para incluir informacin especfica de la aplicacin, como un nmero de serie o parmetros de calibracin. El tipo de memoria a emplear vendr determinado por el volumen de ventas previsto del producto: de menor a mayor volumen ser conveniente emplear EPROM, OTP y ROM. En cuanto a la cantidad de memoria necesaria, puede ser imprescindible realizar una versin preliminar, aunque sea en pseudo-cdigo, de la aplicacin, y, a partir de ella, hacer una estimacin de cunta memoria voltil y no voltil es necesaria y si es conveniente disponer de memoria no voltil modificable. Ancho de palabra. El criterio de diseo debe ser seleccionar el microcontrolador de menor ancho de palabra que satisfaga los requerimientos de la aplicacin. Usar un microcontrolador de 4 bits supone una reduccin importante en los costes; mientras que uno de 8 bits puede ser el ms adecuado si el ancho de los datos es de un byte. Los microcontroladores de 16 y 32 bits, debido a su elevado coste, se reservan para aplicaciones que requieran sus altas prestaciones (Entrada/salida potente o espacio de direccionamiento muy elevado). Diseo de la placa. La seleccin de un microcontrolador concreto condiciona el diseo de la placa de circuitos. Debe tenerse en cuenta que, quizs, usar un microcontrolador barato encarezca el resto de componentes del diseo.

Generalmente, los microcontroladores de 8 bits estn preparados para trabajar con nmeros enteros y, si necesitamos optimizar esto, tenemos dos posibilidades: - utilizar un microcontrolador que trabaja con exponente y mantisa (notacin cientfica), llamado de punto flotante, generalmente de 16 o 32 bits; o - utilizar libreras ya desarrolladas para microcontroladores de 8 bits que trabajan internamente como un microcontrolador de 16 bits. En cuanto al manejo de datos y a las operaciones aritmticas y lgicas, stas sobrecargan al microcontrolador; pero, logran el objetivo principal: mayor precisin en los resultados, tambin llamado doble precisin (dos Byte), cudruple precisin (cuatro Bytes), etc.

51

Caractersticas de nuestro sistema de control Es momento de evaluar las caractersticas de nuestro sistema de control para satisfacer las necesidades planteadas, consideramos:

Caractersticas
Procesamiento de datos Entrada/salida Consumo Memoria de datos y programa Ancho de palabra Costos del control Diseo de la placa Expansin Adicionales

Nuestro microcontrolador
No se requiere gran precisin ni velocidad de procesamiento Siete entradas y tres salidas (Pulsadores, fines de carrera, electrovlvulas, etc.). Muy bajo, sin las electrovlvulas neumticas, menor a 150 mA. Menor a 10 bytes de RAM. Menor a 500 bytes de ROM. Suficiente con 8 bits Menor a 20 U$S (Sin las electrovlvulas, fines de carrera y pulsadores). Placa reducida en tamao y simple faz. Cuatro entradas o tres salidas adicionales. Canales analgicos, PWM, comunicacin RS232, timers, bajo consumo.

La seleccin del microcontrolador adecuado a nuestro sistema debe responder a los siguientes criterios: Los circuitos integrados deben estar disponibles y a precio razonable. Las herramientas para desarrollo de hardware deben estar disponibles y a precio razonable. Las herramientas para desarrollo de software deben estar disponibles y a precio razonable Idealmente, la familia de integrados debe tener una gran variedad de opciones (como entradas/salidas, serie, convertidores analgico/digital, etc.) Idealmente, el integrado deber estar disponible en versiones miniatura y de bajo consumo. Idealmente, el integrado deber tener una arquitectura razonable. Aunque todas las computadoras poseen los mismos principios y elementos bsicos, las hay de diferentes tipos, orientadas a satisfacer diversos propsitos: Las mainframes son sistemas de computadora muy grandes que se utilizan para trabajos de procesamiento de grandes volmenes de informacin. Las PC son versiones reducidas de las mainframes, aplicables a tareas de menor envergadura an, tales como, por ejemplo, procesadores de texto o grficos. Los microcontroladores son computadoras en un solo circuito integrado, utilizado para controlar una pequea aplicacin. Los pequeos microcontroladores se usan, por ejemplo, para convertir el movimiento de un mouse de computadora en una salida serie de datos, para ingresarlo a una PC. Muy frecuentemente los microcontroladores se hallan embebidos dentro de un producto y quien lo usa no necesariamente sabe que, en su interior, alberga una computadora. Al estar todos los microcontroladores integrados en un chip, su estructura fundamental y sus caractersticas bsicas son muy parecidas. Todos deben disponer de

INET / Fludica y controladores lgicos programables

52

INET / Fludica y controladores lgicos programables

los bloques esenciales: procesador, memoria de datos y de instrucciones, lneas de E/S, oscilador de reloj y mdulos controladores de perifricos. Sin embargo, cada fabricante intenta enfatizar los recursos ms idneos para las aplicaciones a las que se destinan preferentemente. Una de las razones del xito de los mC se basa en su utilizacin. Cuando se aprende a manejar uno de ellos, conociendo su arquitectura y su repertorio de instrucciones, es muy fcil emplear otro modelo. Al igual que la mayora de las computadoras, los microcontroladores son simples ejecutores de instrucciones de propsito general. La verdadera estrella de un sistema de computadora es el programa de instrucciones que son provistas por un programador humano. Este programa instruye a la computadora a realizar largas secuencias de muy simples acciones para efectuar tareas tiles tales como las que se propuso el programador. Para la decisin final a nuestro problema se plantearon tres posibilidades: los microcontroladores 8051 de INTEL o ATMEL, los PIC de MICROCHIPS la familia HC08 de Motorola. Por trayectoria, presencia en el mercado nacional y soporte tcnico hemos seleccionado a la familia de microcontroladores de MOTOROLA que est en continua evolucin. Consideremos la evolucin del tamao del die o pastilla semiconductora de Motorola:

Estos microcontroladores se aplican en elementos cotidianos:

Redes industriales: protocolo de bajo costo CAN. USB sensor-actuator interface. Perifricos para seguridad: IR infrarrojo deteccin y comunicacin. Balastro regulador de luz: protocolo para Domtica.

53

Volvamos a nuestro problema... La eleccin recae en un microcontrolador que cumple muy bien dichos criterios y posee una presencia en el mercado importante, como son los microcontroladores de Motorola, la familia 68HC08 con una gran variedad de modelos. De entre estos modelos seleccionamos el 68HC908KX8, versin que posee entradas/salidas digitales y analgicas, as como comunicacin RS232, PWM y temporizacin. Los microcontroladores ms populares son3: 8048 (Intel). Es el padre de los microcontroladores actuales, el primero de todos. Su precio, disponibilidad y herramientas de desarrollo hacen que todava sea muy popular. 8051 (Intel, Atmel y otros). Es, sin duda, el microcontrolador ms popular. Fcil de programar y potente. Est bien documentado y posee cientos de variantes e incontables herramientas de desarrollo. 80186, 80188 y 80386 EX (Intel). Versiones en microcontrolador de los populares microprocesadores 8086 y 8088. Su principal ventaja es que permiten aprovechar las herramientas de desarrollo para PC. 68HC11/HC08 (Motorola y Toshiba). Es un microcontrolador de 8 bits potente y popular con gran cantidad de variantes. 683xx (Motorola). Surgido a partir de la popular familia 68000, a la que se incorporan algunos perifricos. Son microcontroladores de altsimas prestaciones. PIC (MicroChip). Familia de microcontroladores que gana popularidad da a da. Fueron los primeros microcontroladores RISC.

Almacenamiento y ejecucin del programa Un programa es una lista de instrucciones al procesador. Todos los P y C cuentan con un conjunto de instrucciones que pueden ejecutar. Cada tipo de procesador y controlador tiene su propio conjunto de instrucciones y, por lo general, los programas escritos para un dispositivo no funcionan en otro de distinta marca.

Un C tpico tiene instrucciones para: transferir informacin entre registros y memoria; realizar operaciones aritmticas y lgicas; efectuar comparaciones y pruebas sobre el contenido de sus registros de memoria; controlar la secuencia de ejecucin de programas.

Por lo general, la operacin que una instruccin ha de ejecutar est definida por un cdigo de operacin (en C sencillos, generalmente de un solo byte) conocido tambin como opcode.

Es preciso resaltar en este punto que existen innumerables familias de microcontroladores, cada una de las cuales posee un gran nmero de variantes.

INET / Fludica y controladores lgicos programables

54

INET / Fludica y controladores lgicos programables

Algunas instrucciones requieren, adems del opcode, informacin extra (operandos). Por ejemplo, una instruccin para almacenar el contenido de un registro en una posicin de memoria, necesita incluir la direccin de memoria de destino. La unidad de control y decodificacin de instrucciones es el corazn del procesador. Es la encargada de extraer de forma secuencial las instrucciones de la memoria y, luego, ejecutarlas. Unido a la unidad de control se encuentra un generador de reloj, que utiliza un oscilador para producir una seal de reloj muy precisa. El tiempo se divide en un cierto nmero de ciclos de reloj. El funcionamiento de la unidad de control y decodificacin de instrucciones se puede dividir en dos partes (ambas duran varios ciclos de reloj): Ciclo de bsqueda de instrucciones. En l se transfiere la direccin de la siguiente instruccin al bus de direcciones, se enva una orden de lectura a los dispositivos de memoria a travs del bus de control, se lee la informacin del bus de datos y, si se trata del primer byte de una instruccin, se transfiere este byte al registro de instrucciones. Ciclo de ejecucin de instrucciones. En l se ejecuta la instruccin. El registro de instrucciones est conectado a un decodificador que determina cuntos bytes de informacin adicionales se requieren. stos se cargan mediante ciclos de bsqueda, como ya indicamos. Cuando la ejecucin est completa, la mquina comienza, automticamente, el ciclo de bsqueda de la siguiente instruccin del programa. La ejecucin es, por tanto, una secuencia continua de ciclos de bsqueda y ejecucin.

Recursos comunes a todos los microcontroladores Nos referiremos en este punto a decisiones respecto de: arquitectura bsica, procesador o CPU, memoria, puertas de entrada y salida reloj principal.

1. Arquitectura bsica Aunque, inicialmente, todos los microcontroladores adoptan la arquitectura clsica de Von Neumann, hoy da hay mayor tendencia hacia la arquitectura Harvard.
Arquitectura de Von Neumann Se caracteriza por disponer de una sola memoria principal donde se almacenan datos e instrucciones de forma indistinta. Se accede a esta memoria a travs de un sistema de buses nico (direcciones, datos y control).

55

Bus de datos. Se emplea para transferir datos. El nmero de lneas de este bus es igual a la longitud de palabra del dispositivo. Bus de direcciones. Permite transferir informacin de direcciones. El nmero de lneas en el bus de direcciones determina el numero de posiciones de memoria que el procesador puede especificar. Un bus de direcciones de 8 lneas es capaz de posicionar slo 28 (256) direcciones. Bus de control. El procesador utiliza las lneas del bus de control para sincronizar operaciones con componentes externos. Por ejemplo:

Si el procesador o microcontrolador desea almacenar una palabra de datos en una ubicacin de memoria particular, coloca los datos en el bus de datos, la direccin en la que se van a almacenar los datos en el bus de direcciones y diversas seales de control para sincronizar la operacin de almacenamiento en el bus de control.

La necesidad de conseguir rendimientos elevados en el procesamiento de las instrucciones ha desembocado en el empleo cada vez mayor de procesadores de arquitectura Harvard, frente a los tradicionales que siguen la arquitectura de Von Neumann. Mientras esta ltima como le plantebamos en la primera parte del curso se caracteriza porque la CPU se conecta a una memoria nica donde coexisten datos e instrucciones a travs de un sistema de buses, 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, lo que propicia el paralelismo:

La arquitectura Harvard dispone de dos memorias independientes: una que contiene slo instrucciones y otra, slo datos. Ambas disponen de sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escritura) simultneamente en ambas memorias.

2. Procesador o CPU Es el elemento ms importante del microcontrolador y determina sus principales caractersticas, tanto a nivel hardware como software.

INET / Fludica y controladores lgicos programables

56

INET / Fludica y controladores lgicos programables

Se encarga de direccionar la memoria de instrucciones, recibir el cdigo OP de la instruccin en curso, su decodificacin y la ejecucin de la operacin que implica la instruccin, as como la bsqueda de los operandos y el almacenamiento del resultado. Existen tres orientaciones en cuanto a la arquitectura y funcionalidad de los procesadores actuales. CISC. Un gran nmero de procesadores usados en los microcontroladores est basado en la filosofa CISC computadores de juego de instrucciones complejo. Disponen de ms de 80 instrucciones de mquina en su repertorio, algunas de las cuales son muy sofisticadas y potentes, requiriendo muchos ciclos para su ejecucin. Una ventaja de los procesadores CISC es que ofrecen al programador instrucciones complejas que actan como macros. RISC. Tanto la industria de los computadores comerciales como la de los microcontroladores estn decantndose hacia la filosofa RISC computadores de juego de instrucciones reducido. En estos procesadores, el repertorio de instrucciones mquina es muy reducido y las instrucciones son simples y, generalmente, se ejecutan en un ciclo. La sencillez y rapidez de las instrucciones permiten optimizar el hardware y el software del procesador. SISC. En los microcontroladores destinados a aplicaciones muy concretas, el juego de instrucciones, adems de ser reducido, es especfico: las instrucciones se adaptan a las necesidades de la aplicacin prevista computadores de juego de instrucciones especfico.

En nuestro caso, hemos seleccionado un microcontrolador CISC con un juego de 119 instrucciones, muchas de ellas con varios modos de direccionamiento, lo que permite tener una gran flexibilidad en cuanto a la tarea a realizar. Permite ejecutar acciones directas de entradas y salidas (como las necesarias para nuestro sistema de control), as como desarrollar complejos algoritmos, linealizaciones y parametrizacin de variables (multiplicar y dividir de forma sencilla), complejos protocolos de comunicacin con otros dispositivos de control de mayores prestaciones, etc. En la implementacin hecha por Motorola de esta arquitectura, hay algunos registros o latch especiales (denominadas registros del CPU) en el interior del CPU, que actan como pequeos anotadores de borrador y tablero de control del CPU. Los registros del CPU son similares a las memorias en que la informacin puede ser escrita y retenida en su interior. Es importante recordar que ellos estn cableados en el CPU (registros internos) y no forman parte de la memoria direccionable por la CPU (registros externos). Toda la informacin (no la de los registros de la CPU) accesible a la CPU es vista (por la CPU) como una nica fila de miles de casillas o ms. A veces esta organizacin es llamada sistema de I/O mapeado en memoria, dado que la CPU trata a toda posicin de memoria por igual, aunque ella contenga instrucciones de programa, variables de datos o entradas / salidas (I/O) de control. La informacin del estado y control de I/O (input/output o entrada/salida) es un tipo de posicin de memoria que permite al sistema del computador intercambiar informacin desde o hacia su mundo exterior. Este tipo de memoria es poco usual, ya que la informacin puede ser monitoreada y/o alterada por algn otro dispo-

57

sitivo, adems de la CPU. Los tipos ms simples de posiciones de memoria de I/O son un simple port (puerto) de entrada y un simple port de salida. En un MCU de 8 bits, un simple port de entrada (input) o salida (output) contiene 8 pines (por lo general un port tpico tiene 8 pines; pero, como veremos ms adelante, en algunos MCU la cantidad de pines de entrada o salida puede ser inferior a 8 en algn port en particular). En la prctica, la implementacin de un port de salida es un ctuple data latch con realimentaciones que permitan leerlo a la CPU. Los microcontroladores M68HC08 incluyen pines de I/O de ports paralelos de propsito general. El sentido de cada pin se puede programar por un bit de control accesible por programa: Un pin de port se configura como salida, si en su correspondiente DDR bit es escrito un uno lgico. Un pin de port se configura como entrada si en su correspondiente DDR bit es cero. Luego de un reset, todos los DDR bits son borrados, lo que configura a todos los pines como entrada. Los DDR pueden ser tanto escritos como ledos por el procesador.

3. Memoria En los microcontroladores, la memoria de instrucciones y datos est integrada en el propio chip: Una parte es no voltil, tipo ROM, y se destina a contener el programa de instrucciones que gobierna la aplicacin. Otra parte de memoria es tipo RAM, voltil, y se destina a guardar las variables y los datos. Hay dos peculiaridades que diferencian a los microcontroladores de los computadores personales: En los C no existen sistemas de almacenamiento masivo como disco duro o disquetes. Como los C slo se destinan a una tarea, en la memoria ROM slo hay que almacenar un nico programa de trabajo. La RAM en estos dispositivos es de poca capacidad, pues slo debe contener las variables y los cambios de informacin que se produzcan en el transcurso del programa. Por otra parte, como slo existe un programa activo, no se requiere guardar su copia en la RAM pues se ejecuta directamente desde la ROM. Los usuarios de computadores personales estn habituados a manejar Megabytes de memoria; pero, los diseadores con microcontroladores trabajan con capacidades: de ROM comprendidas entre 2 k bytes y 64 k bytes, y de RAM comprendidas entre 20 bytes y 2 K bytes. Segn el tipo de memoria ROM que dispongan los microcontroladores, su aplicacin y utilizacin son diferentes. Las cinco versiones de memoria no voltil que se pueden

INET / Fludica y controladores lgicos programables

58

INET / Fludica y controladores lgicos programables

encontrar en los microcontroladores del mercado entre los cuales hemos seleccionado el mejor para nuestro problema, son: ROM con mscara. Es una memoria no voltil de slo lectura, cuyo contenido se graba durante la fabricacin del chip. El elevado coste del diseo de la mscara slo hace aconsejable el empleo de los microcontroladores con este tipo de memoria cuando se precisan cantidades superiores a varios miles de unidades. OTP One Time Programmable. El microcontrolador contiene una memoria no voltil de slo lectura, programable una sola vez por el usuario. Es el usuario quien puede escribir el programa en el chip mediante un sencillo grabador controlado por un programa desde un PC. La versin OTP es recomendable cuando es muy corto el ciclo de diseo del producto, o bien en la construccin de prototipos y series muy pequeas. Tanto en este tipo de memoria como en la EPROM, se suele usar la encriptacin mediante fusibles para proteger el cdigo contenido. EPROM Erasable Programmable Read OnIy Memory. Los microcontroladores que disponen de memoria EPROM pueden borrarse y grabarse muchas veces. La grabacin se realiza, como en el caso de los OTP , con un grabador gobernado desde un PC. Si, posteriormente, se desea borrar el contenido, disponen de una ventana de cristal de cuarzo en su superficie por la que se somete a la EPROM a rayos ultravioleta durante varios minutos. Las cpsulas son de material cermico, por lo que son ms caros que los microcontroladores con memoria OTP , los que estn hechos con material plstico. EEPROM Electrical Erasable Programmable Read OnIy Memory-. Se trata de memorias de slo lectura, programables y borrables elctricamente. Tanto la programacin como el borrado se realizan elctricamente desde el propio grabador y bajo el control programado de un PC. Las operaciones de grabado y de borrado son muy cmodas y rpidas. No disponen de ventana de cristal de cuarzo en la superficie. Los microcontroladores dotados de memoria EEPROM, una vez instalados en el circuito, pueden grabarse y borrarse cuantas veces se quiera, sin ser retirados de dicho circuito. Para ello se usan grabadores en circuito que confieren una gran flexibilidad y rapidez a la hora de realizar modificaciones en el programa de trabajo. El nmero de veces que puede grabarse y borrarse una memoria EEPROM es finito, por lo que no es recomendable una reprogramacin continua. Son muy idneas para la enseanza y la ingeniera de diseo. Por todas estas ventajas, se va extendiendo en los fabricantes la tendencia de incluir una pequea zona de memoria EEPROM en los circuitos programables para guardar y modificar cmodamente una serie de parmetros que adecuan el dispositivo a las condiciones del entorno. Este tipo de memoria es relativamente lento. FLASH. Se trata de una memoria no voltil, de bajo consumo, que se puede escribir y borrar. Funciona como una ROM y una RAM; pero, consume menos y es ms pequea. A diferencia de la ROM, la memoria FLASH es programable en el circuito. Es ms rpida y de mayor densidad que la EEPROM. La alternativa FLASH est recomendada frente a la EEPROM, cuando se precisa gran cantidad de memoria de programa no voltil. Es ms veloz y tolera ms ciclos de escritura/borrado. Las memorias EEPROM y FLASH son muy tiles al permitir que los microcontroladores que las incorporan puedan ser reprogramados en circuito, es decir, sin tener que sacar el circuito integrado de la tarjeta. As, un dispositivo

59

con este tipo de memoria incorporado al control del motor de un automvil permite que pueda modificarse el programa durante la rutina de mantenimiento peridico, compensando los desgastes y otros factores tales como la compresin, la instalacin de nuevas piezas, etc. La reprogramacin del microcontrolador puede convertirse en una labor rutinaria dentro de la puesta a punto.

Hay miles de posiciones de memoria o ms en un sistema de MCU. Es importante, entonces, contar con un medio conveniente para no perder de vista su contenido. Un mapa de memoria es una representacin grfica de la totalidad de la memoria del MCU. Veamos el mapa de memoria de nuestro microcontrolador:
Registros internos y puertos de entrada y salida RAM de usuario para datos en general Memoria de programa Flash Eeprom Vectores de interrupcin

Las memorias pueden ser una forma de perifricos. Ya hemos discutido el uso de diferentes tipos de memoria, pero sin considerar la lgica requerida para soportarlas. Las ROM y RAM son muy ntegras y no requieren lgica de soporte ms que la lgica de seleccin de direcciones para distinguir una posicin de otra. Esta lgica es provista en el mismo chip que aloja a la memoria. Las memorias EPROM (PROM borrable) y EEPROM (PROM borrable elctricamente) requieren una lgica de soporte para grabarlas (y borrarlas en las EPROM). La lgica perifrica de soporte para el MC68HC908KX8 es similar a un grabador de PROM, contenido en la misma MCU. Un registro de control incluye bits de control para seleccionar entre los modos de grabacin y lectura, y para habilitar la fuente de alimentacin de programacin de alta tensin.

INET / Fludica y controladores lgicos programables

60

INET / Fludica y controladores lgicos programables

4. Puertas de entrada y salida La principal utilidad de las patitas que posee la cpsula que contiene un microcontrolador es soportar las lneas de E/S que comunican al computador interno con los perifricos exteriores. Segn los controladores de perifricos que posea cada modelo de microcontrolador, las lneas de E/S se destinan a proporcionar el soporte a las seales de entrada, salida y control.

I/O o timers

I/O o Comunicacin RS232 I/O o canales analgicos I/O o frecuencia externa Pinout del microcontrolador que utilizaremos MC68HC908KX8

Se pueden observar al menos trece lneas que pueden trabajar como entradas o salidas, sin contar la de interrupcin (IRQ1)

5. Reloj principal Todos los microcontroladores disponen de un circuito oscilador que genera una onda cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la sincronizacin de todas las operaciones del sistema. Generalmente, el circuito de reloj est incorporado en el microcontrolador y slo se necesitan unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia de trabajo. Dichos componentes suelen consistir en un cristal de cuarzo junto a elementos pasivos o bien un resonador cermico o una red R-C. Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las instrucciones, pero lleva aparejado un incremento del consumo de energa.

En nuestro problema, encontramos un sistema de clock completo integrado que puede funcionar sin un cristal exterior y puede trimearse para acercarlo a los valores buscados con tolerancias aceptables.

Recursos especiales Cada fabricante oferta numerosas versiones respecto de la arquitectura bsica de microcontrolador que acabamos de presentarle. En algunas ampla las capacidades

61

de las memorias, en otras incorpora nuevos recursos, en otras reduce las prestaciones al mnimo para aplicaciones muy simples, etc. La labor del diseador es encontrar el modelo que satisfaga todos los requerimientos de su aplicacin, minimizando el coste, el hardware y el software. Los principales recursos especficos que incorporan los microcontroladores son: 1. Temporizadores Timers 2. Perro guardin Watchdog o COP 3. Proteccin ante fallo de alimentacin Brownout o LVI 4. Estado de reposo o de bajo consumo 5. Conversor A/D ADC 6. Conversor D/A DAC 7. Comparador analgico 8. Modulador de anchura de impulsos PWM 9. Puertas de E/S digitales 10.Puertas de comunicacin 1. Temporizadores Timers Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la cuenta de acontecimientos que suceden en el exterior (contadores). Para la medida de tiempos, se carga un registro con el valor adecuado y, a continuacin, dicho valor se va incrementando o decrementando al ritmo de los impulsos de reloj o algn mltiplo, hasta que se desborde y llegue a 0, momento en el que se produce un aviso. Cuando se desea contar acontecimientos que se materializan por cambios de nivel o flancos en alguna de las patitas del microcontrolador, el mencionado registro se va incrementando o decrementando al ritmo de dichos impulsos. 2. Perro guardin Watchdog o COP Cuando el computador personal se bloquea por un fallo del software u otra causa, se pulsa el botn del reset y se reinicia el sistema. Pero, un microcontrolador funciona sin el control de un supervisor y de forma continuada las 24 horas del da, por lo que requiere este recurso especial. El perro guardin consiste en un temporizador que, cuando se desborda y pasa por 0, provoca un reset automticamente en el sistema. Se disea el programa de trabajo que controla la tarea, de forma tal que refresca o inicializa al perro guardin antes de que provoque el reset. Si falla el programa o se bloquea, no se refresca al perro guardin y, al completar su temporizacin, ladrar y ladrar hasta provocar el reset. 3. Proteccin ante fallo de alimentacin Brownout o LVI Se trata de un circuito que resetea al microcontrolador cuando el voltaje de alimentacin (VDD) es inferior a un voltaje mnimo brownout. Mientras el voltaje de alimentacin es inferior al de brownout, el dispositivo se mantiene reseteado, comenzando a funcionar normalmente cuando sobrepasa dicho valor.

INET / Fludica y controladores lgicos programables

62

INET / Fludica y controladores lgicos programables

Su denominacin LVI corresponde a Interrupcin por bajo nivel de tensin. 4. Estado de reposo o de bajo consumo Son abundantes las situaciones reales de trabajo en las que el microcontrolador debe esperar, sin hacer nada, a que se produzca algn acontecimiento externo que lo ponga de nuevo en funcionamiento. Para ahorrar energa factor clave en los aparatos porttiles, los microcontroladores disponen de una instruccin especial (Sleep en los PIC; Stop wait, Sleep en Motorola) que los pasa al estado de reposo o de bajo consumo, en el cual los requerimientos de potencia son mnimos. En dicho estado se detiene el reloj principal y se congelan sus circuitos asociados, quedando sumido el mC en un profundo sueo. Al activarse una interrupcin ocasionada por el acontecimiento esperado, el microcontrolador se despierta y reanuda su trabajo (En Motorola dependiendo de cul se utiliza, puede quedar algn circuito interno funcionando). 5. Conversor A/D ADC Los microcontroladores que incorporan un conversor A/D (analgico/digital) pueden procesar seales analgicas, tan abundantes en las aplicaciones. Un multiplexor permite aplicar a la entrada del ADC diversas seales analgicas, desde las patitas del circuito integrado. 6. Conversor D/A DAC Transforma los datos digitales obtenidos del procesamiento del computador en su correspondiente seal analgica, que saca al exterior por una de las patitas de la cpsula. Existen muchos sistemas de control que trabajan con seales analgicas. En algunos microcontroladores, dicha seal analgica puede generarse con la salida PWM debidamente filtrada. 7. Comparador analgico Algunos modelos de microcontroladores disponen internamente de un amplificador operacional que acta como comparador entre una seal fija de referencia y otra variable que se aplica por una de las patitas de la cpsula. La salida del comparador proporciona un nivel lgico 1 0, segn una seal sea mayor o menor que la otra. Tambin hay modelos de microcontroladores con un mdulo de tensin de referencia que proporciona diversas tensiones de referencia que se pueden aplicar en los comparadores (por ejemplo: AT80251 de Atmel). 8. Modulador de ancho de pulso o PWM Son circuitos que proporcionan en su salida impulsos de anchura variable, que se ofrecen al exterior a travs de las patitas del encapsulado. Permiten implementar salidas analgicas si son filtradas con un capacitor y una resistencia.

63

Adems, se logra comandar servos de aeromodelismo que son muy aplicados en robtica y generar control de ngulo para seales de alterna de 220 Vac con triacs. 9. Puertas de E/S digitales Todos los microcontroladores destinan algunas de sus patitas a soportar lneas de E/S digitales. Por lo general, estas lneas se agrupan de ocho en ocho, formando puertas. Las lneas digitales de las puertas pueden configurarse como Entrada o como Salida, cargando un 1 un 0 en el bit correspondiente de un registro destinado a su configuracin. 10. Puertas de comunicacin Con objeto de dotar al microcontrolador de la posibilidad de comunicarse con otros dispositivos externos, otros buses de microprocesadores, buses de sistemas, buses de redes y poder adaptarlos con otros elementos bajo otras normas y protocolos, algunos modelos disponen de recursos que permiten directamente esta tarea, entre los que destacan: UART, adaptador de comunicacin serie asncrona. USART, adaptador de comunicacin serie sncrona y asncrona. Puerta paralela esclava para poder conectarse con los buses de otros microprocesadores. USB Universal Serial Bus, moderno bus serie para los PC. Bus I 2 C, que es un interfaz serie de dos hilos desarrollado por Philips. CAN Controller Area Network para permitir la adaptacin con redes de conexionado multiplexado desarrollado conjuntamente por Bosch e Intel para el cableado de dispositivos en automviles (En EE.UU. se usa el J185O).

En nuestro microcontrolador encontramos caractersticas especiales que, en su mayora, no sern utilizadas para resolver nuestra problemtica, pero que es importante conocer para dimensionar el potencial de este pequeo componente electrnico. La nueva lnea HC908, basa su funcionamiento en la poderosa arquitectura del procesador central CPU08 (comn a toda la familia MC68HC08). Este procesador es del tipo arquitectura Von Neumann, con mapa lineal de memoria sin diferenciacin entre memoria de datos (RAM) y programa (FLASH), con lo cual no existen limitaciones en el uso de instrucciones, tanto para la memoria de datos, como para la de programa (No existen instrucciones distintas para Datos RAM o para Programa FLASH). Caractersticas especiales: Seleccin de oscilador a XTAL clsico, Pin oscilador externo (OSC1) u oscilador interno ajustable por soft. Conversor A/D de 8 bits, 4 canales multiplexados (tipo radiomtrico). Comunicacin asincrnica para implementar comunicacin del tipo RS232. Timer de 16 bits y 2 canales c/u con seleccin de modos Input Capture, Output Compare, y funciones PWM o salidas analgicas. 13 pines I/O de propsitos generales. COP watchdog reset.

INET / Fludica y controladores lgicos programables

64

INET / Fludica y controladores lgicos programables

LVI Low Voltage Inhibit con puntos de disparo seleccionables segn tensin de operacin (3V o 5V). Modos de bajo consumo Stop y Wait. Puertos con caractersticas para implementar interrupciones por teclado.

Herramientas para el desarrollo de aplicaciones Entre todos los dems, uno de los factores que ms importancia tiene a la hora de seleccionar un microcontrolador es el soporte tanto software como hardware de que dispone. Un buen conjunto de herramientas de desarrollo puede ser decisivo en la eleccin, ya que supone una ayuda inestimable en el desarrollo del proyecto. Las principales herramientas de ayuda al desarrollo de sistemas basados en microcontroladores son: Ensamblador. La programacin en lenguaje ensamblador puede resultar un tanto ardua para el principiante; pero, permite desarrollar programas muy eficientes, ya que otorga al programador el dominio absoluto del sistema. Los fabricantes suelen proporcionar el programa ensamblador de forma gratuita y, en cualquier caso, siempre se puede encontrar una versin gratuita para los microcontroladores ms populares. Compilador. La programacin en un lenguaje de alto nivel (como el C); permite disminuir el tiempo de desarrollo de un producto. No obstante, si no se programa con cuidado, el cdigo resultante puede ser mucho ms ineficiente que el programado en ensamblador. Las versiones ms potentes suelen ser muy caras; aunque, para los microcontroladores ms populares pueden encontrarse versiones demo limitadas e, incluso, compiladores gratuitos. Depuracin. Debido a que los microcontroladores van a controlar dispositivos fsicos, los desarrolladores necesitan herramientas que les permitan comprobar el buen funcionamiento del microcontrolador, cuando es conectado al resto de circuitos. Simulador. Son capaces de ejecutar en un PC programas realizados para el microcontrolador. Los simuladores permiten tener un control absoluto sobre la ejecucin de un programa, siendo ideales para su depuracin. Su gran inconveniente es que es difcil simular la entrada y salida de datos del microcontrolador. Tampoco cuentan con los posibles ruidos en las entradas; pero, al menos, permiten el paso fsico de la implementacin de un modo ms seguro y menos costoso, puesto que ahorramos en grabaciones de chips para la prueba in-situ. Placas de evaluacin. Se trata de pequeos sistemas con un microcontrolador ya montado, que suelen conectarse a un PC desde el que se cargan los programas que se ejecutan en el microcontrolador. Las placas suelen incluir visualizadores LCD, teclados, LED, fcil acceso a los pines de E/S, etc. El sistema operativo de la placa recibe el nombre de programa monitor. El programa monitor de algunas placas de evaluacin, aparte de permitir cargar programas y datos en la memoria del microcontrolador, posibilita realizar, en cualquier momento, ejecuciones paso a paso, monitorizar el estado del microcontrolador o modificar los valores almacenados en los registros o en la memoria.

65

Emulador en circuito. Se trata de un instrumento que se coloca entre el PC anfitrin y el zcalo de la tarjeta de circuito impreso donde se alojar el microcontrolador definitivo. El programa es ejecutado desde el PC; pero, para la tarjeta de aplicacin es como si lo hiciese el mismo microcontrolador que luego ir en el zcalo. Presenta en pantalla toda la informacin tal y como luego suceder cuando se coloque la cpsula.

Ejemplos de microcontroladores, usos y aplicaciones Gran parte de los fabricantes de circuitos integrados dispone de su propia lnea de microcontroladores. En la tabla reseamos los fabricantes ms destacados:

Fabricante
Intel Motorola Hitachi Philips SGS-Thomson (ST) Microchip National Semiconductor Zilog Texas Instruments Toshiba Infineon Dallas Nec Atmel

Modelo de C
8048, 8051, 80C196, 80186, 80188, 80386EX 6805, 68HC11, 68HC08, 68HC16, 683XX HD64180 Gama completa de clnicos del 8051 / 52 ST-62XX PICs (Familias 12, 14, 16, 17 y 18) COP8, derivados de 8051/ 8052 Z8, Z80 TMS370, derivados de 8051/ 8052 TLCS-870 C500 DS5000 78K AT91, AT89S8252, derivados de 8051/ 8052

Cada fabricante de microcontroladores oferta un elevado nmero de modelos diferentes, desde los ms sencillos hasta los ms poderosos, de forma que es posible seleccionar la capacidad de la memoria, el nmero de lneas de E/S, la cantidad y potencia de elementos auxiliares, la velocidad de funcionamiento, etc. En la figura se muestra el ranking de ventas en Europa de microcontroladores de 8 bits:

INET / Fludica y controladores lgicos programables

66

INET / Fludica y controladores lgicos programables

Se considera a Intel como el padre de los microcontroladores y al 8048 como el primer microcontrolador de 8 bits (fabricado por Intel en la dcada de los 70). Otra de las principales empresas del mundo de dispositivos programables es Motorola, que dispone de potentes microcontroladores como son las familias 68HC11 y 68HC08. Los microcontroladores PIC de la empresa americana Microchip se emplean en la actualidad cada vez ms, debido a su bajo coste, facilidad de uso, y la abundancia de informacin y herramientas de apoyo.

Microprocesador Computadores (ordenadores personales). Controladores buses industriales. Microcontrolador: Electrodomsticos. Tarjetas de control de acceso. Juguetes. Automacin. TY, audio y video. Mquinas y equipos industriales DSP procesador digital de seal: Reconocimiento de voz, procesamiento de seales acsticas. Mdem.

Usos y aplicaciones de microprocesadores:

67

Usos y aplicaciones de microcontroladores:

Usos y aplicaciones del DSP:

Los microcontroladores en uso ms comunes, por fabricante, son: Motorola. 8-bit: 68HC05, 68HC08, 68HC11. 16 bit: 68HC12, 68HC16. 32-bit: 683xx Microchip. 12-bit: Instruction PIC. 14-bit: Instruction PIC y HT8 PIC16F84. 16bit Instruction PIC Atmel. AVR Hitachi. Hitachi H8 Holtek. HT8 Intel. 8-bit: 8XC42, MCS51, 8xC251. 16-bit: MCS96, MXS296 National Semiconductor. COP8 NEC. 78K ST. ST 62, ST 7 Texas Instruments. TMS370 Zilog. Z8, Z86E02 Genrico. 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 Intel 8051 y Z80.

INET / Fludica y controladores lgicos programables

FICHA 3
77
INET / Fludica y controladores lgicos programables

Microcontroladores ms utilizados

79

Para resolver aplicaciones sencillas se precisan pocos recursos; en cambio, las aplicaciones grandes requieren recursos numerosos y potentes. Siguiendo esta filosofa, las empresas que desarrollan microcontroladores construyen diversos modelos de microcontroladores orientados a cubrir, de forma ptima, las necesidades de cada proyecto. As, hay disponibles microcontroladores sencillos y baratos para atender las aplicaciones simples, y otros complejos y ms costosos para las de mucha envergadura. En este captulo vamos a plantearle una resea de microcontroladores de prestaciones semejantes, de las empresas lderes en desarrollo de microcontroladores. Para esto, tomamos como ejemplo tres microcontroladores, tpicos de cada familia, que permiten ver su potencial y compararlos significativamente: MC68HC08 http://www.motorola.com; http:// www.mcu.motsps.com Intel 8051 PIC16F84 http://www.intel.com http://www.atmel.com http://www.microchip.com

Motorola 68HC908 (68HC908KX8) Para caracterizar este microcontrolador, abarcaremos: Arquitectura de ejecucin. Descripcin. Caractersticas. Mapa de memoria. Diagrama en bloques. Portfolio de la familia HC908.

El MC68HC908KX8 es un miembro de la familia de microcontroladores de 8 bit MCU M68HC08 de bajo costo y alta performance. Esta familia est basada en customerspecified integrated circuit CSIC design strategy. Todos los MCU de la familia usan la avanzada unidad central de procesos CPU08 y estn disponibles con una variedad de mdulos, tamaos de memoria y tipos de encapsulados. Arquitectura de ejecucin: El CPU 08 pertenece a la arquitectura del tipo Von Neumann clsica, caracterstica de la familia 68xx de Motorola y ampliamente utilizada en el mundo. En este tipo de arquitectura, existe un solo bus de datos, tanto para memoria de programas como para memoria de datos, lo que da origen a un mapa lineal de acceso a memoria; por consiguiente, no existen instrucciones especiales y diferentes para trabajar con datos o con cdigo de programa. De esta forma, todas las instrucciones son aplicables en cualquier parte del mapa de memoria, sin importar si se trabaja con datos o cdigo. Por esto, no es raro encontrar aplicaciones cuyos programas corren desde RAM como si estuvieran en Flash lo que no podra hacer una arquitectura Harvard clsica.

INET / Fludica y controladores lgicos programables

80

INET / Fludica y controladores lgicos programables

Descripcin:

Caractersticas: Cdigo objeto compatible con M6805, M146805 y familia M68HC05. Frecuencia interna de bus mxima: - 8 MHz at 5.0 V - 4 MHz at 3.0 V Oscilador interno, no requiere componentes externos: - Frecuencias de bus selectables y programables por software. - Capacidad de ajuste por software (Oscilador interno ajustable al 2% de error). - Clock monitor. - Posibilidad de optar por fuente de clock externo o cristal externo o resonador externo Oscilador a Xtal hasta 32Mhz. 8 Kbytes de memoria on-chip, in-circuit programmable FLASH. Seguridad de programa en flash. 192 bytes de RAM on-chip random-access memory RAM. Un timer multifuncin de 16-bit, 2-canales mdulo timer interface TIM para Icap, Ocomp, PWM. 4-canales, 8-bit, conversor analgico a digital ADC. Mdulo de comunicacin serial asincrnica SCI. 5-bit keyboard interrupt KBI Lneas de puerto para utilizarlas como teclado. 13 lneas de entrada/salida de puertos de propsito general, con 15-mA source/ 15-mA sink y con pullups programable, cuatro entradas analgicas, dos para comunicacin serial asincrnica. Reset por baja tensin (LVI) programable p/ 3V y 5V. Mdulo de temporizacin timebase module TBM con: - Clock prescaler con 8 selecciones de usuario de interrupciones peridicas. - Fuente de clock activo en modo stop para... Interrupcin externa con pullup (IRQ1). Sistema de proteccin: - Watchdog (COP) reset. - Deteccin de baja tensin con reset. - Deteccin de cdigo ilegal con reset. - Deteccin de direccin ilegal con reset. Internal power-up, circuito de reset sin pin exterior. Mapa de memoria: El mapa de memoria, al igual que en el resto de la familia, es del tipo lineal sin saltos de pgina y de acceso continuo. O sea, el usuario puede disponer de la memoria sin

81

direccionamientos previos especiales. De esta forma, pueden ejecutarse programas desde RAM o desde Flash sin limitaciones de algn tipo. Se observa que se mantiene la disposicin tpica de ubicar los registros de los puertos I/O y otros registros de uso general dentro de los primeros 256 bytes del mapa de memoria. Tambin aqu se encuentra la zona de memoria RAM que, en algunos modelos, supera los 256 Bytes del mapa de memoria. (Aquellos usuarios de las familias HC05 y HC11 encontrarn esta disposicin similar a la que usan habitualmente). A continuacin se observa una zona de espacio de memoria no-asignado (variable, segn el modelo de HC908); seguido a ste se halla implementada la memoria de programa Flash. En la zona final del mapa de memoria, tambin se encuentran como es costumbre en Motorola todos los vectores de interrupciones, incluyendo el vector de reset y, adems, los registros de distintos perifricos (SCI / SPI / TIMER / USB)

INET / Fludica y controladores lgicos programables

82

INET / Fludica y controladores lgicos programables

Diagrama en bloques:

Portfolio de la familia HC908: El portfolio de la familia HC908 de Motorola es amplio y cubre las principales necesidades en cuanto a costos y prestaciones. Los derivativos de uso general son: MC68HC908GP32 MC68HC908GT16 MC68HC908GT8 MC68HC908AB32 MC68HC908GR8 MC68HC908GR4 MC68HC908JL3 MC68HC908JL8 MC68HC908JK3 MC68HC908JK8 MC68HC908JK1

Los derivativos de pequeo tamao: MC68HC908KX2 MC68HC908KX8 MC68HC908RK2 MC68HC908RF2 MC68HC908QT1 MC68HC908QT2 MC68HC908QT4

83

MC68HC908QY1 MC68HC908QY2 MC68HC908QY4 Los derivativos especiales para control industrial (PWM / ADC de 10 bits, mdulo analgico, etc.) son: MC68HC908MR32 MC68HC908MR16 MC68HC908SR12 Los derivativos con USB Universal Serial Bus son: MC68HC908KH12 MC68HC908JB8 Los derivativos con CAN Controller Area Network son: MC68HC908AZ60A MC68HC908AZ32 MC68HC908GZ8

Intel 8051 (ATMEL AT89S8252) Para realizar la comparacin, utilizaremos un derivativo del 8051 de Intel que posee memoria flash y caractersticas semejantes a las presentadas en las otras CPU. Nos referimos a la CPU de ATMEL AT89S8252. Serie 89 Microcontrolador Flash El AT89LS8252 es un mC de baja potencia, rango de voltaje medio, alta performance CMOS 8-bit microcomputador con 8K bytes de memoria Flash programable y borrable, y 2K bytes de EEPROM. Este dispositivo es compatible con el estndar 80C51 set de instrucciones y pinout. El dispositivo puede ser reprogramado en el propio sistema mediante la interfaz SPI serial. Para conocerlo ms detalladamente, consideraremos: Descripcin. Caractersticas. Diagrama en bloques. Set de instrucciones. Mapa de memoria.

Descripcin:

INET / Fludica y controladores lgicos programables

84

INET / Fludica y controladores lgicos programables

Caractersticas: Compatible con los productos MCS-51 . Memoria de programa de 64 Kbytes. Memoria de datos de 64 Kbytes. 8K Bytes de memoria flash In-System Reprogramable Downloadable Flash Memory. 2K Bytes EEPROM. SPI Serial Interface para programacin y descarga de programas. Duracin: 1,000 ciclos de escritura / borrado. Rango de operacin 2.7V a 6V. Frecuencia de operacin: 0 Hz to 12 MHz (algunas versiones a 16 Mhz). 256 x 8 bit de RAM interna. 32 lneas programables de I/O. 3 timers / contadores de 16-bit . 9 fuentes de interrupcin. Programable UART. Comunicacin serial asincrnica. SPI Serial Interface. Comunicacin serial sincrnica. Modos de bajo consumo. Recuperacin por interrupcin de modo de bajo consumo. Programable Watchdog Timer. Doble puntero de datos.

85

Diagrama en bloques:

Set de instrucciones:
MNEMNICO DESCRIPCIN ARITHMETIC OPERATIONS ADD A,Rn ADD A,direct ADD A,@Ri ADD A,#data ADDC A,Rn ADDC A,direct ADDC A,@Ri ADDC A,#data SUBB A,Rn SUBB A,direct SUBB A,@Ri SUBB A,#data INC A INC Rn INC direct INC @Ri DEC A Add register to Accumulator Add direct byte to Accumulator Add indirect RAM to Accumulator Add immediate data to Accumulator Add register to Accumulator with carry Add direct byte to Accumulator with carry Add indirect RAM to Accumulator with carry Add immediate data to ACC with carry Subtract Register from ACC with borrow Subtract direct byte from ACC with borrow Subtract indirect RAM from ACC with borrow Subtract immediate data from ACC with borrow Increment Accumulator Increment register Increment direct byte Increment indirect RAM Decrement Accumulator 1 2 1 2 1 2 1 2 1 2 1 2 1 1 2 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 BYTE CICLOS DE CLOCK

INET / Fludica y controladores lgicos programables

86

INET / Fludica y controladores lgicos programables

MNEMNICO DEC Rn DEC direct DEC @Ri INC DPTR MUL AB DIV AB DA A

DESCRIPCIN Decrement Register Decrement direct byte Decrement indirect RAM Increment Data Pointer Multiply A and B Divide A by B Decimal Adjust Accumulator LOGICAL OPERATIONS

BYTE 1 2 1 1 1 1 1

CICLOS DE CLOCK 12 12 12 24 48 48 12

ANL A,Rn ANL A,direct ANL A,@Ri ANL A,#data ANL direct,A ANL direct,#data ORL A,Rn ORL A,direct ORL A,@Ri ORL A,#data ORL direct,A ORL direct,#data XRL A,Rn XRL A,direct XRL A,@Ri XRL A,#data XRL direct,A XRL direct,#data CLR A CPL A RL A RLC A RR A RRC A SWAP A

AND Register to Accumulator AND direct byte to Accumulator AND indirect RAM to Accumulator AND immediate data to Accumulator AND Accumulator to direct byte AND immediate data to direct byte OR register to Accumulator OR direct byte to Accumulator OR indirect RAM to Accumulator OR immediate data to Accumulator OR Accumulator to direct byte OR immediate data to direct byte Exclusive-OR register to Accumulator Exclusive-OR direct byte to Accumulator Exclusive-OR indirect RAM to Accumulator Exclusive-OR immediate data to Accumulator Exclusive-OR Accumulator to direct byte Exclusive-OR immediate data to direct byte Clear Accumulator Complement Accumulator Rotate Accumulator left Rotate Accumulator left through the carry Rotate Accumulator right Rotate Accumulator right through the carry Swap nibbles within the Accumulator DATA TRANSFER

1 2 1 2 2 3 1 2 1 2 2 3 1 2 1 2 2 3 1 1 1 1 1 1 1

12 12 12 12 12 24 12 12 12 12 12 24 12 12 12 12 12 24 12 12 12 12 12 12 12

MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#data MOV Rn,A MOV Rn,direct MOV Rn,#data MOV direct,A MOV direct,Rn MOV direct,direct MOV direct,@Ri MOV direct,#data MOV @Ri,A MOV @Ri,direct MOV @Ri,#data MOV DPTR,#data16 MOVC A,@A+DPTR MOVC A,@A+PC MOVX A,@Ri

Move register to Accumulator Move direct byte to Accumulator Move indirect RAM to Accumulator Move immediate data to Accumulator Move Accumulator to register Move direct byte to register Move immediate data to register Move Accumulator to direct byte Move register to direct byte Move direct byte to direct Move indirect RAM to direct byte Move immediate data to direct byte Move Accumulator to indirect RAM Move direct byte to indirect RAM Move immediate data to indirect RAM Load Data Pointer with a 16-bit constant Move Code byte relative to DPTR to A CC Move Code byte relative to PC to A CC Move external RAM (8-bit addr) to A CC

1 2 1 2 1 2 2 2 2 3 2 3 1 2 2 3 1 1 1

12 12 12 12 12 24 12 12 24 24 24 24 12 24 12 24 24 24 24

87

MNEMNICO MOVX A,@DPTR MOVX A,@Ri,A MOVX @DPTR,A PUSH direct POP direct XCH A,Rn XCH A,direct XCH A,@Ri XCHD A,@Ri

DESCRIPCIN Move external RAM (16-bit addr) to A CC Move A CC to external RAM (8-bit addr) Move A CC to external RAM (16-bit addr) Push direct byte onto stack Pop direct byte from stack Exchange register with Accumulator Exchange direct byte with Accumulator Exchange indirect RAM with Accumulator Exchange low-order digit indirect RAM with A CC BOOLEAN VARIABLE MANIPULATION

BYTE 1 1 1 2 2 1 2 1 1

CICLOS DE CLOCK 24 24 24 24 24 12 12 12 12

CLR C CLR bit SETB C SETB bit CPL C CPL bit ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit MOV C,bit MOV bit,C JC rel JNC rel JB rel JNB rel JBC bit,rel

Clear carry Clear direct bit Set carry Set direct bit Complement carry Complement direct bit AND direct bit to carry AND complement of direct bit to carry OR direct bit to carry OR complement of direct bit to carry Move direct bit to carry Move carry to direct bit Jump if carry is set Jump if carry not set Jump if direct bit is set Jump if direct bit is not set Jump if direct bit is set and clear bit PROGRAM BRANCHING

1 2 1 2 1 2 2 2 2 2 2 2 2 2 3 3 3

12 12 12 12 12 12 24 24 24 24 12 24 24 24 24 24 24

ACALL addr11 LCALL addr16 RET RETI AJMP addr11 LJMP addr16 SJMP rel JMP @A+DPTR JZ rel JNZ rel CJNE A,direct,rel CJNE A,#data,rel CJNE RN,#data,rel CJNE @Ri,#data,rel DJNZ Rn,rel DJNZ direct,rel NOP

Absolute subroutine call Long subroutine call Return from subroutine Return from interrupt Absolute jump Long jump Short jump (relative addr) Jump indirect relative to the DPTR Jump if Accumulator is zero Jump if Accumulator is not zero Compare direct byte to A CC and jump if not equal Compare immediate to A CC and jump if not equal Compare immediate to register and jump if not equal Compare immediate to indirect and jump if not equal Decrement register and jump if not zero Decrement direct byte and jump if not zero No operation

2 3 1 1 2 3 2 1 2 2 3 3 3 3 2 3 1

24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 12

Referencias: Rn: Register R7-R0 of the currently selected Register Bank. direct: 8-bit internal data locations address. This could be an Internal Data RAM location (0-127) or a SFR [i.e., I/O port, control register, status register, etc. (128-255)].

INET / Fludica y controladores lgicos programables

88

INET / Fludica y controladores lgicos programables

@Ri: 8-bit internal data RAM location (0-255) addressed indirectly through register R1 or R0. #data: 8-bit constant included in the instruction. #data 16: 16-bit constant included in the instruction. addr 16: 16-bit destination address. Used by LCALL and LJMP . A branch can be anywhere within the 64k-byte Program Memory address space. addr 11: 11-bit destination address. Used by ACALL and AJMP . The branch will be within the same 2k-byte page of program memory as the first byte of the following instruction. rel: Signed (twos complement) 8-bit offset byte. Used by SJMP and all conditional jumps. Range is 128 to +127 bytes relative to first byte of the following instruction. bit: Direct Addressed bit in Internal Data RAM or Special Function Register.

Mapa de memoria:

PSW: PROGRAM STATUS WORD BIT ADDRESSABLE CY CY AC F0 RS1 RS0 CV AC F0 RS1 RS0 OV P

PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2

Carry Flag Auxiliary Cary Flag Flag 0 available to the user for general purpose Register Bank selector bit 1 (SEE NOTE 1) Register Bank selector bit 0 (SEE NOTE 1) Overflow Flag

89

PSW.1 PSW.0

Usable as a general purpose Flag Parity Flag. Set/Cleaned by hardware each instruction cycle to indicate an odd/even number of 1 bus in the accumulator

Note: The value presented by RS0 and RS1 selects the corresponding register bank.
REGISTER BANK
0 1 2 3

RS1
0 0 1 1

RS0
0 1 0 1

ADDRESS
00H-07H 08H-0Fh 10H-17H 18H-1FH

Microchip PIC16F84 El procesador responde a la arquitectura RISC, que se identifica porque el juego de instrucciones se reduce a 35, la mayora de las cuales se ejecuta en un solo ciclo de reloj, excepto las instrucciones de salto que necesitan dos ciclos. Vamos a detenernos en: Caractersticas. Descripcin. Gamas de PIC. Repertorio de instrucciones. Diagrama en bloques. Memoria de programa. Memoria de datos. Mapa de memoria. Puertas de entrada y salida. Conexionado tpico.

Caractersticas: Parte de la memoria de datos es de tipo EEPROM (64 registros de 8 bits). Memoria de programa (1024 registros de 14 bits) de tipo flash, de iguales prestaciones que la EEPROM, pero con mejor rendimiento. 2 temporizadores: TMR0 y watchdog. El TMR0 puede actuar como temporizador o como contador. 4 posibles fuentes de interrupcin que pueden habilitarse o deshabilitarse por software. Reinicializacin del sistema o RESET por cinco causas distintas. Estado de funcionamiento en bajo consumo o Sleep, con un consumo de 40 mA. Frecuencia de trabajo mxima puede ser de 10 MHz. Descripcin:

INET / Fludica y controladores lgicos programables

90

INET / Fludica y controladores lgicos programables

Arquitectura. La arquitectura del procesador sigue el modelo Harvard. En esta arquitectura, la CPU se conecta de forma independiente, y con buses distintos con la memoria de instrucciones y con la de datos. Segmentacin. Se aplica la tcnica de segmentacin pipe-line en la ejecucin de las instrucciones. La segmentacin permite al procesador realizar, al mismo tiempo, la ejecucin de una instruccin y la bsqueda del cdigo de la siguiente. De esta forma, se puede ejecutar cada instruccin en un ciclo (un ciclo de instruccin equivale a cuatro ciclos de reloj). Formato de las instrucciones. El formato de todas las instrucciones es de la misma longitud. Todas las instrucciones de los microcontroladores de la gama baja tienen una longitud de 12 bits. Las de la gama media tienen 14 bits y ms las de la gama alta. Esta caracterstica es muy ventajosa en la optimizacin de la memoria de instrucciones, y facilita enormemente la construccin de ensambladores y compiladores. Juego de instrucciones. Se trata de un procesador RISC Computador de juego de instrucciones reducido. Los modelos de la gama baja disponen de un repertorio de 33 instrucciones, 35 los de la gama media y casi 60 los de la alta. Todas las instrucciones son ortogonales. Cualquier instruccin puede manejar cualquier elemento de la arquitectura como fuente o como destino. La arquitectura est basada en un banco de registros; esto significa que todos los objetos del sistema (puertas de E/S, temporizadores, posiciones de memoria, etc.) estn implementados fsicamente como registros. Existe diversidad de modelos de microcontroladores, con prestaciones y recursos diferentes. La gran variedad de modelos de microcontroladores PIC permite que el usuario pueda seleccionar el ms conveniente para su proyecto. Las herramientas de soporte son potentes y econmicas. La empresa Microchip y otras que utilizan los PIC ponen a disposicin de los usuarios numerosas herramientas para desarrollar hardware y software. Son muy abundantes los programadores, los simuladores software, los emuladores en tiempo real, ensambladores, compiladores C, intrpretes y compiladores BASIC, etc. Gamas de PIC: Una de las labores ms importantes del ingeniero de diseo es la eleccin del microcontrolador que mejor satisfaga las necesidades del proyecto con el mnimo presupuesto. Microchip dispone de varias familias de microcontroladores de 8 bits para adaptarse a las necesidades de la mayora de los clientes potenciales:

91

La gama enana: PIC12C(F)XXX de 8 patitas La gama baja o bsica: PIC16C5X con instrucciones de 12 bits La gama media: PIC16CXXX con instrucciones de 14 bits La gama alta: PIC17CXXX con instrucciones de 16 bits La gama mejorada: PIC18CXXX, (palabra de programa de 16 bits)

Gama enana. PIC12C(F)XXX de 8 patitas: Se trata de un grupo de PIC que ha acaparado la atencin del mercado. Su principal caracterstica es su reducido tamao, al disponer todos sus componentes de 8 patitas. Se alimenta con un voltaje de corriente continua comprendido entre 2,5 V y 5,5 V, y consume menos de 2 mA cuando trabaja a 5 V y 4 MHz. El formato de sus instrucciones puede ser de 12 o de 14 bits y su repertorio es de 33 o 35 instrucciones, respectivamente. El diagrama de conexionado de uno de estos PIC es:

Aunque los PIC enanos slo tienen 8 patitas, pueden destinar hasta 6 como lneas de E/S para los perifricos, porque disponen de un oscilador interno R-C. Son muy apreciados en las aplicaciones de control de personal, en sistemas de seguridad y en dispositivos de bajo consumo que gestionan receptores y transmisores de seales. Su pequeo tamao los hace ideales en muchos proyectos donde esta cualidad es fundamental.

Gama baja o bsica. PIC16C5X con instrucciones de 12 bits: Se trata de una serie de PIC de recursos limitados, pero con una de la mejores relaciones coste/prestaciones. Sus versiones estn encapsuladas con 18 y 28 patitas, y pueden alimentarse a partir de una tensin de 2,5 V, lo que las hace ideales en las aplicaciones que funcionan con pilas, teniendo en cuenta su bajo consumo (menos de 2 mA a 5 V y 4 MHz). Tiene un repertorio de 33 instrucciones, cuyo formato consta de 12 bits. No admite ningn tipo de interrupcin y la pila slo dispone de dos niveles. Su diagrama de conexionado:

INET / Fludica y controladores lgicos programables

92

INET / Fludica y controladores lgicos programables

1. 2. 3. 4. 5.

Sistema POR Power On Reset Perro guardin Watchdog o WDT Cdigo de proteccin Lneas de E/S de alta corriente Modo de reposo (Bajo consumo o sleep)

Conviene considerar dos restricciones importantes: La pila o stack slo dispone de dos niveles, lo que supone no poder encadenar ms de dos subrutinas. Los microcontroladores de la gama baja no admiten interrupciones.

Gama media. PIC16CXXX con instrucciones de 14 bits: Es la gama ms variada y completa de los PIC. Abarca modelos con encapsulado desde 18 patitas hasta 68, cubriendo varias opciones que integran abundantes perifricos. Dentro de esta gama se halla el PIC16X84 y sus variantes. Su diagrama de conexionado:

En esta gama, sus componentes aaden nuevas prestaciones a las que posean los de la gama baja, hacindolos ms adecuados en las aplicaciones complejas. Admiten interrupciones, poseen comparadores de magnitudes analgicas, convertidores A/D, puertos serie y diversos temporizadores. El repertorio de instrucciones es de 35, de 14 bits cada una y compatible con el de la gama baja. Sus distintos modelos contienen todos los recursos que se precisan en las aplicaciones de los microcontroladores de 8 bits. Tambin dispone de interrupciones y una pila de 8 niveles que permite el anidamiento de subrutinas.

Gama alta. PIC17CXXX con instrucciones de 16 bits: Se alcanzan las 58 instrucciones de 16 bits en el repertorio. Sus modelos disponen de un sistema de gestin de interrupciones vectorizadas muy potente. Tambin incluyen variados controladores de perifricos, puertas de comunicacin serie y paralelo con elementos externos, un multiplicador hardware de gran velocidad y mayores capacidades de memoria que alcanza los 8 k palabras en la memoria de instrucciones y 454 bytes en la memoria de datos. Quizs la caracterstica ms destacable de los componentes de esta gama es su arquitectura abierta, que consiste en la posibilidad de ampliacin del microcontrolador con elementos externos. Para este fin, las patitas sacan al exterior las lneas de los buses de datos, direcciones y control, a las que se conectan memorias o controladores de perifricos. Esta facultad obliga a estos componentes a tener un elevado nmero de patitas, comprendido entre 40 y 44. Esta filosofa de construccin del sistema es la que se empleaba en los microprocesadores y no suele ser una prctica habitual cuando se trata de microcontroladores, que slo se utilizan en aplicaciones muy especiales con grandes requerimientos.

93

Gama mejorada. PIC18CXXX, (palabra de programa de 16 bits): El conjunto de instrucciones se halla mejorado. Incluye deteccin de bajo voltaje programable (PLVD).
PIC18CXXX 8-Bit, arquitectura mejorada. PIC18F0XX PIC18FXX2 PIC18FX32 8-Pin, 8-Bit arquitectura mejorada FLASH con EEPROM, PLVD, BOR y PWM. Proteccin de cdigo, 256 EEPROM de datos, Deteccin de bajo voltaje programable (LVD), Phase-locked Loop (PLL), modo SLEEP , multiplicador 8x8 , PSP , In-Circuit Debugging 28/40-Pin FLASH alto rendimiento, modo de bajo consumo, EEPROM dede 256 datos, PLVD y A/D 10-bit. 28/40-Pin FLASH con USB y A/D 10-bit.

PIC18FXX31 28/40-Pin FLASH con EEPROM, PLVD, PBOR, A/D 10-bit y mdulo PWM. PIC18FXX5 PIC18FXX30 18/20-pin FLASH con EEPROM, PBOR, A/D 10-bit y mdulo PWM 3-fase.

Repertorio de instrucciones:
ABREVIATURA
PC

DESCRIPCIN
Contador de programa que direcciona la memoria de instrucciones. Tiene un tamao de 11 bits en la gama baja, de los cuales los 8 de menos peso configuran el registro PCL que ocupa el registro 0x02 del rea de datos. Cima de la pila, con 2 niveles en la gama baja y 8 en la media. Perro guardin Watchdog. Registro W, similar al acumulador. Suele ser un campo de 5 bits (fffff) que contiene la direccin del banco de registros que ocupa el banco 0 del rea de datos.Direcciona uno de esos registros. Bit del cdigo OP de la instruccin que selecciona el destino. Si d=0, el destino es W; si d=1, el destino es f. Destino (registro w o f). Bite Time Out del registro de estado. Bit Power Down del registro de estado. Suele ser un campo de 3 bits (bbb) que determinan la posicin de un bit dentro de un registro de 8 bit. Se trata, normalmente, de un campo de 8 bits (kkkkkkkk) que representa un dato inmediato. Tambin puede constar de 9 bits en las instrucciones de salto que cargan al PC. Valor indeterminado (puede ser un 0 o un 1). Para mantener la compatibilidad con las herramientas software de Microchip conviene hacer x=0. Nombre de la etiqueta. Opciones. Contenido. Se asigna a. Campo de bits de un registro. Pertenece al conjunto. Sealizador de cero en W. Pertenece al registro de estado. Sealizador de acarreo en el octavo bit del W. Pertenece al registro de estado. Sealizador de acarreo en el 4 bit del W. Pertenece al registro de estado. Trminos definidos por el usuario.

TOS WDT W F D Dest TO PD b k

x label [] () <> Z C DC Itlicas

INET / Fludica y controladores lgicos programables

94

INET / Fludica y controladores lgicos programables

El formato general de las instrucciones es:

Veamos el repertorio de instrucciones de la gama media: ADDLW Suma un literal Sintaxis: [label] ADDLW k Operandos: 0 k 255 Operacin: (W) + (k) (W) Flags afectados: C, DC, Z Cdigo OP: 11 111x kkkk kkkk Descripcin: Suma el contenido del registro W y k, guardando el resultado en W. Ejemplo: ADDLW 0xC2 Antes: W = 0x17 Despus: W = 0xD9 ANDLW W AND literal Sintaxis: [label] ANDLW k Operandos: 0 k 255 Operacin: (W) AND (k) (W) Flags afectados: Z Cdigo OP: 11 1001 kkkk kkkk Descripcin: Realiza la operacin lgica AND entre el contenido del registro W y k, guardando el resultado en W. Ejemplo: ANDLW 0xC2 Antes: W = 0x17 Despus: W = 0x02

95

ADDWF W + F Sintaxis: [label] ADDWF f,d Operandos: d [0,1], 0 f 127 Operacin: (W) + (f) (dest) Flags afectados: C, DC, Z Cdigo OP: 00 0111 dfff ffff Descripcin: Suma el contenido del registro W y el registro f. Si d es 0, el resultado se almacena en W; si d es 1, se almacena en f. Ejemplo: ADDWF REG,0 Antes: W = 0x17., REG = 0xC2 Despus: W = 0xD9, REG = 0xC2 BTFSS Test de bit y salto Sintaxis: [label] BTFSS f,b Operandos: , 0 b 7, 0 f 127 Operacin: Salto si (f<b>) = 1 Flags afectados: Ninguno Cdigo OP: 01 11bb bfff ffff Descripcin: Si el bit b del registro f es 1, se salta una instruccin y se contina con la ejecucin. En caso de salto, ocupar dos ciclos de reloj. Ejemplo: BTFSS REG,6 GOTO SI_ES_0 NO_ES_0 Instruccin SI_ES_0 Instruccin ANDWF W AND F Sintaxis: [label] ANDWF f,d Operandos: d [0,1], 0 f 127 Operacin: (W) AND (f) (dest) Flags afectados: Z Cdigo OP: 00 0101 dfff ffff Descripcin: Realiza la operacin lgica AND entre los registros W y f.Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f. Ejemplo: ANDWF REG,1 Antes: W = 0x17., REG = 0xC2 Despus: W = 0x17, REG = 0x02 BCF Borra un bit Sintaxis: [label] BCF f,b Operandos: 0 f 127, 0 b 7 Operacin: 0 (f<b>) Flags afectados: Ninguno Cdigo OP: 01 00bb bfff ffff Descripcin: Borra el bit b del registro f. Ejemplo: BCF REG,7 Antes: REG = 0xC7 Despus: REG = 0x47

INET / Fludica y controladores lgicos programables

96

INET / Fludica y controladores lgicos programables

BTFSC Test de bit y salto Sintaxis: [label] BTFSC f,b Operandos: 0 b 7, 0 f 127 Operacin: Salto si (f<b>) = 0 Flags afectados: Ninguno Cdigo OP: 01 10bb bfff ffff Descripcin: Si el bit b del registro f es 0, se salta una instruccin y se contina con la ejecucin. En caso de salto, ocupar dos ciclos de reloj. Ejemplo: BTFSC REG,6 GOTO NO_ES_0 SI_ES_0 Instruccin NO_ES_0 Instruccin BSF Activa un bit Sintaxis: [label] BSF f,b Operandos: 0 f 127, 0 b 7 Operacin: 1 (f<b>) Flags afectados: Ninguno Cdigo OP: 01 01bb bfff ffff Descripcin: Activa el bit b del registro f Ejemplo: BSF REG,7 Antes: REG = 0x0A Despus: REG = 0x8A CALL Salto a subrutina Sintaxis: [label] CALL k Operandos: 0 k 2047 Operacin: PC Pila; k PC Flags afectados: Ninguno Cdigo OP: 10 0kkk kkkk kkkk Descripcin: Salto a una subrutina. La parte baja de k se carga en PCL, y la alta en PCLATCH. Ocupa 2 ciclos de reloj. Ejemplo: ORIGEN CALL DESTINO Antes: PC = ORIGEN Despus: PC = DESTINO. CLRF Borra un registro Sintaxis: [label] CLRF f Operandos: 0 f 127 Operacin: 0x00 (f), 1 Z Flags afectados: Z Cdigo OP: 00 0001 1fff ffff Descripcin: El registro f se carga con 0x00. El flag Z se activa. Ejemplo: CLRF REG Antes: REG = 0x5A Despus: REG = 0x00, Z = 1

97

CLRW Borra el registro W Sintaxis: [label] CLRW Operandos: Ninguno Operacin: 0x00 W, 1 Z Flags afectados: Z Cdigo OP: 00 0001 0xxx xxxx Descripcin: El registro de trabajo W se carga con 0x00. El flag Z se activa. Ejemplo: CLRW Antes: W = 0x5A Despus: W = 0x00, Z = 1 CLRWDT Borra el WDT Sintaxis: [label] CLRWDT Operandos: Ninguno Operacin: 0x00 WDT, 1 /TO, 1 /PD Flags afectados: /TO, /PD Cdigo OP: 00 0000 0110 0100 Descripcin: Esta instruccin borra tanto el WDT como su preescaler. Los bits /TO y /PD del registro de estado se ponen a 1. Ejemplo: CLRWDT Despus: Contador WDT = 0, Preescales WDT = 0, /TO = 1, /PD = 1 INCFSZ Incremento y salto Sintaxis: [label] INCFSZ f,d Operandos: d [0,1], 0 f 127 Operacin: (f) + 1 (destination), ; Salto si Result = 0 Flags afectados: Ninguno Cdigo OP: 00 1111 dfff ffff Descripcin: Incrementa el contenido del registro f. Si d es 0, el resultado se almacena en W; si d es 1, se almacena en f. Si la resta es 0, salta la siguiente instruccin, en cuyo caso costara 2 ciclos. Ejemplo: INCFSC REG,0 GOTO NO_ES_0 SI_ES_0 Instruccin NO_ES_0 Salta instruccin anterior COMF Complemento de f Sintaxis: [label] COMF f,d Operandos: d [0,1], 0 f 127 Operacin ( complemento de f ) (destination) Flags afectados: Z Cdigo OP: 00 1001 dfff ffff Descripcin: El registro f es complementado. El flag Z se activa si el resultado es 0. Si d es 0, el resultado se almacena en W; si d es 1, se almacena en f. Ejemplo: COMF REG,0 Antes: REG = 0x13 Despus: REG = 0x13, W = 0XEC

INET / Fludica y controladores lgicos programables

98

INET / Fludica y controladores lgicos programables

INCF Incremento de f Sintaxis: [label] INCF f,d Operandos: d [0,1], 0 f 127 Operacin: (f ) + 1 (dest) Flags afectados: Z Cdigo OP: 00 1010 dfff ffff Descripcin: Incrementa en 1 el contenido de f. Si d es 0, el resultado se almacena en W; si d es 1, se almacena en f. Ejemplo: INCF CONT,1 Antes: CONT = 0xFF, Z = 0 Despus: CONT = 0x00, Z = 1 GOTO Salto incondicional Sintaxis: [label] GOTO k Operandos: 0 k 2047 Operacin: k PC <10:0> Flags afectados: Ninguno Cdigo OP: 10 1kkk kkkk kkkk Descripcin: Se trata de un salto incondicional. La parte baja de k se carga en PCL, y la alta en PCLATCH. Ocupa 2 ciclos de reloj. Ejemplo: ORIGEN GOTO DESTINO Antes: PC = ORIGEN Despus: PC = DESTINO DECFSZ Decremento y salto Sintaxis: [label] DECFSZ f,d Operandos: d [0,1], 0 f 127 Operacin: (f) - 1 (destination); Salto si Result = 0 Flags afectados: Ninguno Cdigo OP: 00 1011 dfff ffff Descripcin: Decrementa el contenido del registro f. Si d es 0, el resultado se almacena en W; si d es 1, se almacena en f. Si la resta es 0 salta la siguiente instruccin, en cuyo caso costara 2 ciclos. Ejemplo: DECFSC REG,0 GOTO NO_ES_0 SI_ES_0 Instruccin NO_ES_0 Salta instruccin anterior DECF Decremento de f Sintaxis: [label] DECF f,d Operandos: d [0,1], 0 f 127 Operacin: (f ) 1 (dest) Flags afectados: Z Cdigo OP: 00 0011 dfff ffff espusin: Decrementa en 1 el contenido de f. Si d es 0, el resultado se almacena en W; si d es 1, se almacena en f. Ejemplo: DECF CONT,1 Antes: CONT = 0x01, Z = 0 Despus: CONT = 0x00, Z = 1.

99

IORWF W AND F Sintaxis: [label] IORWF f,d Operandos: d [0,1], 0 f 127 Operacin: (W) OR (f) (dest) Flags afectados: Z Cdigo OP: 00 0100 dfff ffff Despus: Realiza la operacin lgica OR entre los registros W y f. Si d es 0, el resultado se almacena en W; si d es 1, se almacena en f. Ejemplo: IORWF REG,0 Antes: W = 0x91, REG = 0x13 Despus: W = 0x93, REG = 0x13 MOVLW Cargar literal en W Sintaxis: [label] MOVLW f Operandos: 0 f 255 Operacin: (k) (W) Flags afectados: Ninguno Cdigo OP: 11 00xx kkkk kkkk Descripcin: El literal k pasa al registro W. Ejemplo: MOVLW 0x5A Despus: REG = 0x4F, W = 0x5A IORLW W OR literal Sintaxis :[label] IORLW k Operandos: 0 k 255 Operacin : (W) OR (k) (W) Flags afectados: Z Cdigo OP: 11 1000 kkkk kkkk Descripcin: Se realiza la operacin lgica OR entre el contenido delregistro W y k, guardando el resultado en W. Ejemplo: IORLW 0x35 Antes: W = 0x9A Despus: W = 0xBF RETFIE Retorno de interrupcin Sintaxis: [label] RETFIE Operandos: Ninguno Operacin: 1 GIE; TOS PC Flags afectados: Ninguno Cdigo OP: 00 0000 0000 1001 Descripcin: El PC se carga con el contenido de la cima de la pila(TOS): direccin de retorno. Consume 2 ciclos. Las interrupciones vuelven a ser habilitadas.(GIE) Ejemplo: RETFIE Despus: PC = direccin de retornoGIE = 1

INET / Fludica y controladores lgicos programables

100

INET / Fludica y controladores lgicos programables

RETLW Retorno, carga W Sintaxis: [label] RETLW k Operandos: 0 k 255 Operacin: (k) (W); TOS PC Flags afectados: Ninguno Cdigo OP: 11 01xx kkkk kkkk Descripcin: El registro W se carga con la constante k. El PC se carga con el contenido de la cima de la pila (TOS) direccin de retorno. Consume 2 ciclos. Ejemplo: RETLW 0x37 Despus: PC = direccin de retornoW = 0x37 MOVWF Mover a f Sintaxis: [label] MOVWF f Operandos: 0 f 127 Operacin: W (f) Flags afectados: Ninguno Cdigo OP: 00 0000 1fff ffff Descripcin: El contenido del registro W pasa el registro f. Ejemplo: MOVWF REG,0 Antes: REG = 0xFF, W = 0x4F Despus: REG = 0x4F, W = 0x4F MOVF Mover a f Sintaxis: [label] MOVF f,d Operandos: d [0,1], 0 f 127 Operacin: (f) (dest) Flags afectados: Z Cdigo OP: 00 1000 dfff ffff Descripcin: El contenido del registro f se mueve al destino d. Si des 0, el resultado se almacena en W; si d es 1, se almacena en f. Permite verificar el registro, puesto que afecta a Z. Ejemplo: MOVF REG,0 Despus: W = REG NOP No operar Sintaxis: [label] NOP Operandos: Ninguno Operacin: No operar Flags afectados: Ninguno Cdigo OP: 00 0000 0xx0 0000 Descripcin: No realiza operacin alguna. En realidad consume un ciclo de instruccin sin hacer nada. Ejemplo: nop Despus: todo igual

101

RETURN Retorno de rutina Despus: [label] RETURN Operandos: Ninguno Despus: TOS PC Flags afectados: Ninguno Cdigo OP: 00 0000 0000 1000 Descripcin: El PC se carga con el contenido de la cima de la pila (TOS): direccin de retorno. Consume 2 ciclos. Ejemplo: RETURN Despus: PC = direccin de retorno. SLEEP Modo bajo consumo Sintaxis: [label] SLEEP Operandos: Ninguno Operacin: 0x00 WDT; 1 / TO, 0 WDT Preescaler, 0 / PD Flags afectados: / PD, / TO Cdigo OP: 00 0000 0110 0011 Descripcin: El bit de energa se pone a 0 y a 1 el de descanso. El WDT y su preescaler se borran. El micro para el oscilador, yendo al modo durmiente . Ejemplo: SLEEP Preescales WDT = 0, /TO = 1, /PD = 1 RLF Rota f a la izquierda Sintaxis: [label] RLF f,d Operandos: d [0,1], 0 f 127 Operacin: Rotacin a la izquierda Flags afectados: C Cdigo OP: 00 1101 dfff ffff Descripcin: El contenido de f se rota a la izquierda. El bit de mayor peso de f pasa al carry y el carry se coloca en el de menor peso. Si d es 0, el resultado se almacena en W; si d es 1, se almacena en f. Ejemplo: RLF REG,0 Antes: REG = 1110 0110, C = 0 Despus: REG = 1110 0110,W = 1100 1100, C = 1 RRF Rota f a la derecha Sintaxis: [label] RRF f,d Operandos: d [0,1], 0 f 127 Operacin: Rotacin a la derecha Flags afectados: C Cdigo OP: 00 1100 dfff ffff Descripcin: El contenido de f se rota a la derecha. El bit de menos peso de f pasa al carry y el carry se coloca en el de mayor peso. Si d es 0, el resultado se almacena en W; si d es 1, se almacena en f. Ejemplo: RRF REG,0 Antes: REG = 1110 0110, C = 1 Despus: REG = 1110 0110,W = 1111 0011, C = 0

INET / Fludica y controladores lgicos programables

102

INET / Fludica y controladores lgicos programables

SWAPF Intercambio de f Sintaxis: [label] SWAPF f,d Operandos: d [0,1], 0 f 127 Operacin: (f<3:0>) (destination<7:4>), (f<7:4>) (destination<3:0>) Flags afectados: Ninguno Cdigo OP: 00 1110 dfff ffff Descripcin: Los 4 bits de ms peso y los 4 de menos son intercambiados.Si d es 0, el resultado se almacena en W; si d es 1, se almacena en f. Ejemplo: SWAPF REG,0 Antes: REG = 0xA5 Despus: REG = 0xA5, W = 0x5A SUBWF Resta f W Sintaxis: [label] SUBWF f,d Operandos: d [0,1], 0 f 127 Operacin: ( f ) (W) (dest) Flags afectados: C, DC, Z Cdigo OP: 00 0010 dfff ffff Descripcin: Mediante el mtodo del complemento a dos, el contenido deW es restado al de f. Si d es 0, el resultado se almacena en W; si d es 1,se almacena en f. Ejemplos: SUBWF REG,1 Antes: REG = 0x03, W = 0x02, C = ? Despus: REG=0x01, W = 0x02, C=1, z=0 Antes: REG = 0x02, W = 0x02, C = ? Despus: REG=0x00, W =0x02, C= 1, z=1 Antes: REG= 0x01, W= 0x02, C= ? Despus: REG=0xFF, W=0x02, C= 0, z=0 (Resultado negativo) SUBLW Resta Literal W Sintaxis: [label] SUBLW k Operandos: 0 k 255 Operacin: ( k ) - (W) (W) Flags afectados: Z, C, DC Cdigo OP: 11 110x kkkk kkkk Descripcin: Mediante el mtodo del complemento a dos el contenido deW es restado al literal. El resultado se almacena en W. Ejemplos: SUBLW 0x02 Antes:W=1,C=?. Despus: W=1, C=1 Antes:W=2,C=?. Despus: W=0, C=1 Antes:W=3,C=?. Despus:W=FF,C=0 (El resultado es negativo)

103

XORWF W XOR F Sintaxis: [label] XORWF f,d Operandos: d [0,1], 0 f 127 Operacin: (W) XOR (f) (dest) Flags afectados: Z Cdigo OP: 00 0110 dfff ffff Descripcin: Realiza la operacin lgica XOR entre los registros W y f.Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f. Ejemplo: XORWF REG,0 Antes: W = 0xB5, REG = 0xAF Despus: W = 0xB5, REG = 0x1A XORLW W XOR literal Sintaxis: [label] XORLW k Operandos: 0 k 255 Operacin: (W) XOR (k) (W) Flags afectados: Z Cdigo OP: 11 1010 kkkk kkkk Descripcin: Se realiza la operacin lgica XOR entre el contenido delregistro W y k, guardando el resultado en W. Ejemplo: XORLW 0xAF. Antes: W=0xB5. Despus: W=0x1A

La gama media tiene un total de 35 instrucciones, cada una de las cuales ocupa 14 bits.

Diagrama en bloques:

INET / Fludica y controladores lgicos programables

104

INET / Fludica y controladores lgicos programables

Memoria de programa: La memoria de programa es del tipo flash. La memoria flash es una memoria no voltil, de bajo consumo que se puede escribir y borrar elctricamente. Es programable en el circuito como la EEPROM, pero tiene mayor densidad y es ms rpida. El PIC16F84 posee una memoria de programa de 1K palabras; es decir, permite hasta 1024 instrucciones de 14 bits cada una (de la 0000h a la 03FFh). En la posicin 0000h se encuentra el vector de reset. Cuando se produce un reset, el programa salta a dicha posicin (0000h). Memoria de datos: Se encuentra en dos zonas bien diferenciadas: Memoria tipo RAM (SRAM): Se divide en dos bancos o pginas de 128 registros de 8 bits cada uno, aunque slo los 80 primeros de la pgina 0 (del 00h al 4Fh) y los 12 primeros de la pgina 1 (80h al 8Bh) se utilicen en el PIC16F84. Los primeros 12 registros de cada pgina son especficos (SFR) y los restantes (68 de la pgina 0) son de propsito general (GPR). La memoria de datos del tipo EEPROM est compuesta por 64 registros de 8 bits cada uno. Este tipo de memoria es capaz de guardar la informacin ms de 40 aos. No podemos acceder directamente a estos registros; para ello hay que utilizar registros especficos (SFR). Mapa de memoria:

105

Puertas de entrada y salida: El microcontrolador PIC16F84 posee 13 patillas, cada una de las cuales se puede configurar como entrada o como salida. stas se encuentran distribuidas en dos puertos: el puerto A con cinco patillas desde RA0 a RA4 y el puerto B con ocho patillas desde RB0 a RB7. RA0- RA4. Son los terminales de entrada/salida del puerto A. Pueden suministrar una corriente por cada pin de 20mA.; pero, la suma de las cinco lneas del puerto A no puede exceder de 50 mA. La corriente absorbida por cada pin puede ser de 25 mA; pero, la suma de las cinco lneas no puede exceder de 80 mA. El pin RA4 tiene una doble funcin que se puede seleccionar por programa y es la de ser la entrada del contador/temporizador TMR0, es decir T0CK1. RB0-RB7. Son los terminales de entrada/salida del puerto B. Pueden suministrar una corriente por cada pin de 20 mA; pero, la suma de las ocho lneas no puede superar los 100 mA. La corriente absorbida por cada pin puede ser de 25 mA; pero, la suma de todas no puede exceder de 150 mA. El pin RB0 tiene una doble funcin seleccionable por programa, que es la de ser entrada de interrupcin externa (INT). Los pines del RB4 al RB7 tienen una doble funcin

INET / Fludica y controladores lgicos programables

106

INET / Fludica y controladores lgicos programables

que se puede seleccionar por programa, que es la de ser entrada de interrupcin interna por cambio de estado. Conexionado tpico: En los circuitos donde se utiliza el PIC16F84 es habitual emplear tensin de alimentacin de +5V y, como circuito de reloj externo, un cristal a una frecuencia de 4MHz. Con esta configuracin, el conexionado fijo para cualquier aplicacin es:

Las patillas que no estn conectadas son las dedicadas a transferir la informacin con los perifricos que utilice la aplicacin.

FICHA 4
107
INET / Fludica y controladores lgicos programables

Programacin de microcontroladores

109

Registros del microcontrolador Un elemento central de la seccin de control de la CPU es el decodificador de instrucciones. La CPU contiene cinco registros que se alojan dentro del microprocesador (no son parte del mapa de memoria): registro acumulador A registro ndice H:X registro contador de programa PC registro de cdigo de condicin CCR registro puntero a la pila stack pointer; SP.

Decodificador de instrucciones Cada cdigo de operacin es decodificado para determinar cuntos operandos se necesitan y qu secuencia de etapas se requiere para completar una instruccin. Al finalizar una instruccin, el prximo cdigo de operacin es ledo y

decodificado.

El conjunto de registros de la CPU es denominado, a veces, el modelo de programacin (Un programador experimentado puede aventurarnos la suerte de una computadora a partir de su modelo de programacin). Diferentes CPU poseen diferentes conjuntos de registros internos. Las diferencias son, principalmente, el nmero y el tamao de estos registros. Los registros de la CPU que encontramos en el MC68HC08 constituyen un relativamente sencillo conjunto de registros de la CPU, que resulta ser representativo de todos los tipos de registros de la CPU y puede usarse para explicar todo lo necesario sobre los conceptos fundamentales.

INET / Fludica y controladores lgicos programables

110

INET / Fludica y controladores lgicos programables

Aqu brindamos una breve descripcin de los registros del MC68HC08, como una introduccin a la arquitectura de la CPU en general1:

Registros de la CPU MC68HC08

El registro A, es un registro de almacenamiento temporario de 8 bits. Se lo llama acumulador ya que se usa a menudo para alojar uno de los operandos o el resultado de una operacin aritmtica. El acumulador es un registro de propsitos generales. l es directamente accesible a la CPU para operaciones no aritmticas. El acumulador es usado durante la ejecucin de un programa donde el contenido de alguna posicin de memoria es cargado en el acumulador. La instruccin almacenar, tambin causa que el contenido del acumulador sea almacenado en alguna posicin de memoria preestablecida. El registro ndice H:X es de 16 bits de longitud. El principal propsito de un registro ndice es apuntar a un rea en la memoria desde donde la CPU cargar (leer) o almacenar (escribir) informacin; adems, puede servir como un simple registro de almacenamiento temporario. Un registro ndice suele llamarse registro puntero. Est formado por una parte baja (el byte de menor peso) denominado X y una parte alta (el byte de mayor peso) denominado H. Estos registros se encuentran concatenados para formar un nico registro H:X. Esto permite direccionamientos indexados de hasta 64 Kbytes de espacio de memoria. Para conservar la compatibilidad con la familia HC05, en el registro ndice puede utilizarse slo la parte baja (X), en los distintos modos de direccionamiento, de igual forma que en sta. Slo se debe tener en cuenta que cuando en una instruccin con direccionamiento indexado se menciona el registro X, en realidad se est haciendo mencin al registro concatenado H:X de 16 bits de largo, por lo que deber ponerse a cero (forzar el valor $00) la parte superior del registro ndice, o sea H, para guardar total compatibilidad con la familia HC705. De esta forma, cuando se utilice el registro ndice, su contenido ser $00xx, donde xx contendr el valor del registro X propiamente dicho.
1

Veremos informacin ms detallada respecto a los registros del 68hC08 en el repertorio de instrucciones.

111

El registro contador de programa PC es usado por la CPU para no perder de vista la direccin de la prxima instruccin a ejecutar. Al resetear la CPU (encenderla), el PC es cargado con el contenido de un par de posiciones de memoria especfico, denominado vector de reset. El nmero de bits del PC coincide exactamente con el nmero de lneas del bus de direcciones. Esto determina el total espacio de memoria potencialmente disponible que puede ser accedido por la CPU. El contador de programa (PC), es de 16 bits de longitud; puede moverse entre $0000 y $FFFF. De esta forma, el PC puede moverse, tericamente (muchos MCU de la familia HC908, poseen memorias de programas inferiores a los 64Kbytes), por los 64 Kbytes de espacio de memoria. Durante el reset, el contador de programa (PC) se carga con la direccin contenida en el vector de reset que, para el MC68HC908, se encuentra en la posicin $FFFE y $FFFF. La direccin contenida en el vector es la direccin de la primera instruccin a ser ejecutada despus de salir del estado de RESET. El registro de cdigo de condicin CCR es de 8 bits; almacena indicadores de estado que reflejan al resultado de alguna operacin previa de la CPU. Las instrucciones de bifurcacin usan a los bits de estado para tomar simples decisiones respecto a su estado. El registro de cdigo de condicin contiene una mscara de interrupcin y seis indicadores de estado que reflejan el resultado de operaciones aritmticas y de otro tipo de la CPU. Las seis banderas son: desborde V; Overflow, semi acarreo H, mscara de interrupcin I, negativo N, cero Z y acarreo/prstamo C.

INET / Fludica y controladores lgicos programables

112

INET / Fludica y controladores lgicos programables

El puntero a la pila stack pointer; SP es usado como puntero a la prxima posicin disponible de una pila stack del tipo ltimo en ingresar / primero en salir LIFO; Last In, First Output . El stack puede tomarse como una pila de cartas, en la que cada carta almacena un solo byte de informacin. En el momento que se desee, la CPU puede poner una carta arriba de la pila o retirar una de arriba de la pila. No podemos retirar una carta del interior de la pila antes de haber retirado todas las cartas que tiene encima. La CPU sigue el comportamiento del stack con el SP . El SP apunta a la posicin de memoria libre, la que se considera es la direccin de la prxima carta disponible. Cuando la CPU agrega una porcin de dato en la pila, el dato es escrito en la posicin apuntada por el SP y el SP , luego, se decrementa para apuntar a la posicin de memoria previa. Cuando la CPU retira una porcin de dato de la pila, el SP se incrementa para apuntar a la posicin previamente usada y de ella se retira el dato. Al encender la CPU o bien luego de ejecutar la instruccin reset stack pointer RSP, el SP apunta a una especfica posicin de memoria en RAM. El puntero de pila es un registro de 16 bits que contiene la direccin del prximo lugar en la pila. Durante un reset, el puntero de pila es preseteado a $00FF. La instruccin reset stack pointer RSP, setea al byte menos significativo a $FF y no afecta al byte ms significativo. Esto se hace para mantener la compatibilidad con el modo de funcionamiento del puntero de pila de la familia HC05. El puntero de pila es decrementado cuando un dato es almacenado push dentro de la pila e incrementado cuando un dato es recuperado pull desde la pila. La localizacin de la pila es arbitraria y puede ser reubicada en cualquier parte de la memoria RAM. Moviendo el puntero fuera de la pgina 0 ($0000 a $00FF), libera el espacio del direccionamiento directo. Para una operacin correcta, el puntero de pila debe apuntar solamente posiciones de RAM aunque, por su longitud, pueda barrer todo el espacio de memoria del MCU. Gracias a esta caracterstica, en los modos de direccionamiento con el SP con 8 bits de offset y 16 bits de offset, el puntero de pila puede funcionar como un segundo registro ndice de 16 bits o bien para acceder a datos en la pila. El uso del SP como un segundo registro ndice es muy utilizado en los compiladores de lenguaje de alto nivel, como los compiladores C y otros.

Lenguaje assembler El procesador o CPU est diseado para ejecutar instrucciones y puede, en un pequeo lapso, reconocer y ejecutar miles de ellas. Cuando se escribe un programa en cualquier lenguaje, el producto final que el procesador puede entender es ese mismo programa traducido a lenguaje de mquina. Se llega al programa en lenguaje de mquina despus de una serie de traducciones que va sufriendo el programa fuente. De este modo, cada instruccin de un programa se transforma, finalmente, en una o ms instrucciones en lenguaje de mquina. En particular, cada instruccin de un programa escrito en un lenguaje de alto nivel
Instruccin Cada instruccin es una secuencia de unos y ceros residente en la memoria, que la CPU puede interpretar a travs de sus circuitos.

113

Lenguaje assembler Es un lenguaje de bajo nivel que representa, en realidad, el cdigo mnemotcnico del lenguaje de mquina; es decir que cada instruccin de assembler equivale a una instruccin en cdigo de mquina.

(C++, PASCAL, BASIC, etc.), equivale a varias instrucciones en lenguaje de mquina. Distinto es lo que ocurre con el lenguaje assembler. Para convertir un programa en lenguaje assembler a cdigo de mquina, se debe convertir cada instruccin del programa en assembler a su equivalente en cdigo de mquina. sta es una de las tareas efectuada por el compilador. El formato de una instruccin en cdigo de mquina incluye la suficiente informacin para identificar qu operacin es hecha, qu operando u operandos son usados, si la operacin que se efecta es sobre byte o sobre palabra, si la operacin incluye a operandos que estn ubicados en registros o en un registro y en una posicin de memoria, y, si uno de los operandos es una posicin de memoria, cmo es la generacin de su direccin. Toda esta informacin est codificada en los bits de cada instruccin en cdigo de mquina. Las instrucciones en cdigo de mquina del microcontrolador varan en el nmero de bytes que necesitan para ser codificadas.

Microinstruccin Es la unidad ms pequea que puede ser ejecutada y se corresponde directamente a los circuitos electrnicos de la CPU.

Algunas instrucciones pueden ser codificadas en un solo byte, como es el caso de operaciones simples con un registro; otras, en cambio, requieren dos o ms bytes. El mximo nmero de bytes que puede ocupar una instruccin es de 6. Cada instruccin de mquina es, en realidad, un conjunto de microinstrucciones. Un programa es, as, un conjunto ordenado de instrucciones que determina el procesado de los datos y la obtencin de los resultados. Cada procesador entiende un conjunto de instrucciones, a las cuales se llama instrucciones mquina; en este microcontrolador, cada una de ellas consta de 8 bits con los cuales se indica el cdigo de la operacin. Como sera muy complejo escribir las instrucciones, a cada una se la referencia con un mnemnico, que es un conjunto de letras que expresa, de forma resumida, la operacin que hace la instruccin. Al lenguaje que utiliza estos mnemnicos se lo llama ensamblador assembler. Las computadoras utilizan otros cdigos para dar instrucciones a la CPU. Este cdigo se denomina cdigo de operacin Las computadoras de distintos fabricantes usan diferentes repertorios de cdigos de operacin, previstos en la lgica cableada de la CPU. El repertorio set de instrucciones para una CPU es el conjunto de instrucciones que sta es capaz de realizar. Los cdigos de operacin son una representacin del set de instrucciones y los mnemnicos son otra2. Veamos... Un opcode tal como $4C es interpretado por la CPU, pero no es fcilmente manejable por una persona. Para resolver este problema, se usa un sistema de mnemnicos
2

Cdigo de operacin opcode Instruye a la CPU en la ejecucin de una muy especfica secuencia de etapas que debe seguirse para cumplir con la operacin propuesta.

An cuando difieren de una a otra, todas las computadoras digitales binarias realizan el mismo tipo de tareas bsicas de modo similar. La CPU en la MCU MC68HC08 puede entender alrededor de 119 instrucciones bsicas. Algunas de stas presentan mnimas variaciones, cada una de las cuales requiere su propio cdigo de operacin. El set de instrucciones del MC68HC08 incluye ms de 200 opcodes distintos. CPU08 posee una prebsqueda de cdigo, por lo que la velocidad final se ve multiplicada por cinco con respecto a las aplicaciones de CPU anteriores.

INET / Fludica y controladores lgicos programables

114

INET / Fludica y controladores lgicos programables

de instruccin equivalentes: El opcode $4C corresponde al mnemnico INCA, que se lee Incrementar el acumulador. Aunque contamos con la informacin impresa que muestra la relacin entre el mnemnico de cada instruccin y el opcode que la representa, sta es rara vez utilizada por el programador puesto que el proceso de traduccin es realizado automticamente por un programa de computadora especfico denominado ensamblador. Este programa es el que convierte los mnemnicos de las instrucciones de un programa en una lista de cdigos de mquina (cdigos de operacin e informacin adicional), para que puedan ser utilizados por la CPU. Un ingeniero desarrolla un grupo de instrucciones para una computadora en la forma de mnemnicos y, luego, utiliza un ensamblador para trasladar estas instrucciones a los opcodes que la CPU pueda entender. Las computadoras aceptan dos niveles lgicos (0 y 1), con los que trabaja en el sistema de numeracin binario. Las personas, por tener diez dedos en las manos, trabajamos con el sistema de numeracin decimal. Los nmeros hexadecimales utilizan diecisis smbolos: del 0 al 9 y de la A a la F. Cada dgito hexadecimal puede representarse mediante cuatro dgitos binarios. Existe una equivalencia entre decimal, binario y hexadecimal. Para poder distinguir un valor hexadecimal de otro decimal, colocaremos un smbolo $ antecediendo al hexadecimal o una H despus. El ASCII American Standard Code for Information Interchange3 es un cdigo ampliamente aceptado y nos permite representar tanto informacin alfanumrica como valores binarios. Cada instruccin o variante de una instruccin posee un nico cdigo de operacin (valor binario) que la CPU reconoce como un pedido para realizar una instruccin especfica. Las CPU de diferentes fabricantes poseen repertorios de cdigos de operacin distintos. Programar en lenguaje ensamblador es programar con las mismas instrucciones que, directamente, puede ejecutar el procesador. Hay lenguajes de alto nivel en los que una instruccin equivale a muchas instrucciones-mquina. Son ms fciles de utilizar, pero la utilizacin de los lenguajes ms cercanos a la mquina (ensamblador) representan un considerable ahorro de cdigo en la confeccin de los programas, lo que es muy importante dada la limitada capacidad de la memoria de instrucciones. Entre los lenguajes de alto nivel que se pueden emplear con estos microcontroladores se encuentran el lenguaje C y Basic. Los compiladores assembler compiler son programas que se encargan de traducir el programa escrito en lenguaje ensamblador (u otro lenguaje) a cdigo mquina, nico lenguaje que el microcontrolador es capaz de entender. Tras la compilacin, se graba este cdigo binario en la memoria de programa del microcontrolador o se realiza una simulacin con algn software de depuracin debugger.

El cdigo ASCII es una correlacin ampliamente aceptada entre caracteres alfanumricos y valores binarios especficos. En este cdigo, el nmero $41 corresponde a una letra A mayscula, el $20 al carcter espacio, etc. Este estndar hace posible las comunicaciones entre equipos hechos por diversos fabricantes, puesto que todas las mquinas utilizan el mismo cdigo.

115

Veamos cmo es todo el proceso con un ejemplo:

Imaginemos que quiero sumar dos nmeros que se encuentran en memoria RAM: dato1 en direccin ram $80 dato2 en direccin ram $81 resultado en direccin ram $82 y $83

Los pasos son: Edicin con el WinIDE4 entorno de trabajo que integra edicin, ensamblado y linkeado, es decir codificado nemotcnico en archivo de texto, traduccin a lenguaje de mquina y enlazado de libreras generando un archivo de extensin LST listado, ensamblado y codificado en formato texto y el cdigo ejecutable para el microcontrolador en un archivo de extensin S19, quedando listo para depurarlo con un simulador o grabar la EEPROM del microcontrolador para su utilizacin.

Edicin con Winide, editor de texto, compilador y linkeador


4 El entorno desarrollado por P&E es denominado WinIDE Windows Integrated Development Enviroment y es, bsicamente, un poderoso conjunto de herramientas reunidas bajo una plataforma Windows 3.x, Windows 95 / 98 / Me. El editor de texto que incorporan los ICS tienen todas las facilidades que le otorga el entorno Windows: copiado, pegado y otras herramientas similares al conocido Wordpad de Windows, lo que hace realmente agradable la tarea, a la hora de escribir programas de gran extensin. En cuanto al compilador CASM08, es una excelente herramienta que permite detectar errores de sintaxis, duplicacin de etiquetas, saltos fuera de rango y etiquetas sin correspondencia, cuando se compila el programa fuente. Las herramientas se encuentran en:

- http://www.pemicro.com/ - www.electrocomponentes.com.ar - www.mcu.motsps.com - http://www.motorola.com/mcu - http://www.motorola.com/semiconductors/ - http://www.pemicro.com/

INET / Fludica y controladores lgicos programables

116

INET / Fludica y controladores lgicos programables

Programa compilado y linkeado (ejemplo2.LST):


EJEMPLO2.asm Assembled with CASM08Z 1 ;Imaginemos que quiero sumar dos nmeros 2 ;que se encuentran en memoria RAM: dato1 en direccin ram $80 3 ;dato2 en direccin ram $81,resultado en direccin ram $82 Y $83 4 0000 5 ROM EQU $EC00 ;DEFINIMOS COMIENZO DE ROM 0000 6 RAM EQU $0080 ;DEFINIMOS COMIENZO DE RAM 0000 7 RESET EQU $FFFE ;DEFINIMOS ARRANQUE DEL UC 8 0080 9 ORG RAM 0080 10 DATO1 DS 1 ;RESERVAMOS 1 BYTE DE RAM 0081 11 DATO2 DS 1 ;RESERVAMOS 1 BYTE DE RAM 0082 12 RESULH DS 1 ;RESERVAMOS 2 BYTE DE RAM 0083 13 RESULL DS 1 ;PARA EL RESULTADO EN 16 BITS 14 EC00 15 ORG ROM 16 17 INICIO: EC00 [03] B680 18 LDA DATO1 ;CARGO UN DATO EN EL ACC. EC02 [03] BB81 19 ADD DATO2 ;LE SUMO EL OTRO DATO SIN CARRY EC04 [03] B783 20 STA RESULL ;COLOCO EL RESULTADO PARTE BAJA EC06 [03] 2403 21 BCC FIN ;SI NO HAY CARRY TERMINO EC08 [04] 6E0182 22 MOV #$01,RESULH ;SI HAY CARRY COLOCO 1 EN 23 FIN: ;RESULTADO PARTE ALTA EC0B [03] 20F3 24 BRA INICIO ;VUELVO A COMENZAR 25 FFFE 26 ORG RESET ;SE COLOCA DIRECCIN DE COMIENZO FFFE EC00 27 FDB INICIO ;DEL PROGRAMA EN VECTOR DE RESET 28 295

Tabla de smbolos: DATO1 DATO2 FIN INICIO RAM RESET RESULH RESULL 0080 0081 EC0B EC00 0080 FFFE 0082 0083

Cdigo mquina generado: S110EC00B680BB81B78324036E018220F32C S105FFFEEC0011 S9030000FC

A este programa faltara agregarle una lnea, al menos, para que no se active el COP dispositivo que resetea al microcontrolador si no es refrescado con una escritura de un registro especial. Para esto definimos el registro y colocamos la lnea siguiente - sta copctl en un lugar del programa, que se ejecute cclicamente: COPCTL EQU $FFFF Sta copctl Tambin se puede inhibir dicho funcionamiento colocando la siguiente instruccin y correspondiente definicin de registros: CONFIG1 EQU $001F ;Registros de configuracin CONFIG2 EQU $001E MOV #$01,CONFIG1 ;configuracin
5

117

En negrita figuran las instrucciones para el microcontrolador en cdigo mquina: cdigo de operacin. Por ejemplo, B6 80 que significa cargar en el registro acumulador dato de direccin $80 (LDA DATO1). Para compilar, pulsamos el primer cono y obtenemos el siguiente mensaje:

Para simulacin solamente o depuracin en circuito, pulsamos el siguiente icono:

Y elegimos simulacin, solamente.

INET / Fludica y controladores lgicos programables

118

INET / Fludica y controladores lgicos programables

Ventana de registros de la CPU Mapa de memoria Variables del usuario Seguimiento del programa Ingreso de comandos del operador

Mapa de memoria Variables del usuario Seguimiento del programa

Ingreso de valores iniciales

119

Reset

Stop Ejecucin continua Ejecutar una instruccin

Ejecucin de la primera instruccin

Prxima instruccin

Suma sin acarreo

INET / Fludica y controladores lgicos programables

120

INET / Fludica y controladores lgicos programables

Resultado de la suma

No hay acarreo entonces ir al fin

Ir al inicio

121

Otros valores donde la suma produjo acarreo

No salto y sumo acarreo

Vemos los resultados con acarreo y vuelvo al inicio a sumar

INET / Fludica y controladores lgicos programables

122

INET / Fludica y controladores lgicos programables

Estructura de un programa en assembler Veremos, a continuacin, los elementos que forman parte de un programa assembler, de modo de poder comenzar a escribir nuestros propios programas. Un programa fuente es una secuencia de lneas de sentencias fuente. Cada lnea de programa contiene slo una sentencia fuente. Un programa fuente contiene dos tipos de sentencias: instrucciones y directivas o pseudo-operaciones pseudo-ops. Las instrucciones son representaciones simblicas de las instrucciones de mquina; le indican al microprocesador qu operacin debe ejecutar. En cambio, las pseudo-ops son mandatos al compilador que le indican qu debe hacer con las instrucciones y datos. La diferencia entre instruccin y pseudo-op es un concepto fundamental para interpretar correctamente cmo es la estructura de un programa assembler: mientras que las instrucciones se aplican a tiempo de ejecucin, las pseudo-ops se aplican a tiempo de compilacin. Las instrucciones en assembler deben ser escritas cumpliendo ciertas reglas de sintaxis. Esto le permite al compilador poder interpretar cada uno de los elementos que forman parte de una lnea de programa. El formato general de una instruccin es el siguiente: [Rtulo:] Cdigo de Operacin [Operando] [;Comentario] De los cuatro campos indicados, slo el de cdigo de operacin es obligatorio. Los campos de rtulo y de comentario son opcionales. El campo de operando debe ir solamente en aquellas instrucciones que lo requieren (de lo contrario, debe ser omitido). Todos los campos de una misma instruccin deben estar siempre en la misma lnea de programa y separados entre s por, al menos, un blanco. Un ejemplo de instruccin usando los 4 campos, es el siguiente: start: MOV #$08,PB ;Inicializar puerto B En este ejemplo: start: es un rtulo, MOV es el cdigo de operacin, #$08,PB es el campo de operando y ; Inicializar puerto B es el comentario.

123

Rtulo: El rtulo o etiqueta es la asignacin de un nombre a una instruccin. Esto permite que otras instrucciones hagan referencia a la instruccin rotulada a travs de ese nombre. El rtulo se utiliza, fundamentalmente, para definir variables de datos que luego el programa va a utilizar para operar y para establecer puntos del programa donde se habr de bifurcar por alguna condicin. Resulta aconsejable: Hacer los nombres lo ms cortos posible, siempre que ello sea razonable. Por ejemplo, es preferible el rtulo KPH en vez de KILOMETROS_POR_HORA. Definir nombres sencillos para evitar errores de escritura. Estos errores ocurren, generalmente, cuando se definen rtulos que incluyen varias veces la misma letra, como XXX; tambin, cuando se utilizan caracteres que se pueden confundir: la letra O y el dgito 0, la letra I y el dgito 1, o la letra S y el dgito 5. Definir rtulos que no se confundan con otros. Por ejemplo, puede producirse confusin entre un rtulo XXXX y otro XXYX. Cdigo de operacin: Cada una de las operaciones bsicas que puede ejecutar el microcontrolador se identifica mediante un cdigo simblico de entre 2 y 6 letras, denominado cdigo de operacin. El cdigo de operacin debe seguir al campo de rtulo y estar separado de ste por, al menos, un blanco. Si no existe rtulo es decir, cuando el cdigo de operacin es el primer campo de una sentencia, se debe dejar, como mnimo, un blanco a la izquierda. Por ejemplo, los cdigos simblicos para las operaciones de suma, resta, multiplicacin y divisin son, respectivamente, ADD, SUB, MUL y DIV. El compilador utiliza una tabla interna para convertir cada cdigo simblico a su equivalente absoluto. Operando: El campo del operando le indica al microcontrolador dnde se encuentran los datos a ser procesados y cmo se accede a ellos. Una instruccin puede tener ninguno, uno o dos operandos, dependiendo del tipo de instruccin que sea. Cuando una operacin incluye dos operandos, stos deben estar separados entre s por una coma. En una instruccin con dos operandos, el primero es el operando fuente y el segundo es el operando destino6. Por ejemplo, en la instruccin MOV PA,PB, el contenido del puertoA (operando fuente) se copia en el puertoB (operando destino). Los operandos pueden ser de los siguientes tipos:
6

En Intel esta regla se invierte.

INET / Fludica y controladores lgicos programables

124

INET / Fludica y controladores lgicos programables

reg8 : registro de 8 bits reg16: registro de 16 bits reg : registro de 8 o 16 bits mem8 : byte (8 bits) mem16: palabra (16 bits) mem : byte o palabra (8 o 16 bits) val8 : valor inmediato que puede almacenarse en 8 bits val16: valor inmediato que puede almacenarse en 16 bits val : valor inmediato que puede almacenarse en 8 o 16 bits La manera en que se accede a los operandos es a travs de los modos de direccionamiento. Los modos de direccionamiento son medios para permitir especificar la ubicacin de los operandos; cada operando incluye, siempre, un modo de direccionamiento. En unas pginas ms describimos cada uno de los modos de direccionamiento provistos en el macro-assembler. Comentario: El campo de comentario es utilizado para describir la operacin efectuada por una instruccin. Siempre debe ir precedido por un punto y coma (;). En general, es muy til el uso del comentario, especialmente si se describe qu hace la instruccin en el contexto del programa. Por ejemplo: MOV #$00,PB ;Inicializa en cero el puertoB es mucho ms claro de entender, en el contexto de un programa, que: MOV #$00,PB ;Coloca 0 en PB En un programa fuente, se pueden incluir lneas solamente de comentarios. Esto permite, por ejemplo, describir un bloque completo de programa o bien servir de separador entre dos bloques. El compilador ignora los comentarios cuando genera el mdulo objeto; solamente en el listado del programa fuente, generado por el compilador, aparecen los comentarios. El uso de comentarios en un programa permite tener una importante documentacin acerca de l, que es muy til en caso de, por ejemplo, tener que modificarlo. A diferencia de las instrucciones, las pseudo-ops que se utilizan para fijar segmentos y procedimientos, definir smbolos, reservar memoria para almacenamiento temporario, etc. no generan cdigo objeto. La sintaxis usada para escribir sentencias con pseudo-ops es, esencialmente, la misma que la usada para escribir instrucciones. El formato general es el siguiente: [Rtulo:] Cdigo de Pseudo-op [Operando] [;Comentario]

125

El significado de los campos es el mismo que para las instrucciones. La nica diferencia de importancia es que, para una pseudo-op, el campo de operando puede incluir ms de 2 operados. Por ejemplo, la sentencia: DB 0FFH,0FFH,0FFH,0FFH,0FFH le indica al ensamblador que cargue, en las cinco posiciones siguientes de memoria, el valor hexadecimal FF. DS n or RMB n DB m or FCB m Define reserva de almacenamiento (Storage), n = nmero o etiqueta, reserva n bytes. Define almacenamiento de un valor de un Byte (storage), m = label, nmero o string. Strings genera cdigo ASCII para mltiple bytes. Nmeros y etiquetas define slo un byte por parmetro. Mltiples parmetros son seguidos y separados por comas. Define almacenamiento de un valor de dos bytes (Word storage), n=label, number o string. Los dos bytes estn dados por los bytes siguientes. Mltiples parmetros son seguidos y separados por comas Setea el origen del valor del numero o label n. Todas las lneas ensambladas luego de esta sentencia son ubicadas en memoria seguido a partir de n.

DW n or FDB n

label: EQU n

Ejemplo: VAR DS 1 DB 1,2,3,4,5 DW vector LBL1: EQU $100 ORG $800 ;ubica 1 byte de memora para variable VAR ;Setea un array de constantes en memoria ;coloca una constante tipo word vector en memoria ;Setea etiqueta LBL1 en el valor $100 ;ensamblar cdigo desde direccin $800

En un programa assembler se pueden escribir distintos tipos de constantes. La forma de indicar constantes es la siguiente: Binarias: Es una secuencia de unos y ceros, seguida por la letra Q. Por ejemplo, 10111010Q, o precedida por el smbolo % en algunos casos seguida por la letra B Decimales: Es una secuencia de los dgitos entre 0 y 9, con o sin la letra D o T. Por ejemplo, 129D o, bien 129, 129T o precedida por el smbolo !. Hexadecimales: Es una secuencia de los dgitos entre 0 y 9 y de las letras A hasta F, seguida por la letra H o precedida por el smbolo $. El primer carcter siempre debe ser un dgito entre 0 y 9, para permitir la diferenciacin de nmeros hexadecimales con nombres de variables y smbolos. Por ejemplo, 0E23H (el 0 como primer dgito indica que el nmero es E23H). De caracteres: Es una secuencia de letras, nmeros o smbolos encerrada entre apstrofes o comillas. El uso de ambos, apstrofes y comillas, brinda la facilidad de poder definir como constante un mensaje encerrado entre comillas. Por ejemplo, Dato incorrecto o Escriba FINAL para terminar el proceso. Las constantes numricas pueden ser, tambin, nmeros negativos. Si el nmero es un valor decimal, debe simplemente colocarse el signo menos delante de la constan-

INET / Fludica y controladores lgicos programables

126

INET / Fludica y controladores lgicos programables

te; en cambio, si es un valor binario, octal o hexadecimal, la constante debe ser escrita en notacin complemento a 2. Por ejemplo: 11100000B y 0E0H son las formas binaria y hexadecimal del decimal -32. 10010111Q = %10010111 = 97H = $97 db este es un string Base 02 10 16 Prefix % ! $ Suffix Q T H

En todos los ejemplos vistos hasta aqu, los operandos utilizados fueron registros, constantes, variables y rtulos. Pero, tambin, es posible utilizar expresiones como operadores. Operadores: Los operadores son modificadores que se usan en el campo de operando de las sentencias assembler (instrucciones y pseudo-ops); en una misma sentencia se pueden utilizar varios operadores y combinaciones de ellos. Por ejemplo, en la instruccin: MOV ADR,ram+2 el operando fuente es una expresin aritmtica. Es posible reconocer cinco diferentes tipos de operadores: 1. 2. 3. 4. 5. aritmticos, lgicos, relacionales, de retorno de valores y de atributos7.

Existe, adems, un conjunto de operadores para macros. Veamos cada uno de estos tipos.

1. Operadores aritmticos: Combinan operandos numricos y producen un resultado numrico. Los operadores aritmticos ms comunes son los de suma (+), resta (-), multiplicacin (*) y divisin (/). Por ejemplo: MOV ADR,ram+2
7

No vamos a ocuparnos de estos dos ltimos. Nos referimos a los operadores relacionales que son utilizados comnmente en ensambladores de microprocesadores de las PC y no en los ensambladores de los microcontroladores.

127

* / \ + < > % & | ^

multiplicacin divisin especial divisin adicin sustraccin rotar izquierda rotar derecha resto luego de divisin operador and operador or operador xor

2. Operadores lgicos: Los operadores lgicos son usados para manipular valores binarios. Sin embargo, los operadores lgicos son ms tiles para manejar bits individuales que grupos de bits. El operador AND es til para filtrar, enmascarar o extraer ciertos bits. Su funcionamiento consiste en establecer el bit de resultado en 1, por cada posicin en que los respectivos bits de los operandos sean 1; en cualquier otra combinacin de bits, AND fija el resultado en 0. Por ejemplo: 00110100B AND 11010111B produce el resultado 00010100B. El operador OR establece el bit de resultado en 1, por cada posicin de los operandos en la cual uno o ambos contienen un 1; en las posiciones en que ambos operandos tienen 0, el bit de resultado es 0. En el ejemplo anterior: 00110100B OR 11010111B el resultado ser 11110111B. El operador XOR OR exclusivo establece el bit de resultado en 1 por cada posicin de los operandos en la que ambos contengan bits distintos (un operando con 1 y el otro con 0); en las posiciones en que ambos operandos tienen el mismo bit (1 o 0), el bit de resultado es 0. En el mismo ejemplo: 00110100B XOR 11010111B el resultado ser 11100011. La siguiente es una tabla con los resultados de los operadores AND, OR y XOR para las distintas combinaciones de bits:
OP 1 0 0 1 1 OP 2 0 1 0 1 AND 0 0 0 1 OR 0 1 1 1 XOR 0 1 1 0

INET / Fludica y controladores lgicos programables

128

INET / Fludica y controladores lgicos programables

El ltimo operador lgico, NOT, trabaja slo con un operando y su efecto es el de invertir cada uno de los bits del operando. Por ejemplo: NOT 01101001B produce el resultado 10010110B.

El microcontrolador tiene, tambin, instrucciones lgicas AND, OR, XOR y NOT; pero, ellas no deben ser confundidas con los operadores lgicos. Mientras que las instrucciones lgicas actan en tiempo de ejecucin, los operadores lgicos actan a tiempo de ensamblado o compilacin.

3. Operadores relacionales: Los operadores relacionales comparan dos valores numricos o dos direcciones de memoria del mismo segmento, y producen un resultado numrico. Este resultado es: 0 si la comparacin es falsa o FF si la comparacin es verdadera. En general, los operadores relacionales aparecen integrando expresiones en combinacin con otros operadores. Su uso es bastante limitado, dado que slo producen dos posibles resultados. Los operadores relacionales son: EQ (igual), NE (no igual), LT (menor que), GT (mayor que), LE (menor o igual) y GE (mayor o igual).

No todos los ensambladores admiten este tipo de operadores.

Desarrollo de un programa en assembler El desarrollo de un programa en assembler requiere de una serie de pasos, desde que se escribe hasta que est en condiciones de ser ejecutado. Esos pasos son, en general, los mismos que deben efectuarse para cualquier programa en cualquier lenguaje: disearlo, escribirlo, compilarlo, linkeditarlo, depurarlo y ejecutarlo.

129

La escritura de un programa fuente se hace a travs de un programa editor, que permite escribir las lneas de sentencias fuente. Para ello, se utiliza cualquier editor de lneas o procesador de la palabra disponible para los PC, tal como Wordpad, Microsoft Word, EDLIN, etc. En particular, veremos aqu el Winide, que es el editor incluido con el sistema contenedor o entorno de trabajo del microcontrolador que utilizaremos. El procedimiento de compilacin (generacin del programa objeto) se efecta utilizando el compilador del assembler, llamado CASM08, o bien el compilador del macroassembler, El procedimiento de linkedicin o vinculacin (generacin del programa ejecutable) se efecta con el utilitario LINK, que, en este entorno, est integrado al ensamblador. La depuracin de un programa es un procedimiento que consiste en seguirlo durante su ejecucin para detectar y corregir todos los errores que se produzcan. En particular, usaremos el utilitario ICD08 in circuit debugger para ejecutar un programa compilado y linkeditado, de modo de observar los cambios que se producen en las distintas posiciones de memoria y para, eventualmente, efectuar las correcciones que sean necesarias. Un programa, ya compilado, linkeditado y depurado, se puede ejecutar a travs de un simulador o grabarlo en el propio chip. Para programas assembler, se utiliza la extensin .ASM. Un programa ejemplo: En un microcontrolador hay, usualmente, slo un programa, el que atiende una aplicacin especfica de control. La CPU MC68HC08 reconoce alrededor de 119 instrucciones diferentes; no obstante, ellas son representativas del conjunto de instrucciones de un sistema de computadora. Este modesto sistema de computadora resulta ser un buen modelo para aprender los fundamentos de la operacin de una computadora, puesto que es posible conocer con exactitud qu sucede en cada pequea etapa en que la CPU ejecuta un programa.

Imaginemos que queremos que lo que sucede en la entrada 0 del puerto B (pin5) sea copiado en la salida 4 del puerto A (pin15). Como ejemplo, pensemos que tenemos un interruptor en dicha entrada y que acciona una lmpara al presionarlo.

Nuestro microcontrolador tiene el siguiente pinout:

INET / Fludica y controladores lgicos programables

130

INET / Fludica y controladores lgicos programables

Veamos el diagrama de flujo de la tarea a realizar:

Veamos el circuito de una forma esquemtica (faltan transistores de salida para poder comandar la lmpara, as como resistencias para fijar potencial y limitar corriente):

As se vera el programa: Programa ejemplo 68HC908KX8 Copia el estado de pin5 (PB0) y lo coloca en pin15 (PA4)
PA PB DDRA DDRB CONFIG1 CONFIG2 RAM ROM RESET mem1 EQU EQU EQU EQU EQU EQU EQU EQU EQU ORG DS $0000 $0001 $0004 $0005 $001F $001E $0040 $EC00 $FFFE RAM 4 ;Puerto A ;Puerto B ;Registro de direccin de puerto A ;Registro de direccin de puerto B ;Registros de configuracin ;comienzo de la ram ;comienzo de la rom ;vector de reset ;reserva de memoria (no se utiliza; est a modo de ejemplo)

131

ORG inicio MOV CLR CLR MOV MOV tarea apago enciendo BSET BRA ORG DW END

ROM #$01,CONFIG1;configuracin PA PB #$00,DDRB ;puerto B en entrada #$FF,DDRA ;puerto A en salida

BRSET 0,PB,enciendo ;leo estado de PB0 pin5 si est ;en uno enciendo PA4 pin15 sino apago BCLR 4,PA BRA tarea 4,PA tarea RESET inicio ; Reset Vector

La directiva ORG seguida de una posicin de memoria, indica al ensamblador dnde debe situar el siguiente fragmento de cdigo. Tambin es recomendable incluirla en todo programa, como mnimo, antes de la primera instruccin (Vamos a describir los casos de direcciones especiales un poco ms adelante). Antes de comenzar a escribir instrucciones mquina, debemos definir la direccin de la memoria de programa a partir de la cual se desea comenzar a cargar el programa. Para ello se emplea la directiva ORG. En los C de la familia de Motorola HC08, el origen del programa se define de acuerdo a cunta ROM tiene; en nuestro caso, se pone en la direccin $EC00 porque es donde comienza a ejecutarse el programa despus de hacer un reset. Definimos el origen de la siguiente manera: ORG $EC00 ;Inicio de programa

La directiva END es imprescindible en algunos casos e indica al ensamblador el final del programa. El ; es empleado a modo de comando REM; es decir, se sobreentiende que lo que le sigue es un comentario. El ensamblador exige una cierta tabulacin mnima de sus distintos elementos. De este modo, la definicin de variables podr escribirse en la primera columna de cualquier lnea, mientras que las directivas e instrucciones debern ir en la segunda columna, como mnimo. Las tabulaciones caractersticas son las empleadas por nosotros, ya que, aunque no son imprescindibles, clarifican la lectura del programa. Las posiciones de la memoria de datos se utilizan para guardar operandos y resultados, adems de almacenar registros especiales. Para que al programador le sea ms sencillo confeccionar el programa, en lugar de hacer referencia a las posiciones de la memoria donde se encuentran los datos que va a emplear, a cada una de estas posiciones les asocia un nombre. La directiva EQU relaciona un nombre con la direccin que se asigna; as, el programador trabaja con nombres y el compilador traduce automticamente stos a las direcciones correspondientes. Por ejemplo, el registro que contiene la informacin del puerto A se encuentra en la direccin $0000, el puerto B en $0001, etc. Si queremos emplear nombres de variables para estas direcciones de memoria, escribimos:

INET / Fludica y controladores lgicos programables

132

INET / Fludica y controladores lgicos programables

PortA equ PuertoB equ

$0000 ;La etiqueta PortA est asociada a la direccin $0000 $0001 ;La etiqueta PuertoB est asociada a la direccin $0001

La directiva EQU se usa para asociar un valor binario con una etiqueta o label. El valor puede ser tanto un valor de 8 bits de longitud como una direccin de 16 bits. Esta directiva no genera un cdigo objeto. Durante el proceso de ensamblado, el ensamblador debe mantener una lista cruzada de referencia donde almacena el equivalente binario de cada etiqueta. Cuando una etiqueta aparece en el programa fuente, el ensamblador mira en esta tabla cruzada de referencia para encontrar el equivalente binario. Cada directiva EQU genera una entrada en la tabla cruzada de referencia. Un ensamblador lee el programa fuente dos veces: En la primera pasada, el ensamblador cuenta bytes del cdigo objeto e, internamente, construye la tabla cruzada de referencia. En la segunda pasada, el ensamblador genera un archivo listado y/o el archivo objeto S-record. Este arreglo de dos pasadas permite al programador generar etiquetas de referencia que son definidas ms tarde en el programa. Las directivas EQU deberan aparecer cerca del comienzo de un programa, antes de que las etiquetas all definidas sean usadas por otros pasos del programa. Si el ensamblador encuentra una etiqueta antes de que sta sea definida, no tiene eleccin, pero asume el peor caso de un valor de 16 bits de direccin, lo que causa que se use el modo de direccionamiento extendido en lugar de un modo ms eficiente como el de direccionamiento directo. En otros casos, el modo de direccionamiento indexado con 16 bits de offset, podra ser usado por el ensamblador, en lugar de un direccionamiento indexado de 8 bits o un indexado sin offset mucho ms eficiente. Los argumentos para la directiva formulario de constantes de un byte FCB o DB son etiquetas o nmeros separados por comas que pueden ser convertidos en un solo byte de datos. Cada byte especificado en una directiva FCB, genera un byte de cdigo de mquina en el archivo de cdigo objeto. Las directivas FCB se usan para definir constantes en un programa como, por ejemplo, una tabla de constantes, etc. Los argumentos para la directiva formulario de constantes de doble byte FDB o DW son etiquetas o nmeros separados por comas que pueden ser convertidos en valores de 16 bits de datos. Cada argumento especificado en una directiva FDB, genera dos bytes de cdigo de mquina en el archivo de cdigo objeto. La directiva reserva de memoria de un byte RMB o DS se usa para reservar un lugar (asignar un espacio) en RAM para las variables de un programa. La directiva RMB no genera cdigo objeto alguno; pero s una entrada en la tabla cruzada interna del ensamblador. Esta forma es preferible a la del uso de EQU en la asignacin de espacio en RAM, porque es muy comn, en el desarrollo de un programa, borrar o agregar variables sobre la marcha. Si se usaran directivas EQU, se debe tener en cuenta cambiar varias sentencias despus de remover una sola variable. Con la directiva RMB, el ensamblador asigna direcciones tanto como sean necesarias. Algunos ensambladores, tal como el P&E Microcomputers Systems, asumen que cualquier valor que no sea especficamente marcado ser interpretado como un nmero hexadecimal.

133

La idea es simplificar el ingreso de informacin numrica por la eliminacin de la necesidad del uso del smbolo $ antes de cada valor. Si se quiere que el ensamblador asuma que los valores no marcados sean valores decimales, es necesario usar la directiva $BASE. $BASE 10T Cambia la base numrica por default a decimal. El uso de las maysculas y minsculas en este cdigo obedece a una serie de reglas o normas de estilo, comunes entre los programadores en ensamblador que, aunque no son obligatorias, facilitan la lectura del cdigo fuente.

Un resumen de las reglas empleadas es el siguiente: Directivas del compilador en maysculas. Nombres de variables en minsculas. Mnemnicos (instrucciones) en maysculas. Programa bien tabulado.

Para poder comenzar de un lugar conocido, se debe hacer el reset de la computadora. El reset obliga a los sistemas perifricos incluidos en el chip y a la lgica de I/O, a ir a condiciones conocidas y carga al contador de programa con una direccin de inicio conocida. El usuario especifica la posicin de memoria de inicio deseada, colocando los bytes de mayor y menor peso de esta direccin en las posiciones de memoria del vector de reset ($FFFE y $FFFF en el MC68HC08). El Reset Vector (vector de Reset) debe especificarse siempre y es una buena prctica especificar tambin los vectores de interrupciones an si stos no se usaran. Un error muy comn en los programadores noveles (recin iniciados) es omitir los vectores de Reset e interrupciones, originando de esta forma que el ensamblador no los incluya en la memoria de programa del MCU. Este error genera que el MCU, al ser alimentado y salir de la etapa de Power On Reset inicializacin interna, busque el vector de Reset con un contenido frecuente de $0000 (memoria de programa virgen del MCU tipo OTP ROM ) o $FFFF (memoria de programa virgen del MCU tipo HC908 FLASH) que no son posiciones de memoria de programa vlidas y dan como resultado que el MCU quede en un loop errtico sin posibilidad de salir de l. Compilado, genera el listado siguiente nombre.LST y un archivo de extensin nombre. S19 que es el verdadero programa ejecutable que es enviado al microcontrolador cuando es programado:
1 * Programa ejemplo 68HC908KX8 2 * Copia estado de pin5 (PB0) y lo coloca en pin15 (PA4) 3 4 PA EQU $0000 ;Puerto A 5 PB EQU $0001 ;Puerto B 6 DDRA EQU $0004 ;Registro de direccin de puerto A 7 DDRB EQU $0005 ;Registro de direccin de puerto B 8 9 CONFIG1 EQU $001F ;Registros de configuracin 10 CONFIG2 EQU $001E 11 12 RAM EQU $0040 13 ROM EQU $EC00 14 RESET EQU $FFFE 15 16 17 ORG RAM 18 mem1 DS 4 ;reserva de memoria 19

0000 0000 0000 0000 0000 0000 0000 0000 0000 0040 0040

INET / Fludica y controladores lgicos programables

134

INET / Fludica y controladores lgicos programables

20 21 EC00 [04] 6E011F 22 EC03 [03] 3F00 23 EC05 [03] 3F01 24 EC07 [04] 6E0005 25 EC0A [04] 6EFF04 26 27 28 EC0D [05] 000104 29 30 EC10 [04] 1900 31 EC12 [03] 20F9 32 33 EC14 [04] 1800 34 EC16 [03] 20F5 35 36 FFFE 37 FFFE EC00 38 39

EC00

ORG inicio MOV CLR CLR MOV MOV tarea apago enciendo BSET BRA ORG DW END

ROM #$01,CONFIG1 PA PB #$00,DDRB #$FF,DDRA ;configuracin ;puerto B en entrada ;puerto A en salida

BRSET 0,PB,enciendo ;leo estado dePB0 pin5 si est ;en uno enciendo PA4 pin15 sino apago BCLR 4,PA BRA tarea 4,PA tarea RESET inicio ; Reset Vector

El cdigo ejecutable que es el que se graba en la memoria flash del microcontrolador, que viene dentro del archivo objeto S record, es el siguiente: S113EC006E011F3F003F016E00056EFF040001040A S10BEC10190020F9180020F599 S105FFFEEC0011 S9030000FC

Archivo de cdigo objeto Nosotros aprendimos que la computadora espera que el programa sea una serie de valores de 8 bits en memoria. Nada tan alejado de ello en su aspecto, ya que nuestro programa fue escrito para personas. La versin que la computadora necesita cargar en su memoria es llamada archivo de cdigo objeto Object Code File. Para los microcontroladores Motorola, la forma ms comn de archivo de cdigo objeto es el archivo S-Record8. El ensamblador puede generar en forma directa un archivo de listado y/o un archivo de cdigo objeto.

Un archivo S-record es un archivo de texto que puede ser ledo por un editor de texto o un procesador de palabras.

Usted no debera tratar de editar este tipo de archivo, porque la estructura y el contenido de este archivo son crticos para el buen funcionamiento. Cada lnea de un archivo S-record es un registro. Cada registro comienza con una S mayscula seguida por un nmero de cdigo desde 0 hasta 9. Los nicos nmeros de cdigo que son importantes para nosotros son S0, S1 y S9. S0 es un registro encabezado opcional header record que puede contener el nombre del archivo para beneficio del personal humano que necesita mantener dicho archivo.
8

Intelhex para Intel, Hex.

135

S1 es un registro que contiene los datos principales del programa. S9 se usa para marcar el fin de un archivo S-record. Para el trabajo que estamos haciendo con microcontroladores de 8 bits, la informacin en un registro S9 no es importante; pero, un registro S9 siempre es requerido en el fin de nuestros archivos S-record. Veamos cmo interpretarlo. Todos los nmeros en un archivo S-record estn en hexadecimal. Nosotros usaremos tipos de campos S0, S1 y S9 para nuestros archivos Srecord (1 campo). El largo del campo es el nmero de pares de dgitos hexadecimales en el registro, excluyendo los campos de tipo y longitud. El campo de direccin es una direccin de 16 bits donde el primer byte de dato ser almacenado en memoria. Cada par de dgitos hexadecimales en el campo de datos de cdigo de mquina representa un valor de dato de 8 bits a ser almacenado en sucesivas posiciones de memoria. El campo de Checksum es un valor de 8 bits que representa el complemento a uno de la suma de todos los bytes en el archivo S-record a excepcin de los campos de tipo y checksum respectivamente. Este Checksum se usa durante la carga de un archivo S-record para verificar que los datos estn completos y correctos en cada registro. S1 indica cdigo a ensamblar S9 indica fin de archivo S113EC006E011F3F003F016E00056EFF040001040A S10BEC10190020F9180020F599 S105FFFEEC0011 S9030000 FC Por supuesto que ste est expresado en hexadecimal para ser enviado a la memoria con un programador o para ser simulado por un software depurador . Direccin de comienzo Datos en hexadecimal (cdigo mquina del microcontrolador) Checksum Cantidad de Bytes por lnea en hexadecimal Observemos cmo se ve en el entorno de trabajo este programa. Primeramente, el editor, ensamblador y linkeador Winide para el MC68HC908KX8:

INET / Fludica y controladores lgicos programables

136

INET / Fludica y controladores lgicos programables

El entorno de simulacin donde se depura el programa dado por ICS08KX simulador en circuito:

En las prximas unidades de trabajo veremos cmo resolvemos nuestro problema con todas estas herramientas. Ya tenemos las pautas para editar nuestro programa, que resolver las situaciones planteadas; ahora, nos resta conocer las instrucciones posibles, y sus modos de utilizacin respecto al tratamiento de los datos y variables.

FICHA 5
143
INET / Fludica y controladores lgicos programables

Set de instrucciones

145

El poder de cualquier computadora radica en la habilidad para acceder a la memoria. Son los modos de direccionamiento de la CPU los que proveen esta capacidad. Los modos de direccionamiento difieren la manera en que una instruccin obtiene el dato requerido para su ejecucin. Debido a los diferentes modos de direccionamiento, una instruccin puede acceder al operando en una de diversas maneras. Cada variante de diferente modo de direccionamiento de una instruccin debe tener un nico cdigo de operacin de instruccin, de tal modo que las 90 instrucciones bsicas de la CPU del MC68HC08 requieren, aproximadamente, 250 cdigos de operacin de instruccin distintos.

Modos de direccionamiento La CPU del MC68HC08 usa siete modos de direccionamiento para hacer referencia a memoria: 1. 2. 3. 4. 5. inmediato, inherente, extendido, directo, indexado (sin desplazamiento, con desplazamiento de 8 bits, de 16 bits, con post incremento, o de stack), 6. memoria a memoria y 7. relativo. En los microcontroladores de la familia MC68HC08, todas las variables del programa y los registros de I/O caben en el rea de memoria que va de $0000 a $00FF; all, el modo de direccionamiento ms comnmente usado es el direccionamiento directo.
Sumario de modos de direccionamiento del 68HC908
Modo Inherente Inmediato Directo Extendido Indexado - no offset - 8 or 16 bit offset - post incremento - 8 bit offset w/post inc Stack Pointer - 8 or 16 bit offset Relativo (PC) Memoria a memoria - Inmediato a directo - Directo a directo - Indexado post inc a directo - Directo a indexado post inc MOV MOV MOV MOV #$00,$A0 $18,$F0 X+,$12 $12,X+ CLR BEQ 5,SP Here STA LDX ,X $200,X Ejemplo de uso PULX ADD SUB SUB #$10 $50 $200

CBEQ X+,There CBEQ $50,X+,There

Las novedades para esta CPU HC08 son: Manipulacin del stack (48 nuevas instrucciones). - Push / Pull directo de cualquier registro y suma inmediata al stack.

INET / Fludica y controladores lgicos programables

146

INET / Fludica y controladores lgicos programables

- Modo de direccionamiento relativo para el stack. - Variables temporales en el stack pueden ser manipuladas directamente, sin tener que ser cargadas, luego, en el acumulador. Extensin del index register (7 instrucciones nuevas); permite el uso total del index register de 16 Bits (H: X). Movimientos de memoria a memoria (4 nuevas instrucciones). Construcciones en Loop lazo (12 nuevas instrucciones). - Decrement and Branch. - Compare and Branch. Mejoras en aritmtica (1 nueva instruccin). - Multiplicacin mas rpida (5 ciclos de clks vs 11 en el HC05). - Divisin (16bits / 8 bits). Soporta operaciones BCD (2 nuevas instrucciones). - Decimal adjust accumulator and nibble swap accumulator. Soporta compiladores C (4 nuevas instrucciones). - Branch condicionales con operadores signados.

1. Modo de direccionamiento inmediato: En el modo de direccionamiento inmediato, el operando est contenido en el byte inmediato siguiente al cdigo de operacin. Este modo es usado cuando un valor o constante conocido al momento de escribir el programa, no cambia durante la ejecucin. Es una instruccin de dos bytes, uno para el cdigo de operacin y otro para el byte de dato inmediato. El smbolo # indica que el modo de direccionamiento es inmediato, ya que est sealando que el operando es un nmero, es decir el dato. Listado del programa de ejemplo: $E000 A6 02 LDA #$02 ;Cargar el acumulador con el valor inmediato Secuencia de ejecucin: $E000 $A6 [1] $E001 $02 [2] Explicacin: [1] La CPU lee el cdigo de operacin $A6. Carga del acumulador con el valor inmediato siguiente al cdigo de operacin. [2] La CPU lee el dato inmediato $02 de la posicin de memoria $E001 y lo carga en el acumulador.

147

La tabla incluye una lista de instrucciones que pueden usar el modo de direccionamiento inmediato:
MODO DE DIRECCIONAMIENTO INMEDIATO
INSTRUCCIN Add with Carry Add Logical AND Bit Test Memory with Accumulator Compare Accumulator with Memory Compare Index Register and Memory Exclusive Or Memory with Accumulator Load Accumulator from Memory Load Index Register from Memory Inclusive OR Subtract with Carry Subtract MNEMNICO ADC ADD AND BIT CMP CPX EOR LDA LDX ORA SBC SUB

2. Modo de direccionamiento inherente: En el modo de direccionamiento inherente, toda la informacin requerida para la operacin ya es implcitamente conocida por la CPU y no es necesario recuperar un operando exterior desde la memoria. Los operandos (si los hay) son slo los registros de la CPU o bien valores de datos almacenados en la pila. sta es una instruccin de un solo byte. Listado del programa de ejemplo: $E000 4C INCA ; Incrementar el acumulador Secuencia de ejecucin: $E000 $4C [1], [2] y [3] Explicacin: [1] La CPU lee el cdigo de operacin $4C. Incremento del acumulador. [2] La CPU le suma uno al valor actual del acumulador. [3] La CPU almacena el nuevo valor en el acumulador y ajusta las banderas del registro de cdigo de condicin, de ser necesario.

INET / Fludica y controladores lgicos programables

148

INET / Fludica y controladores lgicos programables

La tabla incluye una lista de instrucciones que pueden usar el modo de direccionamiento inherente:

MODO DE DIRECCIONAMIENTO INHERENTE


INSTRUCCIN Arithmetic Shift Left Arithmetic Shift Right Clear Carry Bit Clear Interrupt Mask Bit Clear Complement Decrement Increment Logical Shift Left Logical Shift Right Multiply Negate No Operation Rotate Left thru Carry Rotate Right thru Carry Reset Stack Pointer Return from Interrupt Return fron Subroutine Set Carry Bit Set Interrupt Mask Bit Enable IRQ. Stop Oscillator Software Interrupt Transfer Accumulator to Index Register Test for Negative or Zero Transfer Index Register to Accumulator Enable Interrupt. Halt Processor MNEMNICO ASLA, ASLX ASRA, ASRX CLC CLI CLRA, CLRX COMA, COMX DECA, DECX INCA, INCX LSLA, LSLX LSRA, LSRX MUL NEGA, NEGX NOP ROLA, ROLX RORA, RORX RSP RTI RTS SEC SEI STOP SWI TAX TSTA, TSTX TXA WAIT

3. Modo de direccionamiento extendido: En el modo de direccionamiento extendido, la direccin del operando est contenida en los dos bytes siguientes al cdigo de operacin. Este modo es usado para hacer referencia a cualquier posicin de memoria dentro del espacio de memoria del MCU, incluyendo I/O, RAM, ROM, EPROM, FLASH. sta es una instruccin de tres bytes, uno para el cdigo de operacin y otros dos para la direccin del operando. Listado del programa de ejemplo: $E000 C6 E3 65 LDA $E365 ;Cargar el acumulador desde una direccin extendida Secuencia de ejecucin: $E000 $C6 [1] $E001 $E3 [2] $E002 $65 [3] y [4] Explicacin: [1] La CPU lee el cdigo de operacin $C6, Carga del acumulador usando el modo de direccionamiento extendido.

149

[2] La CPU lee $03 de la posicin de memoria $E301. Este $E3 es interpretado como la mitad de mayor peso de una direccin. [3] La CPU lee $65 de la posicin de memoria $E302. Este $65 es interpretado como la mitad de menor peso de una direccin. [4] La CPU arma la direccin extendida completa $E365 con los dos valores previamente ledos. Esta direccin es colocada en el bus de direcciones; la CPU lee el valor del dato contenido en la posicin de memoria $E365 y lo carga en el acumulador.

La tabla incluye una lista de instrucciones que pueden usar el modo de direccionamiento extendido:
MODO DE DIRECCIONAMIENTO EXTENDIDO
INSTRUCCIN Add with Carry Add Logical AND Bit Test Memory with Accumulator Compare Accumulator with Memory Compare Index Register with Memory Exclusive OR Memory with Accumulator Jump Jump to Subroutine Load Accumulator from Memory Load Index Register from Memory Inclusive OR Subtract with Carry Store Accumulator in Memory Store Index Register in Memory Subtract MNEMNICO ADC ADD AND BIT CMP CPX EOR JMP JSR LDA LDX ORA SBC STA STX SUB

4. Modo de direccionamiento directo: El modo de direccionamiento directo es similar al extendido, excepto que la parte alta de la direccin del operando se asume de valor $00. De tal manera, slo es necesario incluir el byte de menos peso de la direccin del operando en la instruccin. Esta rea se denomina pgina directa o pgina 0 e incluye a los registros de RAM e I/O del interior del chip. Este modo es eficiente, tanto en economa de espacio de memoria de programa como en menor tiempo de ejecucin.

INET / Fludica y controladores lgicos programables

150

INET / Fludica y controladores lgicos programables

sta es una instruccin de dos bytes: uno para el cdigo de operacin y otro para el byte de menor peso de la direccin del operando. Listado del programa de ejemplo: $E000 B6 E0 LDA $E0 ;Cargar el acumulador desde una direccin de pgina directa Secuencia de ejecucin: $E000 $B6 [1] $E001 $E0 [2] y [3] Explicacin: [1] La CPU lee el cdigo de operacin $B6. Carga del acumulador usando el modo de direccionamiento directo. [2] La CPU lee $E0 de la posicin de memoria $E301. Este $E0 es interpretado como la mitad de menor peso de una direccin de pgina directa (desde $0000 hasta $00FF). [3] La CPU arma la direccin directa completa $00E0 asumiendo el valor del byte de mayor peso en $00, con el valor previamente ledo del byte de menor peso. Esta direccin es colocada en el bus de direcciones y la CPU lee el valor del dato contenido en la posicin de memoria $00E0 y lo carga en el acumulador.

La tabla incluye una lista de instrucciones que pueden usar el modo de direccionamiento directo:
MODO DE DIRECCIONAMIENTO DIRECTO
INSTRUCCIN Add with Carry Add Logical AND Arithmetic Shift Left Arithmetic Shift Right Clear Bit in Memory Bit Test Memory with Accumulator BIT Branch if Bit n is Clear Branch if Bit n is Set Set Bit in Memory Clear Compare Accumulator with Memory Complement Compare Index Register with Memory Decrement Exclusive OR Memory with Accumulator MNEMNICO ADC ADD AND ASL ASR BCLR BIT BRCLR BRSET BSET CLR CMP COM CPX DEC EOR

151

Increment Jump Jump to Subroutine Load Accumulator from Memory Load Index Register from Memory Logical Shift Left Logical Shift Right Negate Inclusive OR Rotate Left thru Carry Rotate Right thru Carry Subtract with Carry Store Accumulator in Memory Store Index Register in Memory Subtract Test for Negative or Zero

INC JMP JSR LDA LDX LSL LSR NEG ORA ROL ROR SBC STA STX SUB TST

5. Modo de direccionamiento indexado: En el modo de direccionamiento indexado, la direccin efectiva del operando es variable y depende de dos factores: el contenido actual del registro ndice H : X el desplazamiento contendido en el/los byte/s siguiente/s al cdigo de operacin. La CPU del MC68HC05 soporta tres tipos de direccionamientos indexados1: 5.1. Indexado sin desplazamiento. 5.2. Indexado con desplazamiento de 8 bits. 5.3. Indexado con desplazamiento de 16 bits. Un buen ensamblador usa el modo de direccionamiento indexado que requiere el menor nmero de bytes para expresar el desplazamiento. 5.1. Modo de direccionamiento indexado sin desplazamiento: En el modo de direccionamiento indexado sin desplazamiento, la direccin efectiva del operando para la instruccin est contenida en los 16 bits del registro ndice H:X. As, este modo de direccionamiento puede acceder a las primeras 256 posiciones de memoria (desde $0000 hasta $00FF). sta es una instruccin de un solo byte. Listado del programa de ejemplo: $E000 F6 LDA ,X ;Cargar el acumulador desde la direccin apuntada por H:X Secuencia de ejecucin: $E000 $F6 [1], [2] y [3] Explicacin: [1] La CPU lee el cdigo de operacin $F6. Carga del acumulador usando el modo de direccionamiento indexado sin desplazamiento.
1

Adems, la CPU 68HC08 incorpora algunos modos de direccionamiento nuevos.

INET / Fludica y controladores lgicos programables

152

INET / Fludica y controladores lgicos programables

[2] La CPU arma la direccin completa sumando $0000 al contenido del registro ndice de 16 bits H:X. [3] Esta direccin es colocada en el bus de direcciones y la CPU lee el valor del dato contenido en esa posicin de memoria y lo carga en el acumulador.

La tabla incluye una lista de instrucciones que pueden usar el modo de direccionamiento indexado sin desplazamiento y con desplazamiento de 8 bits.

MODO DE DIRECCIONAMIENTO INDEXADO SIN DESPLAZAMIENTO Y CON DESPLAZAMIENTO DE 8 BITS


INSTRUCCIN Add with Carry Add Logical AND Arithmetic Shift Left Arithmetic Shift Right Bit Test Memory with Accumulator BIT Clear Compare Accumulator with Memory Complement Compare Index Register with Memory Decrement Exclusive OR Memory with Accumulator Increment Jump Jump to Subroutine Load Accumulator from Memory Load Index Register from Memory Logical Shift Left Logical Shift Right Negate Inclusive OR Rotate Left thru Carry Rotate Right thru Carry Subtract with Carry Store Accumulator in Memory Store Index Register in Memory Subtract Test for Negative or Zero MNEMNICO ADC ADD AND ASL ASR BIT CLR CMP COM CPX DEC EOR INC JMP JSR LDA LDX LSL LSR NEG ORA ROL ROR SBC STA STX SUB TST

153

5.2. Modo de direccionamiento indexado con desplazamiento de 8 bits: En el modo de direccionamiento indexado con desplazamiento de 8 bits, la direccin efectiva es la suma del contenido del registro ndice de 16 bits H:X y el byte de desplazamiento siguiente al cdigo de operacin. El byte de desplazamiento suministrado en la instruccin es un nmero entero no signado de 8 bits. sta es una instruccin de dos bytes: uno para el cdigo de operacin y otro para el byte de desplazamiento. El contenido del registro ndice no es alterado. Listado del programa de ejemplo: $E000 E6 05 LDA 5,X ;Cargar el acumulador desde el 6 tem de la tabla apuntada por H:X Secuencia de ejecucin: $E000 $E6 [1] $E001 $05 [2], [3] y [4] Explicacin: [1] La CPU lee el cdigo de operacin $E6. Carga del acumulador usando el modo de direccionamiento indexado con desplazamiento de 8 bits. [2] La CPU lee $05 de la posicin de memoria $0301. Este $05 es interpretado como un desplazamiento de 8 bits. [3] La CPU arma la direccin completa sumando el valor antes ledo ($05) al contenido del registro ndice de 16 bits H:X. [4] Esta direccin es colocada en el bus de direcciones. La CPU lee el valor del dato contenido en esa posicin de memoria y lo carga en el acumulador.

5.3. Modo de direccionamiento indexado con desplazamiento de 16 bits: En el modo de direccionamiento indexado con desplazamiento de 16 bits, la direccin efectiva es la suma del contenido del registro ndice de 16 bits H:X y los dos bytes de desplazamiento siguientes al cdigo de operacin. El byte de desplazamiento suministrado en la instruccin es un nmero entero no signado de 16 bits. sta es una instruccin de tres bytes: uno para el cdigo de operacin y otros dos para los bytes de desplazamiento. El contenido del registro ndice no es alterado.

INET / Fludica y controladores lgicos programables

154

INET / Fludica y controladores lgicos programables

Listado del programa de ejemplo: $E000 D6 E3 77 LDA $E377,X

;Cargar el acumulador desde el X+1 tem de la tabla $E377

Secuencia de ejecucin: $E000 $D6 [1] $E001 $E3 [2] $E002 $77 [3], [4] y [5] Explicacin: [1] La CPU lee el cdigo de operacin $D6. Carga del acumulador usando el modo de direccionamiento indexado con desplazamiento de 16 bits. [2] La CPU lee $E3 de la posicin de memoria $E001. Este $E3 es interpretado como la mitad de mayor peso de una direccin base. [3] La CPU lee $77 de la posicin de memoria $E002. Este $77 es interpretado como la mitad de menor peso de una direccin base. [4] La CPU arma la direccin completa sumando la direccin base de 16 bits antes leda ($E077) al contenido del registro ndice de 16 bits H:X. [5] Esta direccin es colocada en el bus de direcciones. La CPU lee el valor del dato contenido en esa posicin de memoria y lo carga en el acumulador.

La tabla incluye una lista de instrucciones que pueden usar el modo de direccionamiento indexado con desplazamiento de 16 bits.
MODO DE DIRECCIONAMIENTO INDEXADO CON DESPLAZAMIENTO DE 16 BITS
INSTRUCCIN Add with Carry Add Logical AND Bit Test Memory with Accumulator BIT Compare Accumulator with Memory Compare Index Register with Memory Exclusive OR Memory with Accumulator Jump Jump to Subroutine Load Accumulator from Memory MNEMNICO ADC ADD AND BIT CMP CPX EOR JMP JSR LDA

155

Load Index Register from Memory Inclusive OR Subtract with Carry Store Accumulator in Memory Store Index Register in Memory Subtract

LDX ORA SBC STA STX SUB

Decamos que la CPU 68HC08 incorpora algunos modos nuevos de direccionamiento indexado. A continuacin los consideraremos: 5.4. Indexado usando el stack pointer y desplazamiento de 8 bits (8 bit de offset) 5.5. Indexado usando el stack pointer y desplazamiento de 16 bits (16 bit de offset) 5.6. Indexado no offset con post incremento 5.7. Indexado con 8 bits de offset con post incremento

5.4. Modo de direccionamiento indexado usando el stack pointer y desplazamiento de 8 bits (8 bit de offset): 8 bit offset no signado + Registro SP no signado = localizacin memoria. Registro SP no es afectado. 8 bit offset es el byte inmediatamente seguido al byte del opcode.

INET / Fludica y controladores lgicos programables

156

INET / Fludica y controladores lgicos programables

5.5. Modo de direccionamiento indexado usando el stack pointer y desplazamiento de 16 bits (16 bit de offset): 16 bit offset no signado + registro SP no signado = localizacin memoria Registro SP no es afectado. 16 bit offset son los dos bytes inmediatamente seguidos al opcode.

5.6. Modo de direccionamiento indexado no offset con post incremento: El registro ndice H: X contiene la direccin del operando. Despus que la direccin del operando es calculada, H: X es incrementado en 1. Ejemplo:
Loop Out . . . . CBEQ BRA X+, Out Loop

5.7. Modo de direccionamiento indexado con 8 bits de offset con post incremento: El registro ndice H: X contiene la direccin del operando. Despus que la direccin del operando es calculada, H: X es incrementado en 1.

157

Ejemplo: Loop Out . . . .

CBEQ

$50, X+, Out BRA Loop

6. Modo de direccionamiento memoria a memoria: Usado para mover informacin desde una locacin a otra: No usa/afecta registros del CPU; excepto cuando se usa direccionamiento indexado con post incremento. Ms eficiente que la combinacin Load/ Store. Pueden utilizarse con intrucciones MOV solamente: MOV Direccin Fuente, Direccin Destino El modo de direccionamiento memoria a memoria abarca cuatro variantes: 6.1. inmediato a directo, 6.2. directo a directo, 6.3. indexado a directo con post incremento, 6.4. directo a indexado con post incremento. 6.1. Modo de direccionamiento memoria a memoria, inmediato a directo: La fuente es un byte valor inmediato. El destino debe estar en los primeros 256 bytes de memoria. Ejemplo de uso: Inicializacin de variables o registros en RAM: MOV #$ AA,$ F0

INET / Fludica y controladores lgicos programables

158

INET / Fludica y controladores lgicos programables

6.2. Modo de direccionamiento memoria a memoria, directo a directo: La fuente debe estar en los primeros 256 bytes de memoria. El destino debe estar en los primeros 256 bytes de memoria. Ejemplo de uso: Movimiento de datos desde una pgina cero a otro lugar dentro de la misma pgina (mover datos dentro de la misma RAM): MOV $00,$ F0

6.3. Modo de direccionamiento memoria a memoria, indexado con post incremento a directo: La fuente puede ser cualquier lugar en el mapa de memoria. El destino debe estar en los primeros 256 bytes de memoria Ejemplo de uso: Escribir datos a un dispositivo de comunicacin desde un buffer en RAM o Flash: MOV X+,$18

6.4. Modo de direccionamiento memoria a memoria, directo a indexado con post incremento: La fuente debe estar en los primeros 256 bytes de memoria. El destino puede ser cualquier lugar en el mapa de memoria Ejemplo de uso: Escribir datos desde un dispositivo de comunicacin a un buffer en RAM o Flash: MOV $18, X+

159

7. Modo de direccionamiento relativo: El modo de direccionamiento relativo es usado solamente por las instrucciones de bifurcacin (saltos condicionados). Las instrucciones de bifurcacin salvo las bifurcaciones en su versin de manipulacin de bits generan dos bytes de cdigo de mquina: uno para el cdigo de operacin y otro para el desplazamiento relativo. Ya que es deseable bifurcar en cualquier sentido, el byte de desplazamiento es un nmero signado, expresado en complemento a dos, con un rango que va desde -128 hasta +127 bytes (respecto a la direccin de la instruccin inmediata posterior a la instruccin de bifurcacin). Si la condicin de salto es verdad, el contenido de los 8 bits del byte con signo siguiente al cdigo de operacin (desplazamiento) es sumado al contenido del contador de programa para formar la direccin de bifurcacin efectiva; de otro modo, el control contina bajo la instruccin inmediata posterior a la instruccin de bifurcacin. Un programador especifica el destino de una bifurcacin como una direccin absoluta (o rtulo que hace referencia a una direccin absoluta). El ensamblador calcula el desplazamiento relativo de 8 bits con signo, que es colocado en memoria luego del cdigo de operacin de la bifurcacin. Listado del programa de ejemplo: $E000 27 rr BEQ DEST ; Bifurcar a DEST si Z = 1 (si es igual o cero) Secuencia de ejecucin: $E000 $27 [1] $E001 $ [2] y [3] Explicacin: [1] La CPU lee el cdigo de operacin $27 - Bifurcar si Z = 1. El bit Z del registro de cdigo de condicin ser uno si el resultado de la operacin aritmtica o lgica previa fue cero. [2] La CPU lee $rr de la posicin de memoria $E001. Este $rr es interpretado como el valor de desplazamiento relativo. Despus de este ciclo, el contador de programa apunta al primer byte de la prxima instruccin ($E002). [3] Si el bit Z est en cero, nada sucede en este ciclo y el programa debe continuar con la prxima instruccin. Si el bit Z est en uno, la CPU armar la direccin completa sumando el desplazamiento signado antes ledo ($rr) al contenido del registro contador de programa para obtener la direccin destino de la bifurcacin. Esto provoca que la ejecucin del programa contine desde una nueva direccin (DEST).

INET / Fludica y controladores lgicos programables

160

INET / Fludica y controladores lgicos programables

BEQ LOOP

La tabla incluye una lista de instrucciones que pueden usar el modo de direccionamiento relativo.
MODO DE DIRECCIONAMIENTO RELATIVO
INSTRUCCIN Branch if Carry Clear Branch is Carry Set Branch if Equal Branch if Half Carry Clear Branch if Half Carry Set Branch if Higher Branch if Higher or Same Branch if Interrupt Line is High Branch if Interrupt Line is Low Branch if Lower Branch if Lower or Same Branch if Interrupt Mask is Clear Branch if Minus Branch if Interrupt Mask Bit is Set Branch if Not Equal Branch if Plus Branch Always Branch if Bit n is Clear Branch if Bit n is Set Branch Never Branch if Subroutine MNEMNICO BCC BCS BEQ BHCC BHCS BHI BHS BIH BIL BLO BLS BMC BMI BMS BNE BPL BRA BRCLR BRSET BRN BSR

161

Tabla de abreviaturas
Modo de direccionamiento Inherente Inmediato Directo (para evaluacin de bits Extendido Indexado (sin desplazamiento) Indexado (con desplazamiento de 8 bits) Indexado (con desplazamiento de 16 bits) Relativo EXT IX IX1 IX2 REL Abreviatura INH IMM DIR Operandos Ninguno ii dd dd rr hh ll ninguno ff ee ff rr

Clasificacin de las instrucciones El conjunto de instrucciones de un microprocesador define las operaciones bsicas que se pueden hacer en una computadora. El microcontrolador tiene un conjunto de 90 instrucciones. Para aprender el funcionamiento de cada una de ellas, vamos a clasificarlas en los siguientes grupos: 1. 2. 3. 4. 5. 6. 7. 8. Movimiento de datos Aritmticas Lgicas Manipulacin de bits Manipulacin de datos Control del programa Operaciones BCD Especiales

1. Instrucciones de movimiento de datos: Consideraremos, dentro de los movimientos o transferencias de datos: 1.1. Carga de registros de CPU 1.2. Almacenamiento de registros del CPU 1.3. Operaciones con el stack 1.4. Registro a registro 1.5. Memoria a memoria

1.1. Movimiento de datos. Carga de registros de CPU: Este grupo de instrucciones mueve datos entre registros y posiciones de memoria o puertas de E/S. La informacin que se transfiere es de 8 o de 16 bits.

INET / Fludica y controladores lgicos programables

162

INET / Fludica y controladores lgicos programables

SourceForms Description

Operation

Effect on CCR V H I N Z C

Address Bus Modes Cycles

LDA LDA LDA LDA LDA LDA LDA LDA LDX LDX LDX LDX LDX LDX LDX LDX

#opr opr opr opr,X opr,X ,X opr,SP opr,SP #opr opr opr opr,X opr,X ,X opr,SP opr,SP

Load Accumulator from Memory

A (M)

IMM DIR EXT IX2 IX1 IX SP1 SP2 IMM DIR EXT IX2 IX1 IX SP1 SP2 IMM DIR

2 3 4 4 3 2 4 5 2 3 4 4 3 2 4 5 3 4

Load Index Register X from Memory

X (M) 0 -

LDHX #opr LDHX opr

Load Index Register H:X from Memory

H:X (M:M + 1) 0 -

1.2. Movimiento de datos. Almacenamiento de registros del CPU:


SourceForms Description Operation Effect on CCR V H I N Z C
Address Bus Modes Cycles

STA STA STA STA STA STA STA STX STX STX STX STX STX STX

Store opr Accumulator opr opr,X in Memory opr,X M (A) ,X opr,SP opr,SP

DIR EXT IX2 IX1 IX SP1 SP2 DIR EXT IX2 IX1 IX SP1 SP2 DIR

3 4 4 3 2 4 5 3 4 4 3 2 4 5 4

opr Store Index opr Register X opr,X in Memory opr,X M (X) ,X opr,SP opr,SP
Store Index M:M+1 (H:X) Register H:X in Memory

STHX opr

indica que puede ser seteado o limpiado.

163

1.3. Movimiento de datos. Operaciones con el stack:


Effect on CCR V H I N Z C
Address Bus Modes Cycles

SourceForms Description

Operation Push (A); SP (SP - $01)

PSHA

Push Accumulator onto Stack Push Index Register H onto Stack Push Index Register X onto Stack Pull Accumulator from Stack Pull Index Register H from Stack Pull Index Register X from Stack

INH

PSHH

Push (H); SP (SP - $01)

INH

PSHX

Push (X); SP (SP - $01)

INH

PULA PULH

SP (SP + $01); Pull (A)

INH

SP (SP + $01); Pull (H)

INH

PULX

SP (SP + $01); Pull (X)

INH

1.4. Movimiento de datos. Registro a registro:


SourceForms Description Operation Effect on CCR V H I N Z C
Address Bus Modes Cycles

TAP

Transfer Accumulator to CCR Transfer CCR to Accumulator Transfer Accumulator to Index Register X Transfer Index Register X to Accumulator Transfer Index Register to SP Transfer SP to Index Register

CCR (A)

INH

TPA

A (CCR)

INH

TAX

X (A)

INH

TXA

A (X)

INH

TXS

SPH:SP (H:X) - $0001

INH

TSX

H:X (SPH:SP) + $0001

INH

INET / Fludica y controladores lgicos programables

164

INET / Fludica y controladores lgicos programables

1.5. Movimiento de datos. Memoria a memoria:


SourceForms Description Operation Effect on CCR V H I N Z C
Address Bus Modes Cycles

MOV opr,opr Move MOV opr,X+ MOV #opr,opr MOV X+,opr

(M) Destination (M) Source


H:X (H:X) + 1 in X + modes

DD DIX+ IMD IX+D

5 4 4 4

2. Instrucciones aritmticas: Consideraremos: 2.1. Adicin 2.2. Sustraccin 2.3. Multiplicacin y divisin 2.4. Incremento y decremento 2.5. Complemento y negacin 2.6. Comparacin 2.7. Miscelneas 2.1. Instrucciones aritmticas. Adicin: Este grupo de instrucciones permite realizar operaciones aritmticas con los distintos tipos de datos numricos soportados por el microprocesador. Recuerde usted que el mc maneja nmeros binarios de 8 bits, con o sin signo, y nmeros decimales de 8 bits, empaquetados (2 dgitos BCD por byte) o desempaquetados (1 dgito BCD por byte). Las instrucciones aritmticas afectan los cdigos de condicin o banderas de estado; en particular, modifican las banderas de acarreo (Cy), acarreo medio (HC), signo (S), cero (Z) y paridad (P).
Effect on CCR V H I N Z C
Address Bus Modes Cycles

SourceForms Description

Operation

ADD ADD ADD ADD ADD ADD ADD ADD ADC ADC ADC ADC ADC ADC ADC ADC

#opr opr opr opr,X opr,X ,X opr,SP opr,SP #opr opr opr opr,X opr,X ,X opr,SP opr,SP

Add Memory to Accumulator without Carry

A (A) + (M)

IMM DIR EXT IX2 IX1 IX SP1 SP2

2 3 4 4 3 2 4 5 2 3 4 4 3 2 4 5

Add Memory to Accumulator with Carry

A (A) + (M) + (C)

IMM DIR EXT IX2 IX1 IX SP1 SP2

165

2.2. Instrucciones aritmticas. Sustraccin:


SourceForms Description Operation Effect on CCR V H I N Z C
Address Bus Modes Cycles

SUB SUB SUB SUB SUB SUB SUB SUB SBC SBC SBC SBC SBC SBC SBC SBC

#opr opr opr opr,X opr,X ,X opr,SP opr,SP #opr opr opr opr,X opr,X ,X opr,SP opr,SP

Subtract Memory from Accumulator without Carry

A (A) - (M)

IMM DIR EXT IX2 IX1 IX SP1 SP2 IMM DIR EXT IX2 IX1 IX SP1 SP2

2 3 4 4 3 2 4 5 2 3 4 4 3 2 4 5

Subtract Memory from Accumulator with Carry

A (A) - (M) - (C)

2.3. Instrucciones aritmticas. Multiplicacin y divisin:


SourceForms Description Operation X:A (X) x (A) Effect on CCR V H I N Z C
Address Bus Modes Cycles

MUL

Unsigned 8-bit x 8-bit Multiply Unsigned 16-bit x 8bit MDivide

INH

DIV

A (H:A) (X) H Remainder

INH

MUL: X contendr el MSB del producto A contendr el LSB del producto DIV: H es el MSB del dividendo A es el LSB del dividendo X no es afectado

2.4. Instrucciones aritmticas. Incremento y decremento:


SourceForms Description Operation Effect on CCR V H I N Z C
Address Bus Modes Cycles

INC INCA INCX INC INC INC DEC DECA DECX DEC DEC DEC

opr opr,X ,X opr,SP opr opr,X ,X opr,SP

Increment

M (M) + 1 A (A) + 1 X (X) + 1 M (M) + 1 M (M) + 1 M (M) + 1 M (M) - 1 A (A) - 1 X (X) - 1 M (M) - 1 M (M) - 1 M (M) - 1

DIR INH INH IX1 IX SP1 DIR INH INH IX1 IX SP1

4 1 1 4 3 5 4 1 1 4 3 5

Decrement

INET / Fludica y controladores lgicos programables

166

INET / Fludica y controladores lgicos programables

2.5. Instrucciones aritmticas. Complemento y negacin:


Effect on CCR V H I N Z C
Address Bus Modes Cycles

SourceForms Description Complement COM opr (Ones COMA Complement) COMX COM opr,X COM ,X COM opr,SP

Operation

M $FF (M) A $FF (A) X $FF (X) M $FF (M) M $FF (M) M $FF (M) M $00 (M) A $00 (A) X $00 (X) M $00 (M) M $00 (M) M $00 (M)

DIR INH INH IX1 IX SP1 DIR INH INH IX1 IX SP1

4 1 1 4 3 5 4 1 1 4 3 5

NEG NEGA NEGX NEG NEG NEG

opr opr,X ,X opr,SP

Complement (Twos Complement)

Complemento a uno: operacin no signada. Complemento a dos: operacin signada.

2.6. Instrucciones aritmticas. Comparacin:


Effect on CCR V H I N Z C

SourceForms Description

Operation

Address Bus Modes Cycles

CMP CMP CMP CMP CMP CMP CMP CMP CPX CPX CPX CPX CPX CPX CPX CPX

#opr opr opr opr,X opr,X ,X opr,SP opr,SP #opr opr opr opr,X opr,X ,X opr,SP opr,SP

Compare Accumulator with Memory

A (M)

IMM DIR EXT IX2 IX1 IX SP1 SP2 IMM DIR EXT IX2 IX1 IX SP1 SP2 IMM DIr

2 3 4 4 3 2 4 5 2 3 4 4 3 2 4 5 3 4

Compare Index Register X with Memory

X (M)

CPHX #opr CPHX opr

Compare Index Register H:X with Memory

H:X ((M : M+1)

167

2.7. Instrucciones aritmticas. Miscelneas:


SourceForms Description Operation Effect on CCR V H I N Z C
Address Bus Modes Cycles

CLR CLRA CLRX CLRH CLR CLR CLR TST TSTA TSTX TST TST TST AIS

opr

Clear

opr,X ,X opr,SP opr opr,X ,X opr,SP #opr


Test for Negative or Zero)

M $00 A $00 X $00 H $00 M $00 M $00 M $00 (M) $00 (A) $00 (X) $00 (M) $00 (M) $00 (M) $00
SHP:SPL (SPH:SPL) + (16 << M)

DIR INH INH INH IX1 IX SP1 DIR INH INH IX1 IX SP1 IMM

3 1 1 1 3 2 4 3 1 1 3 2 4 2

Add Immediate Value (Signed) to Stack Pointer Add Immediate Value (Signed) to Index Register H:X

AIX

#opr

H:X (H:X) + (16 << M)

IMM

Ejemplos:

Calcula checksum de 8 bits para una tabla de 512 bytes


TABLE ORG RMB ORG $0100 512 $8000 ;Inicializacin del contador de byte ;Inicializa el checksum Table,X #-1 ;Calcula el checksum ;Decrementa el contador de bytes ;Tabla de datos

LDHX #511 CLRA ADDLOOP ADD AIX

INET / Fludica y controladores lgicos programables

168

INET / Fludica y controladores lgicos programables

Con DECX no hay carry desde X a travs de H. AIX si !!!. CPHX #0 PHX setea bits CCR . BPL ADDLOOP ;en Loop si no se complet ;termin ?

3. Instrucciones lgicas As como las instrucciones aritmticas siempre asumen que sus operandos representan informacin numrica, las instrucciones de manipulacin de bits tratan a los operandos como simples cadenas de bits, lo que permite operar tanto con bits individuales como con mscaras o patrones de bits dentro de registros o de posiciones de memoria. Las instrucciones lgicas trabajan con mscaras de bits segn las reglas de la lgica formal. Se utilizan, bsicamente, para la existencia de determinados bits dentro de la mscara. La siguiente tabla muestra la representacin hexadecimal de las distintas mscaras para cada bit individual:
BIT 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 HEXA 0001 0002 0004 0008 0010 0020 0040 0080 0100 0200 0400 0800 1000 2000 4000 8000
Effect on CCR V H I N Z C

SourceForms Description

Operation

Address Bus Modes Cycles

AND AND AND AND AND AND AND AND ORA ORA ORA ORA ORA ORA ORA ORA EOR EOR EOR EOR EOR EOR EOR EOR

#opr opr opr opr,X opr,X ,X opr,SP opr,SP #opr opr opr opr,X opr,X ,X opr,SP opr,SP #opr opr opr opr,X opr,X ,X opr,SP opr,SP

Logical AND Accumulator and Memory

A (A) & (M)

IMM DIR EXT IX2 IX1 IX SP1 SP2 IMM DIR EXT IX2 IX1 IX SP1 SP2 IMM DIR EXT IX2 IX1 IX SP1 SP2

2 3 4 4 3 2 4 5 2 3 4 4 3 2 4 5 2 3 4 4 3 2 4 5

Inclusive OR Accumulator and Memory

A (A) | (M)

Exclusive OR Accumulator and Memory

A (A) (M)

169

4. Instrucciones de manipulacin de bits:


SourceForms Description Operation Effect on CCR V H
-

C
-

Address Bus Modes Cycles

BIT BIT BIT BIT BIT BIT BIT BIT

#opr opr opr opr,X opr,X ,X opr,SP opr,SP

Bit test AND Accumulator with Memory

A & (M)

IMM DIR EXT IX2 IX1 IX SP1 SP2 DIR DIR INH INH INH

2 3 4 4 3 2 4 5 4 4 1 1 2

BCLR n,opr BSET n,opr CLC SEC CLI

Clear bit n in Memory Set bit n in Memory Clear Carry Bit Set Carry Bit Clear Interrupt Mask Set Interrupt Mask

Mn 0 Mn 1 C0 C1 I0

0 1 -

SEI

O1

INH

5. Instrucciones de manipulacin de datos: 5.1. Manipulacin de datos. Shifts: Estas instrucciones efectan el desplazamiento de bits, en cantidades de 8 bits (byte) o de 16 bits (palabra), a la izquierda o a la derecha, tantas posiciones como se indiquen. Las posiciones desplazadas se completan con bits en cero.
SourceForms Description Operation Effect on CCR V H I N Z C
Address Bus Modes Cycles

ASL ASLA ASLX ASL ASL ASL ASR ASRA ASRX ASR ASR ASR LSL LSLA LSLX LSL LSL LSL LSR LSRA LSRX LSR LSR LSR

opr opr,X ,X opr,SP opr opr,X ,X opr,SP opr opr,X ,X opr,SP opr opr,X ,X opr,SP

Arithmetic Shift Left (Same as LSL)

DIR INH INH IX1 IX SP1 DIR INH INH IX1 IX SP1 DIR INH INH IX1 IX SP1 0 DIR INH INH IX1 IX SP1

4 1 1 4 3 5 4 1 1 4 3 5 4 1 1 4 3 5 4 1 1 4 3 5

Arithmetic Shift Right

Logical Shift Left

Logical Shift Right

INET / Fludica y controladores lgicos programables

170

INET / Fludica y controladores lgicos programables

5.2. Manipulacin de datos. Rotaciones: Las instrucciones de rotacin de bits son similares a las de corrimiento de bits; pero, a diferencia de stas, preservan los bits desplazados ingresndolos al operando por el lado opuesto al del corrimiento.
SourceForms Description Operation Effect on CCR V H I N Z C
Address Bus Modes Cycles

ROL ROLA ROLX ROL ROL ROL ROR RORA RORX ROR ROR ROR

opr opr,X ,X opr,SP opr opr,X ,X opr,SP

Rotate Left through Carry

DIR INH INH IX1 IX SP1 DIR INH INH IX1 IX SP1

4 1 1 4 3 5 4 1 1 4 3 5

Rotate Right through Carry

6. Instruccin de control de programa: 6.1. Control de programa. Branches saltos: Las instrucciones de transferencia de control permiten alterar la secuencia normal de ejecucin de un programa. Al igual que en los dems lenguajes, las instrucciones de un programa assembler se escriben secuencialmente, es decir una a continuacin de la otra. Asimismo, se ejecutan en forma secuencial: el registro de instruccin siempre apunta a la prxima instruccin, siendo sta la que est a continuacin en memoria. Sin embargo, muchas veces, por una determinada condicin, es necesario alterar esa secuencia normal de ejecucin de instrucciones, para continuar la ejecucin del programa en otra parte. Para esto es que se utilizan las instrucciones de transferencia de control o de bifurcacin. Hay dos tipos de instrucciones de transferencia de control: De transferencia de control incondicional. De transferencia de control condicional. En el primer caso, la transferencia de control se hace siempre, sin testear ninguna condicin. En el segundo caso, las instrucciones permiten bifurcar a una parte del programa, siempre que se verifique una condicin; si la condicin no se satisface, el programa contina la secuencia normal de ejecucin. La condicin puede ser el resultado de una operacin aritmtica o lgica; pero, siempre se testea basndose en la presencia o ausencia de ciertas condiciones en las banderas de estado.

171

SourceForms Description

Operation

Effect on CCR V H I N Z C

Address

Bus

BCC

rel

PC (PC) + $0002 + Branch if condition is rel ? cc true (CC,CS, HCC, HCS, HI, HS, LO, LS, PL, MI, EQ,Ne, GE, GT, LE, LT, IH,IL,MC,MS)
Branch Always Branch Never

REL

BRA BRN

rel rel

PC (PC) + $0002 + rel PC (PC) + $0002

REL REL

3 3

BRCLR n,opr,rel BRSET n,opr,rel

Branch if Bit PC (PC) + $0003 + n in Memory rel ? Mn = 0 is Clear Branch If Bit PC (PC) + $0003 + n in Memory rel ? Mn = 1 is Set

DIR/REL

DIR/REL

6.2. Control de programa. Saltos especiales:


SourceForms Description Operation Effect on CCR V H I N Z C
Address Bus Modes Cycles

CBEQ opr, rel CBEQ A #opr, rel CBEQ X #opr, rel CBEQ X+,rel CBEQ opr,X+,rel CBEQ opr,SP ,rel DBNZ opr, rel DBNZ A opr, rel DBNZ X opr, rel DBNZ X+,rel DBNZ opr,X+,rel DBNZ opr,SP ,rel

Compare and Branch if Equal

PC (PC) + $0003 + rel ? (A) (M) = $00 PC (PC) + $0003 + rel ? (A) (M) = $00 PC (PC) + $0003 + rel ? (X) (M) = $00 PC (PC) + $0003 + rel ? (A) (M) = $00 PC (PC) + $0002 + rel ? (A) (M) = $00 PC (PC) + $0004 + rel ? (A) (M) = $00
M (M) - $01PC = (PC) + $0003 + rel ? (M) 0 A (A) - $01PC = (PC) + $0002 + rel ? (A) 0 X (X) - $01PC = (PC) + $0002 + rel ? (X) 0 M (M) - $01PC = (PC) + $0002 + rel ? (M) 0 M (M) - $01PC = (PC) + $0003 + rel ? (M) 0 M (M) - $01PC = (PC) + $0004 + rel ? (M) 0

DIR IMM IMM IX+ IX1+ SP1

5 4 4 4 5 6 5 3 3 4 5 6

Decrement and Branch if not Zero

DIR INH INH IX IX1 SP1

CBEQ combina las instrucciones CMP y BEQ Operaciones ms rpidas de bsqueda/ acceso a tablas. DBNZ combina las instrucciones DEC y BNE Loops ms rpidos y eficientes. Por ejemplo: *Subrutina que busca en un string el prximo carcter en blanco * y luego apunta el registro H:X al carcter inmediatamente * seguido al blanco.

INET / Fludica y controladores lgicos programables

172

INET / Fludica y controladores lgicos programables

H:X se asume que siempre apunta a la localizacin del string.


String ORG RMB ORG LDA $00A0 50 $8000 #$20 ; string

Search Loop Out

;carga carcter de bsqueda (espacio en blanco) ;encontrado ?, si, retorno ;no encontrado entonces vuelvo.

CBEQ X+,Out BRA Loop RTS

*El post incremento de X ocurrir independientemente por donde tome el Branch. Por otra parte, cuando una coincidencia es encontrada H:X estar listo para apuntar prximo carcter.

Otro ejemplo: * Rutina de retardo tiempo * Delay = N x (160.0+0.375) s para 8 MHz CPU clock * por ejemplo, para retardo delay = 10ms N = 63
N Count Delay Loop EQU ORG RMB 63 $50 1 ;Loop counter for 10 ms delay ;Loop counter ;Set delay constant ;Inner loop, Count starts at $00

ORG $6E00 LDA #N DBNZ Count,Loop DBNZA Loop RTS

6.3. Control de programa. Jumps saltos y subrutinas:

SourceForms Description

Operation

Effect on CCR V H I N Z C

Address Bus Modes Cycles

JMP JMP JMP JMP JMP JSR JSR JSR JSR JSR

opr opr opr,X opr,X ,X opr opr opr,X opr,X ,X

Jump to location

PC Jump Address

DIR EXT IX2 IX1 IX DIR EXT IX2 IX1 IX REL

2 3 4 3 2 4 5 6 5 4 4

PC (PC) + n (n=1,2 or Jump to subroutine 3) Push (PCL); SP (SP) 1 Push (PCH); SP (SP) 1 PC Unconditional Address

BSR rel

Branch to PC (PC) + 2 subroutine Push (PCL); SP (SP) 1 Push (PCH); SP (SP) 1 PC (PC) + rel
SP (SP) + 1; Pull (PCH) Return SP (SP) + 1; Pull (PCL) from subroutine

RTS

INH

173

6.4. Control de programa. Interrupciones:


Effect on CCR V H I N Z C
Address Bus Modes Cycles

SourceForms Description

Operation

SWI

Software Interrupt

PC (PC) + 1 Push (PCL); SP (SP) 1 Push (PCH); SP (SP) 1 Push (X); SP (SP) 1 Push (A); SP (SP) 1 Push (CCR); SP (SP) 1I=1 PCH Interrupt Vector High Byte PCL Interrupt Vector Low Byte SP (SP) + 1; Pull (CCR) SP (SP) + 1; Pull (A) SP (SP) + 1; Pull (X) SP (SP) + 1; Pull (PCH) SP (SP) + 1; Pull (PCL)

INH

RTI

Return from Interrupt

INH

7. Instrucciones de operaciones BCD Decimal codificado en binario:


SourceForms Description Operation Effect on CCR V H I N Z C
Address Bus Modes Cycles

DAA

Decimal Adjust Accumulator Nibble Swap contents of Accumulator

(A)10

INH

NSA

A (A [3:0] : A [7:4])

INH

8. Instrucciones especiales:
SourceForms Description Operation Effect on CCR V H I N Z C
Address Bus Modes Cycles

RSP

Reset Stack Pointer No Operation Stop Processor and Wait for Interrupt Halt Processor and Wait for Interrupt

SPL $FF

INH

NOP STOP

None I0 Stop Oscillator

INH

INH

WAIT

I0

INH

WAIT: El CPU08 detiene el procesamiento de instrucciones. Espera por una interrupcin.

INET / Fludica y controladores lgicos programables

174

INET / Fludica y controladores lgicos programables

STOP: El CPU08 detiene el procesamiento de instrucciones. Detiene el circuito del oscilador. - Pone al MPU en estado low power. Espera por una interrupcin.

FICHA 6
175
INET / Fludica y controladores lgicos programables

Procesando excepciones

177

En esta ltima ficha de Microprocesadores y microcontroladores, consideraremos el procesamiento de: Reset e interrupciones Vinculacin con el mundo exterior

Reset e interrupciones Reset e interrupciones son excepciones al proceso normal del CPU. El procesado de la excepcin es manejado a travs de tareas discretas: Reconocimiento. Arbitraje. Stacking apilado. Vectorizado. Masking enmascaramiento.

Reset
Reconocimiento deteccin de reset o interrupciones pendientes Es reconocida y ejecutada inmediatamente, una vez ingresada.

Interrupcin
Es reconocida durante el ltimo ciclo de la instruccin corriente. Si ingresa en el ltimo ciclo, entonces es reconocida durante el ltimo ciclo de la prxima instruccin. Acta despus del ltimo ciclo de la instruccin en curso. Difiriendo prioridades. Ms bajas que los resets. Realizado por el SIM Reset Status Register. Stacks (apila) registros del CPU: PC, X, A, CCR. El registro H no es apilado, para mantener la compatibilidad con la CPU HC05. El vector depende de la fuente de interrupcin.

Arbitraje

Ms alta prioridad. No posee arbitraje.

Stacking apilado; salvado de informacin del CPU Vectorizado de excepciones

No se realiza stacking. Se resetea el estado del CPU.

Todas usan el mismo vector. Puede determinarse examinando un registro del SIM Reset Status Register. No puede ser enmascarado.

Masking enmascaramiento; Habilitacin/deshabilitacin del procesamiento de excepciones

Puede ser enmascarada. El i bit habilita/deshabilita todas las interrupciones a procesar. Existen mscaras locales en perifricos, que permiten enmascarar interrupciones individualmente.

INET / Fludica y controladores lgicos programables

178

INET / Fludica y controladores lgicos programables

Vectores de interrupcin CPU 68HC08


Low Priority $FFDC $FFDD $FFDE $FFDF $FFE0 $FFE1 $FFE2 $FFE3 $FFE4 $FFE5 $FFE6 $FFE7 $FFE8 $FFE9 $FFEA $FFEB $FFEC $FFED $FFEE $FFEF $FFF0 $FFF1 $FFF2 $FFF3 $FFF4 $FFF5 $FFF6 $FFF7 $FFF8 $FFF9 $FFFA $FFFB $FFFC $FFFD $FFFE $FFFF Timebase module vector (high) Timebase module vector (low) ADC conversion complete vector (high) ADC conversion complete vector (low) Keyboard vector (high) Keyboard vector (low) SCI transmit vector (high) SCI transmit vector (low) SCI receive vector (high) SCI receive vector (low) SCI receive error vector (high) SCI receive error vector (low) Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved TIM overflow vector (high) TIM overflow vector (low) TIM channel 1 vector (high) TIM channel 1 vector (low) TIM channel 0 vector (high) TIM channel 0 vector (low) CMIREQ vector (high) CMIREQ vector (low) IRQ1 vector (high) IRQ1 vector (low) SWI vector (high) SWI vector (low) Reset vector (high) Reset vector (low)

High Priority

a) Interrupciones Las Interrupciones suspenden el procesamiento normal, para que el CPU pueda realizar algunos servicios requeridos. Son fuentes de Interrupciones: IRQ external PIN IRQ / KBI SCI SPI TIM CGM (PLL) ADC SWI

Son, a veces, usadas para interrumpir el procesamiento normal y, as, responder a algn evento inusual. La CPU MC68HC908 puede ser interrumpida por las siguientes fuentes: Un cero lgico aplicado al pin de interrupcin externa (IRQ). Un cero lgico aplicado a cualquiera de los pines del puerto PA (si la funcin de puerto de interrupcin es habilitada). Un pedido de desborde o interrupcin de timer (overflow TOF).

179

La instruccin de interrupcin por programa (SWI). Fin de conversin del sistema conversor analgico digital. Buffer lleno en el sistema de recepcin de datos serial sincrnico SCI. Buffer vaco en el sistema de transmisin de datos serial sincrnico SCI. Si estn habilitadas las interrupciones por ruido, sobreescritura, error de trama o paridad en el sistema de comunicacin serial sincrnico. Un pedido de comparacin en los registros de uno de los dos temporizadores, para salida de comparacin o entrada de captura de datos. El flujograma de funcionamiento de la interrupcin:

Si una interrupcin se produce mientras la CPU est ejecutando una instruccin, la instruccin es completada antes que la CPU responda al pedido de interrupcin. Las interrupciones pueden ser inhibidas: en conjunto, poniendo un uno en el bit I del CCR; o bien individualmente, poniendo ceros en los bits de control de habilitacin de cada fuente de interrupcin. El reset fuerza el bit I a uno y a cero a todos los bits de habilitacin de interrupciones locales, a fin de prevenir interrupciones durante el proceso de inicializacin. Cuando el bit I est en uno, ninguna interrupcin (excepto SWI) es reconocida; aunque puede registrarse la fuente de interrupcin, su pedido no es atendido hasta que el bit I se ponga en cero. Las interrupciones provocan que los registros del procesador sean salvados en la pila y la mscara de interrupciones (el bit I) se ponga en uno, para prevenir interrupciones adicionales hasta la finalizacin de la presente interrupcin. El vector de interrupcin apropiado, entonces, apunta a la direccin de inicio de la rutina de atencin de interrupcin. Completada la rutina de atencin de interrupcin, una instruccin RTI que, normalmente, es la ltima instruccin de una rutina de atencin de interrupcin provoca que el contenido de los registros sea recuperado de la pila. De esta forma, el contador de programa es cargado con el valor previamente salvado en la pila, continuando con el procesamiento desde donde nos sac la interrupcin. En la figura se presenta qu registros son recuperados de la pila, en orden inverso al que fueron salvados.

INET / Fludica y controladores lgicos programables

180

INET / Fludica y controladores lgicos programables

b) Reset Los resets inicializan al CPU a un estado conocido. Todos los resets son manejados por medio del mdulo SIM System Integration Module. Son tipos de resets: Power On COP Ilegal Address External Pin LVI Ilegal Opcode

El reset es usado para forzar al sistema de MCU a ir a un punto de partida conocido (direccin). Los sistemas perifricos, y muchos bits de control y estado son tambin forzados a un estado conocido como resultado del reset. Las siguientes acciones internas ocurren como resultado de cualquier reset del MCU: 1) 2) 3) 4) 5) 6) Todos los registros de direccin de datos se colocan en cero (como entradas). El puntero a la pila (SP) es forzado a $00FF. El bit I del CCR se pone en uno inhibiendo a las interrupciones enmascarables. El latch de interrupciones externas es borrado. El latch de STOP es borrado. El latch de WAIT es borrado.

Cuando el sistema de computadora sale de reset, el contador de programa se carga con el contenido de las posiciones de memoria ms altas ($FFFE y $FFFF para el MC68HC908). Entonces: el valor que se encuentra en $FFFE se carga en el byte ms significativo del PC y el valor que se encuentra en $FFFF se carga en el byte menos significativo del PC. Esto se denomina bsqueda del vector de reset. En este punto, la CPU comienza la bsqueda y ejecucin de instrucciones, comenzando por la direccin almacenada en el vector de reset.

181

Las siguientes condiciones pueden causar el reset del MC68HC908: Externamente, una seal de entrada activa baja en el pin / RESET. Internamente, al encender la fuente de alimentacin power-on reset; POR. Internamente, expiracin de tiempo del cronmetro de vigilancia del comportamiento apropiado de la computadora computer operating properly COP watchdog timed out. Un intento de ejecutar una instruccin desde una direccin ilegal. Por bajo nivel de tensin de alimentacin LVI.

Pin de reset. Una llave o un circuito externo puede conectarse a este pin para permitir el reset manual del sistema. Reset al encender la fuente de alimentacin power-on reset; POR. Al encender la fuente de alimentacin, el reset ocurre al detectarse una transicin positiva sobre VDD. Su uso es, estrictamente, para la condicin de encendido y no podr utilizarse para detectar cadas de la tensin de la fuente de alimentacin. Podr usarse un circuito inhibidor de baja tensin (LVI) para detectar cadas de la fuente. El circuito de power-on provee una demora de 4064 ciclos, desde el momento en que el oscilador se ha activado. Si el pin de /RESET exterior permanece en bajo, al expirar el tiempo de los 4064 ciclos de demora, el procesador permanece en la condicin de reset hasta que /RESET se coloque en alto. Reset por watchdog timer. El sistema de cronmetro de vigilancia del comportamiento apropiado de la computadora se propone detectar errores de programas. Cuando se activa el COP , es responsabilidad del programa evitar que un cronmetro de vigilancia que corre libremente llegue al final de su cuenta (Si llega a completar su cuenta, sera una indicacin de que el programa no ha sido ejecutado por un largo perodo de tiempo en la secuencia deseada; entonces, se inicia el reset del sistema). Un bit de control del registro de configuracin puede usarse para habilitar o deshabilitar el reset del COP . Si el COP es habilitado, la adecuada operacin del programa peridicamente debe escribir un cero en el bit COPC del registro de control COPR e ir a la hoja de datos del MC69HC908 por informacin sobre el ritmo del tiempo de expiracin. Escribiendo cualquier valor en la direccin $FFFF, previene un COP reset por limpieza del COP contador Reset por acceso a direccin ilegal o cdigo de operacin ilegal. Si el programa es escrito incorrectamente, es posible que la CPU intente saltar o bifurcar a una direccin en la que no haya memoria. Si esto sucede, la CPU podra continuar leyendo datos (resultando ser valores impredecibles) e intentara actuar en consecuencia, si se tratase de programa. Estas instrucciones sin

INET / Fludica y controladores lgicos programables

182

INET / Fludica y controladores lgicos programables

sentido pueden provocar que la CPU escriba datos inesperados en memoria o registros diseccionados inesperados. Esta situacin se llama desbocamiento. En el MC68HC908 hay un circuito detector de direcciones ilegales para protegernos de esta condicin de desbocamiento. Si la CPU trata de buscar una instruccin de una direccin que no pertenece a la memoria FLASH, ni a la ROM monitor, se genera un reset que obliga al programa a comenzar nuevamente.

Vinculacin con el mundo exterior Puertos de E/S digitales. Todos los microcontroladores destinan algunas de sus patitas a soportar lneas de E/S digitales. Por lo general, estas lneas se agrupan de ocho en ocho formando puertos. Las lneas digitales de las puertos pueden configurarse como Entrada o como Salida, cargando un 1 un 0 en el bit correspondiente de un registro destinado a su configuracin. Perifricos de E/S. Los diseos reales utilizan diversos perifricos que hay que conectar a las patillas del microcontrolador que soportan las lneas de E/S. Perifricos digitales de entrada: Pulsadores, interruptores. Pulsadores. Estos dispositivos permiten introducir un nivel lgico en el momento en que se los acciona, pasando al nivel contrario cuando se deja de hacerlo (vuelven a la posicin de reposo). En el esquema, la lnea de entrada (IN) recibe un nivel lgico alto cuando el pulsador est reposo y un nivel lgico bajo cuando se acciona. El pulsador de la derecha funciona al revs.

Dos posibles formas de conectar un pulsador

Hay multitud de detectores, finales de carrera y sensores digitales que funcionan de la misma manera que los pulsadores. Interruptores. Los interruptores tienen dos estados estables; hay que accionarlos para cambiar de uno a otro. El interruptor admite el estado abierto y el estado cerrado. Las formas de conectar un interruptor a una entrada del microcontrolador son iguales a las de la figura anterior, sustituyendo el pulsador por el interruptor. Todos los circuitos electromecnicos (pulsadores, interruptores...) originan un fenmeno denominado rebotes: las lminas se abren y se cierran varias veces en el momento de la transicin

183

El efecto que produce es semejante a abrir y cerrar el interruptor o pulsador varias veces, por lo que puede provocar resultados errneos. El efecto de los rebotes se puede solucionar mediante software o por hardware. En la figura se muestran dos circuitos hardware antirrebotes. El circuito de la izquierda emplea un condensador y el de la derecha un flipflop R-S.

Esquemas para eliminar rebotes

Perifricos digitales de salida: Diodos LED, rels Diodos LED. El diodo led es un elemento que se emplea como indicador luminoso. Cuando la diferencia de potencial entre su nodo y su ctodo supera un determinado valor umbral, el diodo led se enciende. Los microcontroladores pueden suministrar suficiente corriente como para encender a un diodo led, por eso se pueden conectar directamente a travs de una resistencia como muestra la figura. Si empleamos la conexin de la izquierda de la figura, el diodo led se enciende al poner a 1 la salida del microcontrolador; con la conexin de la derecha, lo hace cuando la salida se pone a 0.

Dos posibles formas de conectar un led

En ocasiones, los diodos u otro tipo de carga necesitan ms corriente que la que pueden entregar los microcontroladores. En ese caso, es necesario intercalar una etapa amplificadora. Rels. La activacin y desactivacin de un rel brinda la oportunidad de poder controlar cargas mucho mayores (ms corriente) porque pueden ser controladas por los contactos de dicho rel. Cuando la lnea de salida, OUT, aplica un nivel alto a la base del transistor Darlington (etapa

INET / Fludica y controladores lgicos programables

184

INET / Fludica y controladores lgicos programables

amplificadora), hace que conduzca y se active el rel. Al cerrarse los contactos del rel se controla una carga mayor. El valor de la resistencia depende del tipo de rel y del transistor.

Esquema del control de un rel

Volviendo a nuestro problema El circuito propuesto responde a una de las tantas posibilidades de conexin y control que posee el microcontrolador elegido. Recordemos que necesitamos comandar dos cilindros neumticos con sus correspondientes electrovlvulas monoestables y sus fines de carrera elctricos. Circuito elctrico:

Circuito neumtico:

185

Y1 e Y2 son las bobinas de las electrovlvulas que sern comandadas por transistores desde el microcontrolador S1, S2, S3, y S4 son fines de carrera elctricos para determinar la posicin de los cilindros Una vez definido el circuito elctrico, electrnico y neumtico, comenzamos a desarrollar nuestro diagrama de tareas con las distintas fases de implementacin.

Veamos como sera nuestra solucin:


PA PB DDRA DDRB CONFIG1 CONFIG2 RAM ROM RESET Mem inicio EQU EQU EQU EQU EQU EQU EQU EQU EQU ORG DS ORG MOV CLR CLR MOV MOV BRCLR $0000 $0001 $0004 $0005 $001F $001E $0040 $EC00 $FFFE RAM 4 ROM #$01,CONFIG1 ;Inhabilito wdog PA ;1 PB #$00,DDRB ;puerto B en entrada (fines de carrera) #$18,DDRA ;puerto A bit 3 y 4 en salida (electrovlvulas) bit1 en entrada 1,PA,nada ;leo estado de PA pin1 si est en uno comienzo la secuencia ;espero que se pulse boton de marcha ;Si no estn en posicin el cilindro 1 y 2 no comienzo ;Activo electrovlvula monoestable del cilindro 1 y apago la 2 ;2 ;Puerto A ;Puerto B ;Registro de direccin de puerto A ;Registro de direccin de puerto B ;Registros de configuracin ;comienzo de la Ram ;comienzo de la Rom ;vector de reset ;reservo memoria pero no la utilizo

tarea: nada:

BRCLR 0,PB,nada BRCLR 2,PB,nada BSET 3,PA BCLR 4,PA

1 2

Lo invitamos a analizar la imagen a), de la secuencia que hemos ubicado al final. Lo invitamos a analizar la imagen b), de la secuencia que hemos ubicado al final.

INET / Fludica y controladores lgicos programables

186

INET / Fludica y controladores lgicos programables

Sigo: espero: Nosigo:

BRCLR 1,PB,Sigo BSET 4,PA

;espero llegar al fin de carrera del cilindro 1 ;Activo electrovlvula monoestable del cilindro 2 y mantengo la 1 ;3 BRCLR 3,PB,espero ; espero llegar al fin de carrera del cilindro 2 BCLR 4,PA BCLR 3,PA ;4 BRCLR 2,PB,Nosigo BRCLR 0,PB,Nosigo ;espero a que los dos cilindros se encuentren retrados BRA tarea ORG DW RESET inicio ; Reset Vector

a)

b)

c)

d)

Si queremos un pulsador de parada, podemos conectar uno en la IRQ, habilitarla y, en dicha rutina, colocamos una espera, hasta que se liberare dicho pulsador con retencin. Esto posibilita que la mquina, inmediatamente, se detenga en el procesamiento del ciclo pero, puede ser que los cilindros an se muevan, hasta que lleguen al final de su carrera. El sistema est funcionando con el sistema de clock interno (Igualmente, se indica como sera la conexin para un cristal externo de 9,8304 MHz que debera habilitarse y configurar un registro). En este ejemplo no se desarrolla ningn sistema de debounce o antirebote de seales de entrada, de modo que se debe tener especial cuidado en caso de necesitarlo. Veamos el cdigo S19: S113EC006E011F3F003F016E00056E18040300FDF6 S113EC100101FA160019000301FD18000701FD198E
3 4

Lo invitamos a analizar la imagen c), de la secuencia que hemos ubicado al final. Lo invitamos a analizar la imagen d), de la secuencia que hemos ubicado al final.

187

S10EEC200017000501FD0101FA20E2CD S105FFFEEC0011 S9030000FC Se han remarcado los cdigos del programa dentro del formato S19. Dichos cdigos se graban en la memoria flash, que en este microcontrolador es de, aproximadamente, 8K Bytes. Vale la pena recordar que el programa que se graba en el microcontrolador puede ser actualizado o modificado tantas veces como sea necesario (no ms de 10.000), hasta lograr el mecanismo buscado. Respecto a los cilindros, hemos utilizado como referencia algunas tablas y diagramas para determinar, de acuerdo a la fuerza a desarrollar, la presin de trabajo y su carrera, el dimetro y tipo de cilindro. Veamos los resultados:

Corresponde, entonces, utilizar cilindros de 63 mm de dimetro y carrera 160 mm a una presin de 6 bar. Respecto de sus caractersticas:

INET / Fludica y controladores lgicos programables

188

INET / Fludica y controladores lgicos programables

Otra posibilidad es:

189

INET / Fludica y controladores lgicos programables

197

ANEXOS
Sistemas de numeracin Representacin de la informacin Set de instrucciones de la familia 68HC08 Set de instrucciones PIC 16xxx Bibliografa

INET / Fludica y controladores lgicos programables

199

Sistemas de numeracin Un sistema de numeracin queda unvocamente definido a travs de su base, la cual indica la cantidad de dgitos distintos que posee el sistema, que se pueden utilizar para escribir cualquier nmero dentro de ese sistema. Ejemplos de sistemas de numeracin son: Decimal, base 10 (dgitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9). Binario, base 2 (dgitos: 0,1). Octal, base 8 (dgitos: 0, 1, 2, 3, 4, 5, 6, 7). Hexadecimal, base 16 (dgitos: nmeros 0 a 9 y letras A, B, C, D, E, F).

Los sistemas de numeracin ms usuales son el binario, el decimal, y el hexadecimal; tambin, y en menor medida, el sistema octal. Para indicar, explcitamente, que un nmero es expresado en una determinada base, lo representamos con la base a la que pertenece, como subndice a la derecha. Por ejemplo: Base 10: 123410 Base 16: 23AF16 Base 2: 1102 En el transcurso del texto, adopta como convencin el uso de un sufijo para referirnos a la base a la que pertenece un numero: Binario: B Decimal: D (valor por default) Octal: Q Hexadecimal: H Una manera de representar un nmero en una determinada base es mediante la notacin polinmica, de modo que cada dgito, en el sentido de izquierda a derecha, est multiplicado por las sucesivas potencias de la base. As, por ejemplo, el numero 1234 en base decimal, se puede escribir como: 1 x 103 + 2 x 102 + 3 x 101 + 4 x 100 Las computadoras trabajan internamente con el sistema binario, aunque pueden mostrar la informacin en cualquier otro sistema. En este texto, utilizamos los sistemas binario, decimal y hexadecimal. Existe una notacin formal para expresar cualquier sistema de numeracin. Esta notacin consiste en indicar, entre parntesis, la base y la cantidad de dgitos. As, por ejemplo, un sistema (2,8) hace referencia a un sistema binario, base 2, con hasta 8 dgitos de tamao. En general, diremos que un numero pertenece al sistema de numeracin (p,q) si est expresado en la base p con q dgitos. Por ejemplo: 1100 pertenece al sistema (2,4)

INET / Fludica y controladores lgicos programables

200

INET / Fludica y controladores lgicos programables

AB12 pertenece al sistema (16,4) 093 pertenece al sistema (10,3) Cuando la cantidad de dgitos significativos de un nmero que pertenece a un cierto sistema de numeracin es inferior a la cantidad q de dgitos del sistema, entonces se deben completar los lugares restantes con ceros a la izquierda. Por ejemplo: 00101 pertenece al sistema (2,5) 0101 pertenece al sistema (2,4) 000AB pertenece al sistema (16,5) Cambio de base: Cualquier nmero expresado en una base puede, tambin, ser representado en cualquier otra base. Para poder hacer esto se debe proceder a cambiar la base del nmero. En general, para expresar un nmero en otra base se deben realizar los siguientes pasos: Dividir el nmero a convertir por la nueva base; el resto de la divisin representa el dgito menos significativo del nmero en su nueva base. Dividir el cociente por la nueva base; el resultado de la divisin representa el prximo dgito menos significativo del nmero en su nueva base. Seguir as, sucesivamente, hasta que el resultado de la ltima divisin sea menor que la nueva base; en este punto, el resto de la ltima divisin corresponde al dgito ms significativo del nmero expresado en la nueva base. Las operaciones que se indican en los pasos descriptos, se deben hacer en la aritmtica de la base vieja. Por ejemplo, para convertir 3410 a base 2: - 34 / 2 = 17 > resto = 0 - 17 / 2 = 8 > resto = 1 - 8 / 2 = 4 > resto = 0 - 4 / 2 = 2 > resto = 0 - 2 / 2 = 1 > resto = 0 Entonces 3410 = 1000102 Los cambios de base ms utilizados son: de decimal a binario y viceversa, y de binario a hexadecimal y viceversa. Para pasar de binario a decimal, se utiliza la forma polinmica; esto es, expresar al nmero binario descompuesto en potencias de 2 y efectuar las operaciones en aritmtica decimal. Por ejemplo, para convertir el nmero binario 100010 a base 10: 1 x 25 + 0 x 24 + 0 x 23 + 0 x 22 + 1 x 21 + 0 x 20 = 32 + 2 = 3410 Para pasar de binario a hexadecimal, se deben tomar grupos de 4 dgitos binarios justificando, si es necesario, con ceros a la izquierda; y, luego, convertir cada uno de los grupos a un dgito hexadecimal.

201

Por ejemplo, para convertir el numero binario 11110100101 a base 16: 11110100101 > 0111 1010 0101 > 7A516 Para pasar de hexadecimal a binario, se convierte cada dgito hexadecimal a su representacin binaria, usando siempre cuatro dgitos binarios. Por ejemplo, la inversa del ejemplo anterior: 7A516 > 716 = 01112 A16 = 10102 516 = 01012 Complementacin: Cuando se trabaja con nmeros en bases diferentes a la decimal, surge el inconveniente de cmo representar a los nmeros negativos. Esto se resuelve mediante el concepto de complementacin, de modo que siempre se representen cantidades positivas an cuando su significado puede ser negativo . Para implementar este concepto, se define a un nmero negativo como aquel que, sumndole su positivo, el resultado es 0. En trminos prcticos, trabajaremos con la notacin complemento en nmeros binarios, tomando siempre al primer dgito como dgito de signo. Para complementar un nmero binario, completamos los siguientes pasos: Convertir cada dgito a su inverso (los unos a cero y los ceros a uno). Si se utiliza la notacin complemento a 2, sumar un 1 al nmero resultante de la inversin de los dgitos. Por ejemplo, el complemento de 0101 es 1010 + 1 = 1011. Para expresar en forma polinmica un nmero en notacin complemento a 2, se debe tener en cuenta que el dgito ms significativo representa el signo. En el ejemplo: 10112 = -1 x 23 + 0 x 22 + 1 x 21 + 1 x 20 = -8 + 2 + 1 = -510 Notar que 1011 (-510) es el complemento de 0101 (510). Representacin de la informacin Ya hemos visto que existen distintos sistemas de numeracin que permiten expresar nmeros en diferentes bases y que la computadora est diseada para realizar operaciones aritmticas y lgicas con cantidades binarias. Y, para poder efectuar esas operaciones debe poder, en primera instancia, almacenar esas cantidades numricas, llamndose dato a toda cantidad almacenada en la computadora. Los datos se almacenan en la memoria de la computadora, en distintas unidades de almacenamiento. Las unidades de almacenamiento ms comunes son:

> 0111101001012

INET / Fludica y controladores lgicos programables

202

INET / Fludica y controladores lgicos programables

Bit. Abreviatura de la expresin inglesa Binary Digit. Es la mnima unidad de almacenamiento y permite representar un nico dgito binario; es decir, almacena un uno o un cero. Toda la electrnica digital se basa en el concepto de dgito binario. Byte. Es un conjunto de bits que conforma la mnima unidad direccionable; cada byte puede ser referenciado mediante un nmero de orden o direccin dentro de la memoria. En general, el tamao de un byte es de 8 bits, aunque existen computadoras diseadas con bytes de otros tamaos. Desde el punto de vista de sistemas de numeracin, un byte pertenece al sistema (2,8). Nibble. Ocupa medio byte; en nuestro caso, un nibble ocupa 4 bits. Es til para la representacin de la informacin en notacin hexadecimal, dado que 4 dgitos binarios equivalen a 1 dgito hexadecimal. Palabra. Es un conjunto de bits que puede procesarse en forma paralela. El tamao de una palabra (o word) depende de cada mquina aunque, en general, equivale a 2 bytes; en nuestro caso, una palabra tiene 16 bits de tamao. Desde el punto de los sistemas de numeracin, una palabra pertenece al sistema (2,16). Adems de las unidades de almacenamiento indicadas, existen otras, menos frecuentemente usadas: doble palabra, cudruple palabra, etc. Cdigos: Para normatizar y facilitar la representacin de diferentes smbolos a travs de la combinacin de dgitos binarios en un byte, se crearon diferentes cdigos estndar. Estos cdigos tienen como fundamento la necesidad de poder estandarizar la representacin de la informacin, para permitir que se puedan intercambiar datos entre distintas computadoras. Los cdigos ms difundidos, como decamos a lo largo de las fichas de nuestro texto, son el EBCDIC Extended Binary Coded Decimal Interchange Code y el ASCII American Standard Code Information Interchange. EBCDIC. Este cdigo, especialmente difundido en computadoras grandes Main Frames, se basa en la codificacin de 256 smbolos distintos, entre los que se incluyen todas las letras maysculas y minsculas, los dgitos del 0 al 9, caracteres especiales, etc. Para representar 256 cdigos se utilizan 8 bits, de modo que cada smbolo ocupa un byte. ASCII. Este cdigo es el ms ampliamente difundido. De un modo similar al EBCDIC, el ASCII permite representar smbolos. Sin embargo, a diferencia de aquel, slo admite la codificacin de 128 smbolos distintos, pues cada smbolo ocupa los 7 bits menos significativos (7 bits de la derecha) de un byte, quedando el bit 8 como bit de control. No obstante esto, actualmente es muy comn encontrar computadoras que incluyen un cdigo ASCII extendido, que se basa en la utilizacin del bit 8 para poder representar, en total, 256 smbolos distintos (los 128 smbolos originales del ASCII ms smbolos definidos con la utilizacin del bit 8). Los primeros 32 smbolos del cdigo ASCII son los denominados caracteres de control o caracteres no imprimibles. Los cdigos de control son especialmente usados en comunicaciones. Tipos de datos: As como hemos visto las diferentes unidades de almacenamiento (bit, byte, palabra,

203

etc.), es necesario definir los tipos de datos que pueden ser representados en esas unidades de almacenamiento. Cualquier computadora puede trabajar con datos alfanumricos y con datos numricos. Los datos alfanumricos son cadenas de caracteres (o string) ASCII o EBCDIC, donde cada carcter ocupa un byte. As, por ejemplo, la representacin de Hola en cdigo ASCII ser vista en hexadecimal: 48 4F 4C 41. Los datos numricos pueden ser: binarios, decimales desempaquetados, decimales empaquetados y punto flotante.

Binarios: Son cantidades de uno o ms bytes con o sin signo. Para representar binarios con signo, se utiliza la notacin complemento a 2. (En el apndice Sistemas de numeracin incluimos algunas especificaciones para los nmeros enteros representables en el microprocesador 8088-8086). Decimales desempaquetados: Se representan a razn de un dgito BCD BinaryCoded Decimal por byte, que ocupa el nibble ms bajo (4 bits menos significativos). Para el 8088-8086 el nibble ms alto es siempre cero. Para otras arquitecturas, el nibble ms alto est ocupado por un dgito de zona, que en general es 3. Cada byte puede almacenar un valor entre 0 y 9. Los dgitos BCD tienen la siguiente codificacin:
Dgito BCD Dgito BCD

0 2 4 6 8

0000 0010 0100 0110 1000

1 3 5 7 9

0001 0011 0101 0111 1001

El tamao de un dato decimal desempaquetado est dado por la cantidad de dgitos que tiene. Por ejemplo, el nmero 1234 ocupa 4 bytes, y su configuracin ser 01 02 03 04. El microprocesador 8088-8086 opera slo con nmeros decimales desempaquetados positivos. Decimales empaquetados: Cada byte contiene dos dgitos BCD. El dgito ms significativo se almacena en el nibble ms alto y el dgito menos significativo se almacena en el nibble ms bajo. Cada byte puede almacenar un valor entre 00 y 99. El tamao de un dato decimal empaquetado est dado por la mitad de la cantidad de dgitos que tiene (si un dato tiene una cantidad impar de dgitos, entonces el nibble ms alto del dgito ms significativo se pone en cero). Por ejemplo, el nmero 12345 ocupa 3 bytes y su configuracin: 01 23 45.

INET / Fludica y controladores lgicos programables

204

INET / Fludica y controladores lgicos programables

El microprocesador 8088-8086 opera slo con nmeros decimales empaquetados positivos. Punto flotante: Los nmeros en punto flotante son representados en una cadena de 4 bytes para simple precisin o de 8 bytes para doble precisin. Un nmero en punto flotante tiene 3 campos: signo de la mantisa, exponente y mantisa. (En el apndice Sistemas de numeracin incluimos informacin acerca de los nmeros en punto flotante, en simple y en doble precisin.)

Cdigo ASCII: Las computadoras deben manejar otros tipos de informacin adems de los nmeros. Tanto los textos (caracteres alfanumricos) como las instrucciones deben codificarse de tal modo que la computadora interprete esta informacin. El cdigo ms comn para la informacin tipo texto es el American Standard Code for Information Interchange ASCII. El cdigo ASCII es una correlacin ampliamente aceptada entre caracteres alfanumricos y valores binarios especficos. En este cdigo, el nmero $41 corresponde a una letra A mayscula, el $20 al carcter espacio, etc. El cdigo ASCII traduce un carcter a un cdigo binario de 7 bits, aunque en la prctica la mayora de las veces la informacin es transportada en caracteres de 8 bits con el bit ms significativo en cero. Este estndar permite hace posible las comunicaciones entre equipos hechos por diversos fabricantes, puesto que todas las mquinas utilizan el mismo cdigo. Tabla de caracteres ASCII:
0 0 1 2 3 4 5 6 7 8 9 A B C D E F NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 1 DEL DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US ( ) * + , . / 2 SP ! # $ % & 3 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 4 @ A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ \ ] ^ _ a b c d e f g h i j k l m n o 6 7 p q r s t u v w x y z { | } ~ DEL

NUL - Nulo (Null) SOH - Comienzo de cabecera (Start of Heading) STX - Comienzo de texto (Start of Text) ETX - Final de texto (End of Text) EOT - Fin de transmisin (End of Transmision) ENQ - Requerimiento (Enquiry)

205

ACK - Reconocimiento (Acknowledge) BEL - Campanilla (Bell) BS - Retroceso (Back Space) HT - Tabulacin horizontal (Horizontal Tabulation) LF - Avance de lnea (Line Feed) VT - Tabulacin vertical (Vertical Tabulation) FF - Avance de pgina (Form Feed) CR - Retorno de carro (Carriage Return) SO - Shift Out SI - Shift In DLE - Escape de enlace de datos (Data Link Escape) DCn - Control del dispositivo n (Device Control) NAK - Reconocimiento negativo (Negative Acknowledge) SYN - Espera de sincronismo (Synchronous Idle) ETB - Fin de bloque de transmisin (End of Transmision Block) CAN - Cancelar (Cancel) EM - Fin del medio (End of Medium) SUB - Sustituir (Substitute) ESC - Escapar (Escape) FS - Separador de archivo (File Separator) GS - Separador de grupo (Group Separator) RS - Separador de registro (Record Separator) US - Separador de unidad (Unit Separator) SP - Espacio (Space) DEL - Borrar (Delete) Binario codificado en decimal: El sistema Binario codificado en decimal BCD es una notacin hbrida, usada para expresar valores decimales en forma binaria. Un BCD utiliza cuatro bits para representar cada dgito decimal. De esta manera, cuatro dgitos binarios pueden expresar 16 diferentes cantidades fsicas, habiendo seis combinaciones consideradas no vlidas (especficamente, los valores hexadecimales de la A a la F). Los valores BCD se representan con el signo $, pues ellos son nmeros hexadecimales que representan cantidades decimales. Cuando la computadora hace una operacin de suma BCD, realiza una suma binaria y, luego, realiza un ajuste que genera un resultado BCD. Como ejemplo, consideremos la siguiente suma BCD: 9(10) + 1(10) = 10 (10) donde (10), significa Base 10. La computadora suma........ 0000 1001(2) + 0000 0001(2) = 0000 1010(2) donde (2), significa Base 2. Pero 1010(2) es equivalente a A(16) que es un cdigo BCD no vlido. Cuando la computadora termina el clculo, realiza un chequeo para ver si el resultado es un cdigo BCD vlido. Si hubo un acarreo (un desborde) de un dgito BCD a otro o si hubiese algn cdigo no vlido, se desencadena una secuencia de etapas para corregir el resultado y llevarlo al formato BCD apropiado. El nmero 0000 1010(2) es corregido y se transforma en 0001 0000(2) (BCD 10) en este ejemplo.

INET / Fludica y controladores lgicos programables

206

INET / Fludica y controladores lgicos programables

Decimal
0 1 2 3 4 5 6 7 8 9

BCD
$0 $1 $2 $3 $4 $5 $6 $7 $8 $9

Binary
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

Hexadecimal (reference)
$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $A $B $C $D $E $F $10 $99

Combinaciones BCD Invlidas

10 99

$10 $99

0001 0000 1001 1001

En la mayora de los casos es ineficiente utilizar la notacin BCD para los clculos de la computadora. Es mejor convertir la informacin de decimal a binario en el momento de su ingreso, realizar todos los clculos en binario y convertirlos nuevamente a BCD o decimal slo si es necesario presentarlos en un exhibidor. No todos los microcontroladores son capaces de realizar clculos en BCD, ya que se necesita tener la indicacin del acarreo dgito a dgito que no est presente en todas las computadoras (tener en cuenta que en los MCU de Motorola tienen este indicador de semi-acarreo). Forzar a una computadora a comportarse como nosotros necesitamos, resulta menos eficiente que permitirle trabajar en su sistema de numeracin natural. Punto flotante: El 8088-8086 no puede operar directamente (a nivel hardware) con nmeros en punto flotante (o nmeros reales); para que lo pueda hacer, es necesario que cada lenguaje de programacin brinde una interface de software apropiada. En este apndice, se describen los nmeros en punto flotante tal como los opera el lenguaje BASIC. Los nmeros en punto flotante pueden ser de simple y doble precisin, segn la cantidad de dgitos disponibles para la mantisa: cuantos ms dgitos tenga la mantisa, mayor precisin tendr el nmero. Los nmeros en punto flotante tienen tres campos: exponente, signo y mantisa. El exponente ocupa los primeros 8 bits (byte ms alto) y siempre es una cantidad positiva. Para poder representar nmeros con exponente negativo, ste se escribe en notacin con exceso de 128, de modo que el verdadero exponente de un nmero es el que resulta de restarle 128 al nmero representado en el campo de exponente. El signo ocupa el bit que esta a continuacin del exponente.

207

La mantisa est a continuacin del bit de signo y se encuentra normalizada. Esto significa que, para interpretar la mantisa, se debe agregar un 1 en el bit ms alto (al tener la mantisa normalizada, se considera que el primer dgito es siempre un 1 binario aunque, no se lo explicite en la representacin). El tamao de la mantisa vara segn la precisin: es de 22 bits para simple precisin y de 51 bits para doble precisin. Un nmero de punto flotante en simple precisin ocupa una doble palabra (4 bytes) de memoria y tiene la siguiente estructura:

Bits 0 a 22. Mantisa normalizada. Para ganar precisin se omite representar el primer dgito decimal, pues al estar la mantisa normalizada ste siempre existe. Entonces, al calcular el nmero se debe considerar este dgito implcito. Bit 23. Signo de la mantisa. Si es 0, la mantisa es positiva; si es 1, la mantisa es negativa. Bits 24 a 31. Exponente con exceso a 128. El campo del exponente es un entero positivo; para conocer el valor del exponente se debe restar 128 al valor representado. El rango para los positivos ser entonces: 00000000 <= N => FF7FFFFF (hexadecimal) 00000000000000000000000000000000 <= N => 1111111101111111111111111111 (B) 0,5 * 2-128 <= N => 0,9999999 * 2127 (exp. base 2) 2,938736 * 10-39 <= N => 1,701412 * 1038 (exp. base 10) De la misma manera, el rango para los negativos ser: FFFFFFFF <= N => 00800000 (hexadecimal) 11111111111111111111111111111111 <= N => 0000000010000000000000000000 (B) -0,9999999 * 2127 <= N => -0,5 * 2-128 (exp. base 2) -1,701412 * 1038 <= N => -2,938736 * 10-39 (exp. base 10) De este modo, puede verse que un nmero positivo difiere del mismo nmero negativo en el bit de signo. Un nmero de punto flotante en doble precisin ocupa 1 cudruple palabra (8 bytes) de memoria y tiene la siguiente estructura:

La diferencia con los nmeros de simple precisin es que hay mayor cantidad de dgitos para la mantisa. De este modo, se logra mayor precisin en la representacin de un nmero en punto flotante. Por ejemplo, el nmero decimal 2436,55686593 representado en ambos modos da el siguiente resultado: Simple precisin: 8C1848E9 Doble precisin: 8C1848E8EC3FD9B5

INET / Fludica y controladores lgicos programables

208

INET / Fludica y controladores lgicos programables

Se nota que, al representar el nmero en simple precisin, la mantisa se redondea en el ltimo dgito hexadecimal.

Set de instrucciones de la familia 68HC08


SourceForms Description Operation Effect on CCR V H I N Z
Address Bus Op- Cycles C Modes Cycles code

ADC ADC ADC ADC ADC ADC ADC ADC ADD ADD ADD ADD ADD ADD ADD ADD AIS

#opr Add with opr Carry opr opr,X opr,X ,X opr,SP opr,SP
Add #opr opr without opr Carry opr,X opr,X ,X opr,SP opr,SP

A (A) + (M) + (C)

IMM DIR EXT IX2 IX1 IX SP1 SP2 IMM DIR EXT IX2 IX1 IX SP1 SP2 IMM

A9 B9 C9 D9 E9 F9 9EE9 9ED9 AB BB CB DB EB FB 9EEB 9EDB A7

ii dd hh ll ee ff ff ff ee ff ii dd hh ll ee ff ff ff ee ff ii

2 3 4 4 3 2 4 5 2 3 4 4 3 2 4 5 2

A (A) + (M)

#opr

Add Immediate SP (SP) + (16 . M) Value (Signed) to SP

AIX

#opr

H:X (H:X) + (16 . Add M) Immediate Value (Signed) to H:X A (A) & (M)

IMM

AF

ii

AND AND AND AND AND AND AND AND ASL ASLA ASLX ASL ASL ASL

#opr LogicalAND opr opr opr,X opr,X ,X opr,SP opr,SP opr opr,X ,X opr,SP
Arithmetic Shift Left (Same as LSL)

IMM DIR EXT IX2 IX1 IX SP1 SP2 DIR INH INH IX1 IX SP1 DIR INH INH IX1 IX SP1

A4 B4 C4 D4 E4 F4 9EE4 9ED4 38 48 58 68 78 9E68 37 47 57 67 77 9E67 24

ii dd hh ll ee ff ff ff ee ff dd

2 3 4 4 3 2 4 5 4 1 1 4 3 5 4 1 1 4 3 5 3

ff ff dd

ASR opr Arithmetic ASRA Shift Right ASRX ARL opr,X ARL opr,X ARL opr,SP BCC rel
Branch if Carry Bit Clear Clear Bit n in M

ff ff rr

PC (PC) + 2 + rel ? (C)= 0 Mn 0

REL

BCLR n,opr

DIR(b0) DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR (b7)

11 13 15 17 19 1B 1D 1F

dd dd dd dd dd dd dd dd

4 4 4 4 4 4 4 4

209

SourceForms Description

Operation

Effect on CCR V H I N Z

Address Bus OpCycles C Modes Cycles code

BCS rel

Branch if Carry Bit Set (Same as BLO) Branch it Equal Branch if Greater Than or Equal To (Signed Operands) Branch if Greater Than (Signed Operands) Branch if Half Carry Bit Clear Branch if Half Carry Bit Set Branch if Higher Branch if Higher or Same (Same as BCC) Branch if IRQ Pin High Branch if IRQ Pin Low

PC (PC) + 2 + rel ? (C) = 1

REL

25

rr

BEQ rel BGE opr

PC (PC) + 2 + rel ? (Z) = 1 PC (PC) + 2 + rel ? (N & V) = 0

REL REL

27 90

rr rr

3 3

BGT opr

PC (PC) + 2 + rel ? (Z) | (N & V) =0

REL

92

rr

BHCC rel

PC (PC) + 2 + rel ? (H) = 0 PC (PC) + 2 + rel ? (H) = 1 PC (PC) + 2 + rel ? (C) | (Z) = 0 PC (PC) + 2 + rel ? (C) = 0

REL

28

rr

BHCS rel

REL

29

rr

BHI

rel

REL REL

22 24

rr rr

3 3

BHS rel

BIH

rel

PC (PC) + 2 + rel ? IRQ = 1 PC (PC) + 2 + rel ? IRQ = 0 (A) & (M)

REL

2F

rr

BIL

rel

REL

2E

rr

BIT BIT BIT BIT BIT BIT BIT BIT

#opr Bit test opr opr opr,X opr,X ,X opr,SP opr,SP


Branch if Less Than or Equal To (Signed Operands) Branch if Lower (Same as BCS) Branch if Lower or Same

IMM DIR EXT IX2 IX1 IX SP1 SP2 REL

A5 B5 C5 D5 E5 F5 9EE5 9ED5 93

ii dd hh ll ee ff ff ff ee ff rr

2 3 4 4 3 2 4 5 3

BLE Opr

PC (PC) + 2 + rel ? (Z) | (N & V) =1

BLO rel

PC (PC) + 2 + rel ? (C) = 1

REL

25

rr

BLS rel

PC (PC) + 2 + rel ? ( C) | (Z) = 1

REL

23

rr

INET / Fludica y controladores lgicos programables

210

INET / Fludica y controladores lgicos programables

SourceForms Description

Operation

Effect on CCR V H I N Z

Address Bus OpCycles C Modes Cycles code

BLT

opr

Branch if Less Than (Signed Operands) Branch if Interrupt Mask Clear Branch if Minus Branch if Interrupt Mask Set Branch if Not Equal Branch if Plus Branch Always Branch if Bit n in M Clear

PC (PC) + 2 + rel ? (N & V) = 1

REL

91

rr

BMC rel

PC (PC) + 2 + rel ? (I) = 0 PC (PC) + 2 + rel ? (N) = 1 PC (PC) + 2 + rel ? (I) = 1 PC (PC) + 2 + rel ? (Z) = 0 PC (PC) + 2 + rel ? (N) = 0 PC (PC) + 2 + rel PC (PC) + 3 + rel ? (Mn) = 0

REL

2C

rr

BMI

rel

REL REL

2B 2D

rr rr

3 3

BMS rel

BNE rel BPL rel BRA rel BRCLR n,opr,rel

REL REL REL

26 24 20

rr rr rr

3 3 3

DIR (b0) 01 DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR (b7)

03 05 07 09 0B 0D 0F 21

dd dd dd dd dd dd dd dd rr dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd rr

rr rr rr rr rr rr rr rr

5 5 5 5 5 5 5 5 3

BRN rel BRSET n,opr,rel

Branch Never Branch if Bit n in M Set

PC (PC) + 2 PC (PC) + 3 + rel ? (Mn) = 1

REL

DIR (b0) 00 DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR (b7)

02 04 06 08 0A 0C 0E 10 12 14 16 18 1A 1C 1E AD

rr rr rr rr rr rr rr rr

5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4

BSET n,opr

Set Bit n in M

Mn 1

DIR (b0) DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR (b7)

BSR rel

Branch to Subroutine

PC (PC) + 2:push (PCL) SP (SP) - 1:push (PCH) SP (SP) - 1 PC (PC) + rel PC (PC) + 3 + rel ? (A) - (M) = $00 PC (PC) + 3 + rel ? (A) - (M) = $00 PC (PC) + 3 + rel ? (X) - (M) = $00 PC (PC) + 3 + rel ? (A) - (M) = $00 PC (PC) + 2 + rel ? (A) - (M) = $00 PC (PC) + 4 + rel ? (A) - (M) = $00

REL

CBEQ opr,rel CBEQA #opr,rel CBEQX #opr,rel CBEQ opr,X+,rel CBEQ X+,rel CBEQ opr,SP,rel

Compare and Branch it Equal

DIR IMM IMM IX1IXSP1

31 41 51 61 71 9E61

dd rr ii rr ii rr ii rr rr ff rr

5 4 4 5 4 6

211

SourceForms Description

Operation

Effect on CCR V H I N Z

Address Bus OpCycles C Modes Cycles code

CLC CLI

Clear Carry Bit Clear Interrupt Mark

C0 I0

0 -

INH INH

9B 9A

1 2

CLR opr Clear CLRA CLRX CLRH CLR opr,X CLR ,X CLR opr,SP CMP CMP CMP CMP CMP CMP CMP CMP #opr Compare opr A with M opr opr,X opr,X ,X opr,SP opr,SP

M $00 A $00 X $00 H $00 M $00 M $00 M $00 (A) - (M)

0 1

DIR INH INH INH IX1 IX SP1 IMM DIR EXT IX2 IX1 IX SP1 SP2

3F 4F 5F 8C 6F 7F 9E6F A1 B1 C1 D1 E1 F1 9EE1 9ED1 33 43 53 63 73 9E63 65 75 A3 B3 C3 D3 E3 F3 9EE3 9ED3 72

dd

ff ff ii dd hh ll ee ff ff ff ee ff dd

3 1 1 1 3 2 4 2 3 4 4 3 2 4 5 4 1 1 4 3 5 3 4 2 3 4 4 3 2 4 5 2

COM opr Complement M (M) = $FF - (M) A (A) = $FF - (M) COMA (Ones COMX Complement) X (X) = $FF - (M) COM opr,X M (M) = $FF - (M) COM ,X M (M) = $FF - (M) COM opr,SP M (M) = $FF - (M) CPHX #opr CPHX opr CPX CPX CPX CPX CPX CPX CPX CPX DAA
Compare H:X with M

DIR INH INH IX1 IX SP1 IMM DIR IMM DIR EXT IX2 IX1 IX SP1 SP2 INH

ff ff ii ii+1 dd ii dd hh ll ee ff ff ff ee ff

(H:X) (M:M + 1) (X) - (M)

#opr Compare opr X with M opr ,X opr,X opr,X opr,SP opr,SP


Decimal Adjust

(A)10 A (A) - 1 or M = (M) - 1 or X (X) - 1 PC (PC) + 3 + rel ? (result) 0 PC (PC) + 2 + rel ? (result) 0 PC (PC) + 2 + rel ? (result) 0 PC (PC) + 3 + rel ? (result) 0 PC (PC) + 2 + rel ? (result) 0 PC (PC) + 4 + rel ? (result) 0 M (M) - 1 A (A) - 1 X (X) - 1 M (M) - 1 M (M) - 1 M (M) - 1 A (H:A)/(X) H Remainder

Decrement and DBNZ opr,rel Branch if Not Zero

DIR INH INH IX1 IX SP1

3B 4B 5B 6B 7B 9E6B 3A 4A 5A 6A 7A 9E6A 52

dd rr rr rr ff rr rr ff rr dd

5 3 3 5 4 6 4 1 1 4 3 5 7

DBNZA rel CBNZX rel DBNZ opr,X,rel DBNZ,X,rel DBNZ opr,SP ,rel DEC opr Decrement DECA DECX DEC opr,X DEC ,X DEC opr,SP DIV
Divide

DIR INH INH IX1 IX SP1 INH

ff ff

INET / Fludica y controladores lgicos programables

212

INET / Fludica y controladores lgicos programables

SourceForms Description

Operation

Effect on CCR V H I N Z

Address Bus OpCycles C Modes Cycles code

EOR EOR EOR EOR EOR EOR EOR EOR INC INCA INCX INC INC INC JMP JMP JMP JMP JMP

#opr Exclusive opr OR M with opr A opr,X opr,X ,X opr,SP opr,SP opr opr,X ,X opr,SP opr opr opr,X opr,X ,X
Jump Increment

(A) (A

M)

IMM DIR EXT IX2 IX1 IX SP1 SP2 DIR INH INH IX1 IX SP1 DIR EXT IX2 IX1 IX DIR EXT IX2 IX1 IX

A8 B8 C8 D8 E8 F8 9EE8 9ED8 3C 4C 5C 6C 7C 9E6C BC CC DC EC FC BD CD DD ED FD A6 B6 C6 D6 E6 F6 9EE6 9ED6 45 55 AE BE CE DE EE FE 9EEE 9EDE 38 48 58 68 78 9E68 34 44 54 64 74 9E64

ii dd hh ll ee ff ff ff ee ff dd

2 3 4 4 3 2 4 5 4 1 1 4 3 5 2 3 4 3 2 4 5 6 5 4

M (M) + 1 A (A) + 1 X (X) + 1 M (M) + 1 M (M) + 1 M (M) + 1 PC Jump Address -

ff ff dd hh ll ee ff ff dd hh ll ee ff ff

JSR opr JSR opr JSR opr,X JSR opr,X JSR ,X LDA LDA LDA LDA LDA LDA LDA LDA

Jump to Subroutine

PC (PC) + n (n = 1, 2 or 3) Push (PCL):SP (SP) - 1 Push (PCH):SP (SP) - 1 PC Unconditional Address A (M)

#opr Load A opr from M opr opr,X opr,X ,X opr,SP opr,SP


Load H:X from M

IMM DIR EXT IX2 IX1 IX SP1 SP2 IMM DIR IMM DIR EXT IX2 IX1 IX SP1 SP2 DIR INH INH IX1 IX SP1

ii dd hh ll ee ff ff ff ee ff ii jj dd ii dd hh ll ee ff ff ff ee ff dd

2 3 4 4 3 2 4 5 3 4 2 3 4 4 3 2 4 5 4 1 1 4 3 5 4 1 1 4 3 5

LDHX #opr LDHX opr LDX LDX LDX LDX LDX LDX LDX LDX LSL LSLA LSLX LSL LSL LSL LSR LSRA LSRX LSR LSR LSR

H:X (M:M +1) X (M)

0 0

#opr Load X opr from M X opr (M) opr,X opr,X ,X opr,SP opr,SP opr opr,X ,X opr,SP opr opr,X ,X opr,SP
Logical Shift Left (Same as ASL)

ff ff dd

Logical Shift Right

DIR INH INH IX1 IX SP1 -

ff ff

MOV opr,opr Move MOV opr,X+ MOV #opr,opr MOV X+,opr

(M)Destination (M)Source H:X (H:X) + 1 (IX + D, DIX+)

DD 4E DIX+ 5E IMD 6E IX+D 7E

dd dd 5 dd 4 ii dd 4 dd 4

213

SourceForms Description

Operation

Effect on CCR V H I N Z

Address Bus OpCycles C Modes Cycles code

MUL NEG opr NEGA NEGX NEG opr,X NEG ,X NEG opr,SP NOP NSA ORA ORA ORA ORA ORA ORA ORA ORA PSHA PSHH PSHX PULA PULH PULX ROL opr ROLA ROLX ROL opr,X ROL ,X ROL opr,SP ROR opr RORA RORX ROR opr,X ROR ,X ROR opr,SP RSP #opr opr opr opr,X opr,X ,X opr,SP opr,SP

Unsigned multiply Negate (Twos Complement)

X:A (X) x (A)

0 -

INH DIR INH INH IX1 IX SP1

42 30 40 50 60 70 9E60 9D 62 AA BA CA DA EA FA 9EEA 9EDA 87 8B 89 86 8A 88 39 49 59 69 79 9E69 36 46 56 66 76 9E66 9C dd ii dd hh ll ee ff ff ff ee ff dd

5 4 1 1 4 3 5 1 3 2 3 4 4 3 2 4 5 2 2 2 2 2 2 4 1 1 4 3 5 4 1 1 4 3 5 1

M -(M) = $00 - (M) A -(A) = $00 - (A) X -(X) = $00 - (X) M -(M) = $00 - (M) M -(M) = $00 - (M)

ff ff

No operation Nibble Swap A Inclusive OR A and M

None A (A [3:0]:A [7:4]) A (A) | (M)

INH INH IMM DIR EXT IX2 IX1 IX SP1 SP2 INH INH INH INH INH INH DIR INH INH IX1 IX SP1 DIR INH INH IX1 IX SP1

Push A onto Stack Push H onto Stack Push X onto Stack

Push (A):SP (SP) - 1 Push (H):SP (SP) - 1 Push (X):SP (SP) - 1 (A)

Pull A from SP (SP + 1); Pull Stack Pull H from Stack

SP (SP + 1); Pull (H) (X)

Pull X from SP (SP + 1); Pull Stack Rotate Left through Carry

ff ff dd

Rotate Right through Carry

ff ff

Reset Stack Pointer Return from Interrupt

SP $FF

INH

RTI

SP (SP) + 1; Pull (CCR) SP (SP) + 1; Pull (A) SP (SP) + 1; Pull (X) SP (SP) + 1; Pull (PCH) SP (SP) + 1; Pull (PCL)

INH

80

RTS

Return from Subroutine

SP SP + 1; Pull (PCH) SP SP + 1; Pull (PCL)

INH

81

INET / Fludica y controladores lgicos programables

214

INET / Fludica y controladores lgicos programables

SourceForms Description

Operation

Effect on CCR V H I N Z

Address Bus OpCycles C Modes Cycles code

SBC SBC SBC SBC SBC SBC SBC SBC SEC SEI

#opr Subtract opr with Carry opr opr,X opr,X ,X opr,SP opr,SP
Set Carry Bit Set Interrupt Mask

A (A) - (M) - (C)

IMM DIR EXT IX2 IX1 IX SP1 SP2 1 INH INH

A2 B2 C2 D2 E2 F2 9EE2 9ED2 99 9B

ii dd hh ll ee ff ff ff ee ff

2 3 4 4 3 2 4 5 1 2

C1 I1

STA STA STA STA STA STA STA

opr Store A in opr M opr,X opr,X ,X opr,SP opr,SP


Store H:X in M Enable IRQ Pin Stop Oscillator

M (A)

DIR EXT IX2 IX1 IX SP1 SP2 DIR

B7 C7 D7 E7 F7 9EE7 9ED7 35

dd hh ll ee ff ff ff ee ff dd

3 4 4 3 2 4 5 4

STHX opr STOP

(M:M + 1) (H:X) I 0; Stop Oscillator

INH

8E

STX STX STX STX STX STX STX SUB SUB SUB SUB SUB SUB SUB SUB SWI

opr Store X in opr M opr,X opr,X ,X opr,SP opr,SP #opr Subtract opr opr opr,X opr,X ,X opr,SP opr,SP
Software Interrupt

M (X)

DIR EXT IX2 IX1 IX SP1 SP2 IMM DIR EXT IX2 IX1 IX SP1 SP2

BF CF DF EF FF 9EEF 9EDF A0 B0 C0 D0 E0 F0 9EE0 9ED0 83

dd hh ll ee ff ff ff ee ff ii dd hh ll ee ff ff ff ee ff

3 4 4 3 2 4 5 2 3 4 4 3 2 4 5 9

A (A) - (M)

PC (PC) + 1; Push (PCL) SP (SP) - 1; Push (PCH) SP (SP) - 1; Push (CCR) SP (SP) - 1; I =1 PCH Interrupt Vector High Byte PCH Interrupt Vector Low Byte
SP (SP) - 1; Push (X) SP (SP) - 1; Push (A)

INH

TAP TAX TPA

Transfer A to CCR Transfer A to X Transfer CCR to A

CCR (A) X (A) A (CCR)

INH INH INH

84 97 85

2 1 1

215

SourceForms Description

Operation

Effect on CCR V H I N Z

Address Bus OpCycles C Modes Cycles code

TST TSTA TSTX TST TST TST TSX TXA TXS WAIT

opr opr,X ,X opr,SP

Test for Negative or Zero

(A) - $00 or (X) $00 or (M) - $00

Transfer SP to H:X Transfer X to A Transfer H:X to SP Enable Interrupts; Stop Processor

H:X (SP) + 1 A (X) (SP) (H:X) - 1 1 bit 0 0 -

DIR INH INH IX1 IX SP1 INH INH INH INH

3D 4D 5D 6D 7D 9E6D 95 9F 94 8F

dd

ff ff

3 1 1 3 2 4 2 1 2 1

A. Accumulator C. Carry/borrow bit CCR. Condition Code Register dd. Direct Address of Operand dd cc. Direct Address of Operand and Relative Offset of Branch Instruction DD. Direct to Direct Addressing Mode DIR. Direct Addressing Mode. DIX+. Direct to Indexed with Post Increment Addressing Mode ee ff. High and Low Bytes of Offset in Indexed, 16-bit Offset Addressing EXT. Extended Addressing Mode. ff. Offset Byte in Indexed, o-bit Offset Addressing H. Half-Carry Biy H. Index Register High Byte hh ll. High and Low Bytes of Operand Address in Extended Addressing I. Interrupt Mask. ii. Immediate Operand Byte IMD. Immediate Source to Direct Destination Addressing Mode IMM. Immediate Addressing Mode INH. Inherent Addressing Mode IX. Indexed, no Offset Addressing Mode IX+. Indexed, no Offset, Post Increment Addressing Mode IX+D. Indexed with Post Increment to Direct Addressing Mode IX1. Indexed, 8-bit Addressing Mode IX1+. Indexed, 8-bit Offset, Post Increment Addressing Mode IX2. Indexed, 16-bit Offset Addressing Mode M. Memory Location N. Negative Bit n. Any Bit opr. Operand (one or two bytes) PC. Program Counter PCH. Program Counter High Byte PCL. Program Counter Low Byte REL. Relative Addressing Mode rel. Relative Program Counter Offset Byte rr. Relative Program Counter Offset Byte

INET / Fludica y controladores lgicos programables

216

INET / Fludica y controladores lgicos programables

SP1. Stack Pointer, 8-bit Offset Addressing Mode SP2. Stack Pointer, 16-bit Offset Addressing Mode SP . Stack Pointer U. Undefined V. Overflow Bit X. Index Register Low Byte Z. Zero Bit &. Logical AND |. Logical OR . Logical EXCLUSIVE OR ( ). Contents of -( ). Negation (twos Complement) #. Immediate Value {{. Sign Extend . Loaded with ?. If :. Concatenated with . Set or Cleared -. Not Affected Smbolos de cdigo de condicin: H. Semi acarreo (bit 4) I. Mscara de interrupcin (bit 3) N. Negativo (bit 2) Z. Cero (bit 1) C. Acarreo (bit 0) 0. En bajo 1. En alto . Evala y levanta el bit si es verdad (sino, baja el bit) -. No afectado Smbolos de expresiones booleanas: .. AND lgica :. OR lgica . OR exclusiva A. Acumulator X. Registro ndice M. Posicin de memoria -. Not (inversin) _. Negativo o resta +. Suma aritmtica x. Multiplicacin . Es cargado con... ( ) El contenido de... CCR. Registro de cdigo de condicin PC. Contador de programa PCL. PC; byte de menor caso PCH. PC; byte de mayor peso SP . Puntero a pila REL. Desplazamiento relativo

217

Modo de direccionamiento
Inherente Inmediato Directo (para evaluacin de bits) Extendido Indexado (sin desplazamiento) Indexado (con desplazamiento de 8 bits) Indexado (con desplazamiento de 16 bit) Relativo

Abreviatura
INH IMM DIR EXT IX IX1 IX2 REL

Operandos
ninguno ii dd dd rr hh ll ninguno ff ee ff rr

Set de instrucciones PIC 16xxx


Mnemnicos
ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ INCF INCFSZ IORWF MOVF MOVWF NOP RLF RRF SUBWF SWAPF XORWF BCF BSF BTFSC BTFSS ADDLW ANDLW CALL CLRWDT GOTO IORLW MOVLW RETFIE RETLW RETURN SLEEP SUBLW XORLW

Op
f.d f.d F f.d f.d f.d f.d f.d f.d f.d f f.d f.d f.d f.d f.d f.b f.b f.b f.b k k k k k k k k k Add W and f AND W weith f Clear f Clear W Complement f Decrement f

Descripcin

Ciclos
1 1 1 1 1 1 1 (2) 1 1 (2) 1 1 1 1 1 1 1 1 1 1 1 1 (2) 1 (2) 1 1 2 1 2 1 1 2 2 2 1 1 1

Status
C. DC. Z Z Z Z Z Z Z Z Z

Operaciones de registros orientadas a byte

Decrement f. Skip if 0 Increment f Increment f. Skip if 0 Inclusive OR W with F Move f Move W to f No Operation Rotate Left f through Carry Rotate Right f through Carry Subtract W from f Swap Nibbles in f Exclusive OR W with f Bit Clear f Bit Set f Bit Test f. Skip if Clear Bit Test f. Skip if Set Add Literal and W AND Literal with W Call Subroutine Clear Watchdog Timer Go to Address Inclusive OR literal with W Move Literal to W Return from Interrupt Return with Literal in W Return from Subroutine Go into Standby Mode Subtract W from Literal Exclusive OR Literal with W

C C C. DC. Z Z 1.2 1.2 3 3 C. DC. Z Z TO. PD Z

Operaciones de registros orientadas a bit

Operaciones literales y de control

TO. PD C. DC. Z Z

INET / Fludica y controladores lgicos programables

218

INET / Fludica y controladores lgicos programables

Bibliografa Angulo Usategui, J. M.; Angulo Martnez, I. 1999. Microcontroladores PIC. Diseo prctico de aplicaciones. Mc Graw Hill. Angulo Usategui, J. M.; Martn Cuenca, E.; Angulo Martnez, I. 1997. Microcontroladores PIC. La solucin en un chip. Paraninfo. Electrnica. Microcontroladores y microprocesadores. Multipress. Embedded Control Handbook. 1996. Microchip Technology Inc. MPASM Assembler Quick Reference Guide. 1996. Microchip Technology Inc. MPSIM Simulator Users guide. 1996. Microchip Technology Inc. PIC16/17 Microcontroller Data Book. 1996. Microchip Technology Inc. Predko, Myke. 1999. Programming and Customizing the Pic Microcontroller. Mc Graw Hill. Technical Training Workbook de Microchip. 1999. Microchip Technology Inc. Acerca de microcontroladores Motorola: http://mcu.motsps.com/refdesigns http://motorola.com/mcu latam.msnusers.com/browse.msnw?catid=11&sortby=2 mx.grulic.org.ar/archiver/html/ grulic/2000-06/msg00532.html mx.msnusers.com/68HC08/settings mx.msnusers.com/browse.msnw?catid=11&sortby=2 pegasus.udea.edu.co/Pregrado/ 2001.02/ECNF377-2001-2.rtf usuarios.lycos.es/aguzman/documentos/ambiente_ics.pdf www.baceelectronica.com.ar/ www.bairesrobotics.com.ar/data/guia68hc08.pdf www.bairesrobotics.com.ar/tutoriales.htm www.depeca.uah.es/wwwnueva/docencia/ING-TELECO/sed/ www.diea.ulpgc.es/docencia/asignaturas/ electronica/14137.html www.dsp.efn.uncor.edu/espaniol/info/archivos/ hc08/contador_de_eventos.pdf www.dsp.efn.uncor.edu/espaniol/info/pdfs/nanosat.pdf www.iearobotics.com/personal/juan/publicaciones/art1/jps.pdf www.ii.uam.es/~gdrivera/robotica/curso0203/dia_a_dia.htm www.ii.uam.es/~mecatron/documentos/mprog_gp_bot_02.pdf www.mundomicro.com.ar/micros/motorola.htm www.tic.udc.es/scg/proyect/rinjdael1/proyecto-rinjdael.pdf www.upb.edu.co/microprocesadores/capitulo6/cap6_bib.html

Acerca de microcontroladores Intel (Atmel) www.8052.com/ www.atmel.com/products/8051/ www.cs.ucr.edu/~dalton/i8051/ www.keil.com/dd/8051chips.asp www.pjrc.com/tech/8051/ www.pjrc.com/tech/8051/ide/

Acerca de microcontroladores PIC: Archivos sobre Pics de David Tait. http://www.labyrinth.net.au/~donmck/dtait/ index.html Bengt Lindgrens HomePage: Programador y archivos. http://home5.swipnet.se/ ~w-53783

219

De todo un poco (Electrnica): Algunos circuitos. http://www.arrakis.es/ ~ldr2000/manny/circuitos Diseo de sistemas con microcontroladores: Enlaces. http://www.infoab.uclm.es/~amartine Dontronics. http://www.dontronics.com EDU-PIC: PIC Microcontrollers in education. http://pages.hotbot.com/edu/edu-pic El Rincn del Pic. http://members.es.tripod.de/~InfoE/infop.htm fae@electrocom.com.ar FlashPIC Developer for PIC16F84 and PIC16F87x Series PIC Microcontrollers. http://www.cybermedix.co.nz/flashpic Free PIC 16x84 programmer with marginingsupport. http://www.ise.pw.edu.pl/ ~wzab/picprog/picprog.html GNUPic Free Microcontroller Software Tools http://huizen.dds.nl/~gnupic/ index.html http://www.arrakis.es/~msyseng http://www.geocities.com/CapeCanaveral/Lab/9827/microcon.htm http://www.geocities.com/TheTropics/2174/micro.html http://www.myke.com/PICMicro http://www.pp.clinet.fi/~newmedia/pic/index.html Indicadores y controles basados en micros PIC: Otro http://chasque. chasque.apc.org/franky/pics.htm La pgina del autor de Programming and Customizing the Pic Microcontroller: Con algunos circuitos. Links sobre PIC de David Tait. http://www.man.ac.uk/~mbhstdj/piclinks.html Los Microcontroladores: Informacin sobre algunos modelos. http:// www.gherson.homepage.com Microchip Net resources. http://www.geocities.com/SiliconValley/Way/5807 Microchip. http://www.microchip.com Microcontoladores: Informacin, Herramientas y Programador. Microcontrollers: Enlaces. http://www.us-epanorama.net/microprocessor.html Microsystems Engineering: Los autores de los libros de Pics en castellano. Pgina de Javier Alzate: Microcontroladores PIC16CXX. Pgina Web de CX2FW: Informacin y Links. http://www.angelfire.com/tx/cx2fw/ cx2fw.html Parallax. http://www.parallaxinc.com Pic Programming. Getting Started: 4 pasos para empezar con los Pic. PIC16/17 Microcontroller & Basic Stamp: Con algunos proyectos.http:// www.doc.ic.ac.uk/~ih/doc/pic Proyecto de Gaspar Vidal que utiliza los Pic como soporte hardware. http:// www.geocities.com/CapeCanaveral/Campus/8775/proyecto/pfc.htm Rei Project: Mod Chip: Algunos proyectos. http://chip.aeug.org Sagitron: Distribuidor de Microchip en Espaa. http://www.sagitron.es The Electronic Projects Page: Algunos proyectos. http://www.blichfeldt.dk The Picmicro Ring. http://members.tripod.com/~mdileo/pmring.html The ultimate source for Pic and SX Tools http://www.adv-transdata.com

INET / Fludica y controladores lgicos programables

Vous aimerez peut-être aussi