ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

MODULO DE MICROPROCESADORES


Enviado por   •  12 de Febrero de 2014  •  32.815 Palabras (132 Páginas)  •  994 Visitas

Página 1 de 132

MÓDULO DE MICROPROCESADORES, MICROCONTROLADORES

UNIDADES DIDÁCTICAS DEL CURSO

UNIDAD CAPÍTULO TEMAS

1. FUNDAMENTOS DE MICROPROCESADORES

1.1 INTRODUCCIÓN AL MICROPROCESADOR

1.2 MICROPROCESADORES DE 8 BITS

1.3 MICROPROCESADORES DE 16 y 32 BITS

1.1.1 Origen y evolución

1.1.2 Generalidades del microprocesador

1.1.3 Estructura interna

1.1.4 Familias de microprocesadores

1.2.1 Características Generales

1.2.2 Funciones y diagrama de pines

1.2.3 Arquitectura interna

1.2.4 Modos de direccionamiento

1.2.5 Repertorio de instrucciones

1.3.1 Características Generales

1.3.2 Funciones y diagrama de pines

1.3.3 Arquitectura interna

1.3.4 Modos de direccionamiento

1.3.5 Repertorio de instrucciones

2. FUNDAMENTOS DE MICROCONTROLADORES

2.1 INTRODUCCIÓN AL MICROCONTROLADOR

2.2 MICROCONTROLADORES DE 8 BITS

2.1.1 Generalidades del microcontrolador

2.1.2 Estructura interna

2.1.3 Familias de microcontroladores

2.2.1 Características Generales

2.2.2 Funciones y diagrama de pines

2.2.3 Arquitectura interna

2.2.4 Modos de direccionamiento

2.2.5 Repertorio de instrucciones

3. PROGRAMACIÓN DE MICROPROCESADORES Y MICROCONTROLADORES

3.1 INTRODUCCIÓN A LA PROGRAMACIÓN

3.2 DESARROLLO DE APLICACIONES

3.1.1 Lenguajes máquina y ensamblador

3.1.2 Repertorio de instrucciones

3.1.2.1 Aritméticas y lógicas

3.1.2.2 Transferencia de datos

3.1.2.3 Bifurcación

3.1.2.4 Atención a subrutinas

3.1.2.5 Misceláneas

3.2.1 Generalidades de programación

3.2.2 Dispositivos de entrada

3.2.3 Dispositivos de salida

3.2.4 Aplicaciones

4. PLC

4.1 INTRODUCCIÓN AL PLC

4.2 DESARROLLO DE APLICACIONES

4.1.1. Estructura básica

4.1.2. Diferentes tipos de PLC

4.2.1 El PLC micro-1 de IDEC

4.2.1.1 Programación del micro-1

4.2.1.2 El temporizador

4.2.1.3 El contador

4.2.1.4 Las funciones especiales

4.2.2 El PLC FX-16MR

INTRODUCCIÓN

La llegada de nuevas tecnologías, trae como consecuencia la modernización de las empresas, el aumento en la productividad y la realización de tareas de forma más precisa, práctica y segura. Los microprocesadores y los microcontroladores son un claro ejemplo de ello.

Estos elementos constituyen un gran avance en el mundo de la electrónica, dejando a su paso un gran número de componentes y haciendo peligrar la existencia de otros elementos empleados en el control de procesos.

En la actualidad los microprocesadores y los microcontroladores se encuentran presentes en muchas aplicaciones de la vida cotidiana, realizando las más diversas funciones. Entre sus efectos se destacan la reducción del tamaño de los elementos que los emplean, un sobresaliente desempeño de los mismos y la obtención de mejores resultados en los diferentes procesos en que participan.

El uso de microprocesadores y microcontroladores de propósito general en aplicaciones más especializadas, como el procesamiento de señales digitales, ha empezado a ser más frecuente debido a las altas velocidades de procesamiento que pueden alcanzar y a las características especiales que ofrecen.

El mundo actual exige entonces al futuro profesional, familiarizarse con estos dispositivos electrónicos, como componentes imprescindibles de la tecnología y el desarrollo de nuevos campos productivos.

Los conceptos a tratar en este curso están íntimamente ligados a su profesión y son de gran importancia dentro del proceso de formación integral de todo ingeniero.

Se espera que el manejo de los diferentes temas y la comprensión de los principales conceptos del curso, le den una visión más amplia de su carrera y potencien sus posibilidades de desempeño profesional.

UNIDAD 1

FUNDAMENTOS DE MICROPROCESADORES

CONTENIDOS

Capítulo 1. Introducción al Microprocesador

1. Origen y evolución

2. Generalidades del microprocesador

3. Estructura interna

4. Familias de microprocesadores

Capítulo 2. Microprocesadores de 8 bits

1. Características Generales

2. Funciones y diagrama de pines

3. Arquitectura interna

4. Modos de direccionamiento

5. Repertorio de instrucciones

Capítulo 3. Microprocesadores de 16 y 32 bits

1. Características Generales

2. Funciones y diagrama de pines

3. Arquitectura interna

4. Modos de direccionamiento

5. Repertorio de instrucciones

CAPÍTULO 1

INTRODUCCIÓN AL MICROPROCESADOR

1. ORIGEN Y EVOLUCIÓN

Los principales hechos históricos que condujeron al desarrollo del microprocesador, y que permitieron tan sorprendente evolución tecnológica, se describen brevemente a continuación.

Era Mecánica.

La idea de implementar un sistema de cómputo ha existido desde antes que apareciera la electricidad y la electrónica. Esta idea comenzó cerca del año 500 A.C. cuando los antiguos babilonios inventaron el ábaco, la primera calculadora mecánica, la cual fue usada ampliamente y aún en la actualidad se sigue usando.

El ábaco fue desplazado en 1642 cuando el matemático Blaise Pascal inventó una calculadora construida con engranajes y ruedas.

Era Eléctrica.

En el siglo XIX, con el surgimiento de la electricidad y el motor eléctrico, aparecieron las máquinas sumadoras movidas por motor, las cuales se basaban en el modelo de calculadora de Blaise Pascal. Estas sumadoras fueron los equipos de oficina hasta inicio de los años sesenta del siglo XX.

Las máquinas mecánicas, movidas por motores eléctricos, dominaron el mundo del procesamiento de información hasta la construcción de la primera calculadora electrónica, desarrollada en 1941 por el inventor alemán Honrad Zuse. Esta computadora de cálculo, la Z3, se utilizó en el diseño de aeronaves y misiles para el ejército alemán durante la Segunda Guerra Mundial.

Se tiene conocimiento, por documentos militares británicos de la época, que la primera computadora electrónica fue puesta en funcionamiento en 1943 para descifrar códigos militares alemanes. Por otra parte, el primer sistema de cómputo electrónico, el cual usaba tubos al vacío, fue inventado por Alan Turing, quien lo llamó Colossus, probablemente a causa de su tamaño.

La primera computadora electrónica programable de propósito general fue desarrollada en 1946 en la Universidad de Pennsylvania. Esta primera computadora moderna se llamaba ENIAC, y era tan enorme que contenía más de

17,000 tubos de vacío y más de 800 kilómetros de cable; pesaba más de 30 toneladas y aún así sólo realizaba 100,000 operaciones por segundo. La ENIAC se programaba recableando sus circuitos; un proceso que tomaba varios días y muchos trabajadores. Un problema que tenía esta máquina era la vida útil de los bulbos, los cuales requerían mantenimiento constante.

En 1948 Laboratorios Bell desarrolló el transistor, seguido por la invención del circuito integrado en 1958 por Jack Kilby de Texas Instruments. Estos elementos condujeron al desarrollo de los circuitos digitales integrados RTL ( Lógica Resistencia Transistor ) en los años sesenta y a la creación del primer microprocesador: el 4004 de Intel Corporation en 1971, el cual inició la revolución del microprocesador, la cual continúa hasta hoy a un ritmo cada vez más acelerado.

El primer "PC" o Computador Personal fue construido por IBM en 1981 y aunque ya existían otros computadores, el modelo de IBM tuvo gran éxito, entre otras cosas porque era fácil de producir en serie. En su interior tenía un microprocesador 8088, de la empresa Intel, que mejoraba las prestaciones de un modelo anterior, el microprocesador 4004.

Computador IBM de Primera Generación

Fuente: Internet (conozcasuhardware.com)

Con el paso de los años surgieron nuevos y cada vez más poderosos microprocesadores. En las siguientes tablas se resumen las características de algunos de ellos.

Procesadores de la década de los 70

4004 8008 8080 8086 8088

Fecha de introducción 15/11/71 1/4/72 1/4/74 8/6/78 1/6/79

Velocidad de reloj 108KHz 108KHz 2MHz 5MHz,8MHz,10MHz 5MHz, 8MHz

Ancho de bus 4 bits 8 bits 8 bits 16 bits 8 bits

Número de transistores 2.300 3.500 6.000 29.000 29.000

Memoria direccionable 640 byte 16 kbyte 64 kbyte 1 Mbyte 1 Mbyte

Procesadores de la década de los 80

80286 Intel386TM DX Intel386TM SX Intel486TM DX

Fecha de introducción 1/2/82 17/10/85 16/6/88 10/4/89

Velocidad de reloj 6MHz - 12,5 MHz 16 MHz - 33 MHz 16 MHz - 33 MHz 25 MHz - 50 MHz

Ancho de bus 16 bits 32 bits 16 bits 32 bits

Número de transistores 134,000 275,000 275,000 1,2 millones

Memoria direccionable 16 Mbytes 4 Gbytes 4 Gbytes 4 Gbytes

Memoria virtual 1 Gbyte 64 Terabytes 64 Terabytes 64 Terabytes

Fuente: William Stallings

Posteriormente surgieron otras empresas como AMD y Cyrix que desarrollaron chips compatibles con los Intel. Además, lanzaron la línea 386 que superaba las prestaciones que ofrecía la línea de productos Intel. Después surgió el 486, que era un 386 con un co-procesador matemático incorporado y una memoria caché integrada, lo que lo hacía más rápido. Desde entonces todos los chips tienen este conjunto en su interior.

Luego vino el Pentium, un nombre inventado para evitar que surgieran 586s marca AMD o Cyrix, ya que no era posible patentar un número pero sí un nombre, lo que aprovecharon para sacar fuertes campañas de publicidad del "Intel Inside" (Intel adentro).

En última generación de microprocesadores, se destacan entre otras, la línea de Intel con los Pentium IV y la línea Power PC de Mac. La siguiente figura muestra un procesador PowerPC 970, actualmente uno de los más avanzados del mercado.

Fuente: Internet (5.ibm.com)

Para finalizar esta sección, se presenta en la siguiente tabla la evolución e incremento de la cantidad de instrucciones por segundo (IPS) desarrolladas por diversos procesadores.

Procesador IPS Reloj Año

Intel 8080

640 KIPS 2 MHz 1974

Intel 8086

800 KIPS 5 MHz 1978

Motorola 68000

1 MIPS 8 MHz 1979

Intel 486DX

54 MIPS 50 MHz 1989

PowerPC 600s (G2)

35 MIPS 33 MHz 1994

PowerPC G3

525 MIPS 233 MHz 1997

Zilog eZ80

80 MIPS 50 MHz 1999

Pentium 4 Extreme Edition

9726 MIPS 3.2 GHz 2003

Xbox360 IBM "Xenon" Single Core

6400 MIPS 3.2 GHz 2005

AMD Athlon 64

8400 MIPS 2.8 GHz 2005

AMD Athlon 64 Dual Core

18500 MIPS 2.2 GHz 2005

AMD Athlon 64 3800+ X2 (Dual Core)

18900 MIPS 2.2 GHz 2005

Cell (cada PPE)

6400 MIPS 3.2 GHz 2006

Procesador Cell de la PlayStation 3

21800 MIPS 3.2 GHz 2006

AMD Athlon FX-60 (Dual Core)

22150 MIPS 2.6 GHz 2006

Overclocked AMD Athlon FX-60 (Dual Core)

27100 MIPS 3.0 GHz 2006

Fuente: Internet (mips.wikipedia.com)

2. GENERALIDADES DEL MICROPROCESADOR

Los sistemas de cómputo basados en microprocesadores constan de bloques funcionales básicos, que incluyen: una Unidad Central de Procesamiento (CPU), Dispositivos de Memoria y Puertos de Entrada/Salida.

Estos bloques funcionales se conectan mediante los Buses del Sistema ( datos, dirección y control ), como se presenta a continuación.

Fuente: Thomas Floyd

En un de sistema de cómputo, las instrucciones y los datos se encuentran almacenados en unas posiciones específicas de la memoria. Cada posición de memoria tiene asociada una dirección exclusiva. La CPU ( el microprocesador ) obtiene las instrucciones y los datos colocando una dirección en el bus de direcciones. Posteriormente las instrucciones y/o los datos se transfieren a través del bus de datos cuando son solicitados por la CPU.

La CPU ejecuta las instrucciones de un programa secuencialmente. Con frecuencia, las instrucciones modifican los datos almacenados en memoria u obtenidas a través de un dispositivo de entrada. Los datos procesados pueden almacenarse de nuevo en memoria o enviarse a un dispositivo de salida a través del bus de datos. La CPU también genera e interpreta las señales del bus de control para coordinar estas y muchas más operaciones.

El microprocesador

Un microprocesador es un circuito de gran escala de integración, que contiene la CPU completa de un computador en un único circuito integrado. Según han ido evolucionando los microprocesadores, también lo han hecho los computadores, los cuáles han ampliado sus prestaciones y capacidades de servicio, así como la facilidad para su adquisición.

Los microprocesadores se emplean también en muchas aplicaciones que requieren funciones de control y supervisión, entre las que se incluyen el control industrial y de maquinaria, los controles de motores y la telemetría, por nombrar solo algunas.

Un microprocesador contiene varias unidades o estructuras, cada una de ellas diseñada para realizar un trabajo específico. Las unidades en sí, más su diseño y organización, se conocen comúnmente como la arquitectura del microprocesador.

En la siguiente figura se presentan las principales unidades básicas de todos los microprocesadores: la unidad lógica y aritmética (ALU), la matriz de registros y la unidad de control. Existen otras unidades auxiliares que trabajan junto con estas tres unidades básicas para formar un microprocesador específico.

Fuente: Thomas Floyd

El microprocesador, por medio de sus unidades básicas, realiza las principales tareas en un sistema de cómputo:

(1) procesamiento de la información; (2) control de la transferencia de datos entre él mismo y la memoria o el sistema de entrada/salida; (3) realización de operaciones lógicas y aritméticas, y (4) ejecución de programas, por medio de los cuáles se realizan una serie de operaciones o tareas.

El poder del microprocesador radica en su capacidad de ejecutar miles de millones de instrucciones por segundo provenientes de un programa o software almacenado en su sistema de memoria. Otra característica que hace poderoso al microprocesador es su capacidad para tomar decisiones simples basadas en hechos numéricos. Por ejemplo, un microprocesador puede decidir si un número es cero, si es positivo, etc. Estas decisiones sencillas permiten al microprocesador modificar el flujo del programa, de manera que los programas parecen razonar.

Buses del microprocesador

Un bus es un conjunto de conductores comunes que interconectan componentes de un sistema de cómputo. Los tres buses mencionados anteriormente son parte de las conexiones internas y externas que utilizan los microprocesadores para enviar datos, direcciones y señales de control.

El bus de datos. El bus de datos es bidireccional, es decir, de doble sentido. Por él los datos o las instrucciones se transfieren al microprocesador, y los resultados de una operación ó cálculo son enviados desde el microprocesador. Los primeros microprocesadores tenían buses de datos de 8 bits. Dependiendo de cada microprocesador concreto, el tamaño del bus de datos es de 8, 16, 32, o 64 bits.

El bus de direcciones. El bus de direcciones es unidireccional. Por medio de él es que el microprocesador envía un código de dirección a una memoria o a un dispositivo externo. El tamaño o ancho del bus de direcciones se especifica mediante el número de líneas. Los primeros microprocesadores utilizados en computadores tenían 16 líneas de direcciones, con las que se podía direccionar 216 posiciones distintas, es decir 64K. Cuantos más bits tenga el bus de direcciones, se puede acceder a más posiciones de memoria. El número de líneas de dirección se ha ido incrementando a 20, 24, 32 y 36 bits. El Pentium II, con 36 líneas, permite acceder a 64G.

El bus de control. El microprocesador utiliza el bus de control para coordinar las operaciones y comunicarse con los dispositivos externos. El bus de control tiene señales que permiten leer y escribir datos en la memoria o en un puerto de entrada/salida en el instante apropiado. Las líneas de control también se utilizan para insertar estados de espera para los dispositivos más lentos y evitar congestión en el bus, esta es una condición que puede producirse cuando dos o más dispositivos intentan transmitir al mismo tiempo.

En la mayoría de los sistemas de cómputo existen las siguientes líneas del bus de control: (control de lectura de memoria), (control de escritura de memoria), (control de lectura de entrada/salida) e (control de escritura de entrada/salida). Además también se tienen las señales de reloj, reset y manejo de interrupciones.

3. ESTRUCTURA INTERNA

Como se ha mencionado hasta el momento, la configuración interna de un microprocesador consta de tres unidades básicas: la unidad aritmético lógica (ALU), la matriz de registros y la unidad de control. Cada una de ellas será descrita a continuación.

3.1 Unidad Aritmético Lógica ( ALU )

La ALU es la parte del computador que realiza las operaciones aritméticas, como la suma y la sustracción, y las operaciones lógicas con los datos, como la NOT, AND, OR y OR-exclusiva. El resto de los elementos del computador ( unidad de control, registros, memoria y E/S ) están principalmente para suministrar datos a la ALU y para recuperar los resultados. En síntesis, la ALU se considera el núcleo o la base del procesamiento matemático del computador.

Una unidad aritmético lógica y, en realidad, muchos de los componentes electrónicos del computador, se basan en el uso de dispositivos lógicos digitales, los cuales pueden almacenar dígitos binarios y realizar operaciones lógicas booleanas elementales. La siguiente figura indica, en términos generales, cómo se interconecta la ALU con el resto del procesador.

Fuente: William Stallings

Los datos se presentan a la ALU en registros, y posteriormente allí se almacenan los resultados de las operaciones producidas por la ALU. Estos registros son posiciones de memoria temporales, internas al procesador, que están conectados a la ALU. Además se pueden activar indicadores ( flags o indicadores de estado ) como resultado de una operación. Por ejemplo, un indicador de desbordamiento se pondrá a 1 si el resultado de una operación excede la longitud del registro en donde éste debe almacenarse. Los valores de los indicadores se almacenan también en otro registro dentro del procesador ( registro de estado ). La unidad de control, por su parte, proporciona las señales que gobiernan el funcionamiento de la ALU y la transferencia de datos dentro y fuera de ella.

Representación de los datos

Los datos manejados en la ALU tienen formato de complemento a dos, el cual utiliza el bit más significativo como bit de signo, facilitando de esta forma las operaciones con los enteros negativos. Los bits restantes son interpretados tal y como lo muestra la siguiente tabla.

RANGO DE VALORES -2n-1 a 2n-1-1

Nº de representaciones del cero Una

Negación Ejecutar el complemento booleano de cada bit y sumar 1 al patrón de bits resultante.

Ampliación de la longitud de bits Las posiciones de bit extra se añaden a la izquierda, rellenándolas con el valor del bit de signo original

Regla para el desbordamiento Si se suman dos números de igual signo (ambos positivos o ambos negativos), hay desbordamiento si, y sólo si, el resultado tiene signo opuesto.

Regla para la resta Para restar B de A, se toma el complemento a dos de B y suma a A.

Fuente: William Stallings

El número cero se identifica como positivo y tiene, por tanto, un bit de signo ( 0 ) y una magnitud de cero. El rango de números positivos que se pueden representar es desde el cero hasta 2n-1-1; en el caso de los números negativos se pueden representar desde el -1 hasta -2n-1.

3.2 Matriz de registros

Recordemos rápidamente algunas de las funciones que debe realizar la CPU, como elemento principal de un sistema de cómputo:

• Captar instrucciones: la CPU lee una instrucción de la memoria.

• Interpretar instrucciones: la instrucción se decodifica para determinar que acciones se deben realizar.

• Captar datos: la ejecución de una instrucción puede exigir leer datos de la memoria o de un módulo de entrada/salida.

• Procesar datos: la ejecución de una instrucción puede exigir llevar a cabo alguna operación aritmética o lógica con los datos.

• Escribir datos: los resultados de una ejecución pueden exigir escribir datos en la memoria o en un módulo de entrada/salida.

Para realizar estos procesos, es necesario que la CPU almacene alguna información de forma temporal. Debe también recordar la posición de la última instrucción, de forma que pueda saber dónde ir a buscar la siguiente. Necesita almacenar instrucciones y datos temporalmente mientras una instrucción está ejecutándose. En otras palabras, la CPU requiere una pequeña memoria interna.

Dentro de la CPU hay entonces, un conjunto de registros que funciona como un nivel de memoria, por encima de la memoria principal y de la cache. Estos registros de la CPU pueden ser de dos tipos:

• Registros visibles para el usuario: Permiten al programador de lenguaje máquina o ensamblador, minimizar las referencias a memoria principal cuando optimiza el uso de registros.

• Registros de control y de estado: Son utilizados por la unidad de control para controlar el funcionamiento de la CPU, y por programas privilegiados del sistema operativo para controlar la ejecución de otros programas.

Registros visibles para el usuario

Un registro visible para el usuario es aquel que puede ser referenciado por medio del lenguaje máquina que ejecuta la CPU. Se pueden clasificar en las siguientes categorías:

• Propósito general

• Datos

• Direcciones

• Códigos de condición

Los registros de propósito general pueden ser asignados por el programador a diversas funciones. En realidad, no tienen asignada ninguna función específica.

En algunos casos, los registros de propósito general pueden ser utilizados para funciones de direccionamiento. En otros casos hay una separación parcial o total entre registros de datos y registros de direcciones. Los registros de datos pueden usarse únicamente para contener datos y no se pueden emplear en el cálculo de una dirección de operando. Los registros de dirección pueden ser de uso más o menos general, o pueden estar dedicados a un modo de direccionamiento particular.

Los registros que han de contener direcciones, han de ser lo suficientemente grandes como para guardar la dirección más grande. Los registros de datos deben ser capaces de contener valores de la mayoría de tipos de datos. Algunas máquinas permiten que dos registros contiguos sean usados como uno solo para contener valores de doble longitud.

Los indicadores de estado ó códigos de condición, son bits fijados por el hardware de la CPU como resultado de alguna operación. Por ejemplo, una operación aritmética puede producir un resultado positivo, negativo, nulo o con desbordamiento. Además de almacenar el resultado en un registro o en la memoria, se obtiene también un código de condición.

Los códigos de condición se reúnen en uno o más registros. Normalmente forman parte de un registro de control. Por lo general, las instrucciones de máquina permiten que estos bits sean leídos por referencia implícita, pero no pueden ser alterados por el programador.

Otros registros de interés, son:

• Acumulador: es un registro ( o registros ) asociado principalmente a las operaciones de la ALU, y algunas veces a las operaciones de E/S. Puede ser de 8, 16 o 32 bits. En él se almacenan los resultados de las diferentes operaciones matemáticas y lógicas que se realizan en la ALU.

• Punteros de segmento: en una máquina con direccionamiento segmentado ( más adelante se tratará el tema de direccionamiento ) un registro de segmento contiene la dirección de la base del segmento. Puede haber múltiples registros: por ejemplo, uno para el sistema operativo y otro para el proceso actual.

• Registro índice: se emplea para que contenga la dirección de un operando, cuando se utiliza el modo de direccionamiento indexado.

• Puntero de pila (SP): este registro sigue la pista de la siguiente posición de memoria disponible en la pila. La pila es un área reservada utilizada principalmente para el almacenamiento de direcciones de vuelta y contenido de registros. La pila se utiliza durante las llamadas a subrutina y durante las interrupciones.

Registros de control y estado

Hay diversos registros de la CPU que se emplean para controlar su funcionamiento. La mayoría de ellos, en gran parte de las máquinas, no son visibles para el usuario. Algunos de ellos pueden ser visibles a instrucciones de máquina ejecutadas en un modo de control o de sistema operativo.

Algunos de los registros para la ejecución de una instrucción, son:

• Contador de programa (PC): contiene la dirección de la instrucción a captar.

• Registro de instrucción (IR): contiene la instrucción captada más reciente.

• Registro de dirección de memoria (MAR): contiene la dirección de una posición de memoria.

• Registro intermedio de memoria (MBR): contiene la palabra de datos a escribir en memoria, o la palabra leída más recientemente.

Normalmente, la CPU actualiza el Contador de Programa después de cada captación de instrucción, de manera que siempre apunta a la siguiente instrucción a ejecutar. Una instrucción de bifurcación o salto también modifica el contenido del contador de programa. La instrucción captada se carga en el registro IR, donde son analizados el código de operación y los campos del operando. Se intercambian datos con la memoria por medio de los registros MAR y MBR. En un sistema con organización de bus, MAR se conecta directamente al bus de direcciones y MBR directamente al bus de datos. Los registros visibles por el usuario intercambian repetidamente datos con MBR.

Los cuatro registros que se acaban de mencionar se usan también para la transferencia de datos entre la CPU y la memoria. Dentro de la CPU, los datos tienen que ofrecerse a la ALU para su procesamiento. La ALU puede tener acceso directo a MBR y a los registros visibles para el usuario.

Todos los diseños de CPU incluyen un registro o un conjunto de registros de estado ( status ), conocidos a menudo como Palabra de Estado del Programa (PSW). Este registro contiene normalmente los códigos de condición, además de otra información de estado. La mayoría de los señalizadores ( flags ) se asocian a las operaciones de la ALU y son utilizados por las instrucciones de bifurcación para tomar decisiones.

Entre los campos o indicadores más comunes, se incluyen los siguientes:

• Signo: Contiene el bit de signo del resultado de la última operación aritmética.

• Cero: Puesto a uno cuando el resultado es 0.

• Acarreo: Puesto a uno si una operación da lugar a un acarreo (suma) o préstamo (resta) del bit más significativo.

• Igual: puesto a uno si el resultado de una comparación lógica es la igualdad.

• Desbordamiento: usado para indicar un desbordamiento aritmético.

• Interrupciones habilitadas/deshabilitadas: usado para permitir o inhabilitar interrupciones.

• Supervisor: indica si la CPU funciona en modo de supervisor o usuario. Únicamente en modo supervisor se pueden ejecutar ciertas instrucciones privilegiadas y se puede acceder a ciertas áreas de memoria.

3.3 Unidad de control

La unidad de control se encarga de procesar las instrucciones. Proporciona las señales de temporización y control para extraer e introducir los datos en el microprocesador y para sincronizar la ejecución de las instrucciones.

La unidad de control realiza dos tareas básicas:

• Secuenciamiento: hace que el procesador avance a través de una serie de microoperaciones, basadas en el programa que esté ejecutando.

• Ejecución: la unidad de control hace que se ejecute cada microoperación.

Microoperaciones

Cuando se ejecuta un programa, se realiza una secuencia de ciclos de instrucción, con una instrucción máquina por ciclo; y esta serie de ciclos de instrucción no es necesariamente la misma secuencia de instrucciones del programa, ya que en algunos casos existen instrucciones de salto.

Cada ciclo de instrucción puede considerarse compuesto por varias unidades más pequeñas. Una subdivisión práctica es: captación, ciclo indirecto, ejecución e interrupción. Y cada uno de los ciclos más pequeños implica una serie de pasos, los cuales involucran ciertos registros del procesador. Estos pasos son las microoperaciones.

En resumen, como se aprecia en el gráfico, la ejecución de un programa consiste en la ejecución secuencial de instrucciones. Cada instrucción se ejecuta durante el ciclo de instrucción, compuesto por subciclos más cortos. La ejecución de cada subciclo involucra una o más operaciones sencillas, es decir, las microoperaciones.

Fuente: William Stallings

Señales de control

Para que la unidad de control realice su función adecuadamente, debe tener las entradas que le permitan determinar el estado del sistema, y las salidas que le permitan controlar el comportamiento del mismo. Éstas son las especificaciones externas de la unidad de control.

Internamente, la unidad de control ha de tener la lógica necesaria para realizar sus funciones de secuenciamiento y ejecución.

La siguiente figura es un modelo general de la unidad de control, la cual presenta algunas de sus entradas y salidas más utilizadas.

Fuente: William Stallings

Las principales entradas son las siguientes:

• Reloj: Es el encargado de “mantener la hora exacta” en el procesador. La unidad de control hace que se ejecute una microoperación (o conjunto de microoperaciones simultáneas) en cada pulso de reloj. Éste a menudo, es referenciado como “tiempo de ciclo del procesador” o “período de reloj”.

• Registro de instrucción: El código de operación de la instrucción en curso se usa para determinar qué microoperaciones hay que realizar durante el ciclo de ejecución.

• Indicadores: Los necesita la unidad de control para determinar el estado del procesador y el resultado de anteriores operaciones de la ALU. Por ejemplo, para la instrucción incrementar y saltar si es cero, la unidad de control incrementará el PC si el indicador de cero está en uno.

• Señales de control del bus de control: La parte de control del bus del sistema suministra señales a la unidad de control, tales como señales de interrupción y de reconocimiento.

Las principales salidas son las siguientes:

• Señales de control internas al procesador: Son de dos tipos: las que hacen que los datos se transfieran de un registro a otro, y las que activan funciones específicas de la ALU.

• Señales de control hacia el bus de control: También las hay de dos tipos: señales de control de la memoria y señales de control de las E/S.

4. FAMILIAS DE MICROPROCESADORES

En este apartado se van a describir las principales familias fabricantes de microprocesadores.

4.1 Microprocesadores Zilog

Zilog, es un fabricante de microprocesadores de 8 bits, siendo su producto más reconocido el Zilog Z80. Fue fundado en California en 1974 por Federico Faggin, quien trabajó perfeccionando el primer microprocesador de Intel, el Intel 4004.

En 1976 la compañía crea el Zilog Z80 que era un microprocesador basado en el Intel 8080 con algunas mejoras. Con este nuevo producto Faggin realizó una gira por el mundo buscando potenciales clientes. Un año después sale al mercado el primer computador que hace uso del Z80, el TRS-80 Model 1 con un Z80 a 1,77 MHz y 4 KB de RAM. En 1989 sale la videoconsola Game Boy con un Z80 a 1,05 MHz y posteriormente la Sega Game Gear y la Sega Genesis, que también lo usan.

En el año 1995 crean el V-Chip y en el 2001 Zilog lanza el eZ80.

4.2 Microprocesadores Motorola

Uno de sus principales exponentes es el Motorota 6800, el cual fue lanzado al mercado en 1975, poco después del Intel 8080.

Su conjunto de instrucciones está formado por 78 de éstas y posiblemente es el primer microprocesador que contó con un registro índice.

El 6800 normalmente se fabricaba en un encapsulado DIP de 40 pines.

Varios de los primeros microordenadores de los años 1970, que usualmente eran vendidos por correo (en piezas sueltas o ensamblados), usaron el 6800 como procesador principal. Entre ellos se encuentran el SWTPC 6800 (el primero en usarlo) y el MITS Altair 680.

Fuente: Internet

Partiendo del 6800 se crearon varios procesadores derivados, siendo uno de los más potentes el Motorola 6809, que fue usado en el sistema de videojuego Vectrex y en el ordenador Tandy TRS-80, entre otros.

También se han producido varios microcontroladores basados en el 6800, como el Motorola 6805, 6807, 6808, 68HC11 y el 68HC12.

4.3 Microprocesadores SPARC

SPARC (del inglés Scalable Processor ARChitecture) es una arquitectura RISC, es decir, una arquitectura con un conjunto reducido de instrucciones.

Fue originalmente diseñada por Sun Microsystems en 1985 y se basa en los diseños RISC I y II de la Universidad de California en Berkeley que fueron definidos entre los años 1980 y 1982.

La empresa Sun Microsystems diseñó esta arquitectura y la licenció a otros fabricantes como Texas Instruments, Cypress, Fujitsu y LSI Logic.

SPARC es la primera arquitectura RISC abierta y como tal, las especificaciones de diseño están publicadas, así otros fabricantes de microprocesadores pueden desarrollar su propio diseño.

La CPU SPARC está compuesta por una unidad entera (Integer Unit) que procesa la ejecución básica y una unidad de punto flotante (Floating Point Unit) que ejecuta las operaciones y cálculos de reales.

Aunque no es una parte formal de la arquitectura, las computadoras basadas en sistemas SPARC de Sun Microsystems tienen una unidad de manejo de memoria (MMU) y un gran caché de direcciones virtuales (para instrucciones y datos) que están dispuestos periféricamente sobre un bus de datos y direcciones de 32 bits.

Fuente: Internet (sunsparc.wikipedia.com)

La siguiente tabla presenta algunas de las generaciones del SPARC.

Generación Familia Especificación general

Primera generación (1987) SPARC Frecuencia de reloj de 16 a 50MHz. Diseño escalar

Segunda generación (1992) SUPER SPARC Frecuencia de reloj de 33 a 50MHz. Diseño super escalar.

Tercera generación (1996) ULTRA SPARC II Arquitectura super escalar de 4 etapas y de 64 bits. Cinco unidades de punto flotante. Velocidades entre 250 y 300 Mhz

Fuente: Internet (sunsparc.wikipedia.com)

4.4 Microprocesadores Power PC

PowerPC es una arquitectura de computadoras de tipo RISC creada por la Alianza AIM, un consorcio de empresas compuesto por Apple, IBM y Motorola, de cuyas primeras letras, surgió la sigla. Los procesadores de esta familia son producidos por IBM y Freescale Semiconductor que es la división de semiconductores y microprocesadores de Motorola, siendo utilizados principalmente en ordenadores o computadores Macintosh de Apple Computer.

Este microprocesador está diseñado en base a la arquitectura POWER de IBM con algunos componentes tomados del microprocesador Motorola 68000 para darle compatibilidad con arquitectura de los ordenadores de Apple.

Procesador Power PC 970

Fuente: Internet (5.ibm.com)

4.5 Microprocesadores AMD

AMD surgió por la división que tuvo Intel en el proceso de integración de sistemas. Anteriormente AMD estaba asociada con Intel y creaban microprocesadores. Los procesadores del tipo 8088, 8086 o 80286, por ejemplo, incluían a AMD con su logotipo y después a Intel como marca registrada. Con la separación de Intel, AMD empezó a incursionar directamente en el campo de los microprocesadores.

Actualmente AMD es una empresa que desarrolla procesadores compatibles Intel, permitiendo disponer de un sistema accesible con un alto rendimiento, imágenes y gráficos 3D reales, sonido y video de pantalla completa.

Tipos de procesadores AMD

Am9080: Es una copia, originalmente sin licencia, del Intel 8080. Posteriormente se consiguió un acuerdo con Intel para fabricarlo y fue renombrado a Am8080

Las primeras versiones del Am9080 fueron puestas a la venta en abril de 1974, y funcionaban a una velocidad de reloj de 2 MHz.

Am286: Es un procesador copia del Intel 80286, creado con permiso de Intel, debido a que IBM quería que Intel tuviese una segunda fuente para poder suplir la demanda en caso de problemas.

Por lo tanto el Am286 es idéntico al Intel 80286. Posteriomente AMD lo vendió como procesador embedido.

Am386: Fue creado por AMD en 1991. Era un procesador con características semejantes al Intel 80386 y compatible 100% con este último, lo que le valió varios recursos legales de Intel por copiar su tecnología. Tenía una velocidad de hasta 40 MHz lo que superaba a su competidor que sólo llegó a los 33 MHz.

Am486: Fue presentado en 1993 por Advanced Micro Devices ( AMD ). Es un procesador compatible x86, comparable al Intel 80486.

AMD 5x86: Es un procesador compatible x86 presentado en 1995 por Advanced Micro Devices destinado a ser utilizado en ordenadores basados en un 486.

Presentado en noviembre de 1995, el AMD 5x86 es un procesador 486 estándar con un multiplicador interno a 4x, permitiéndole funcionar a 133 Mhz en sistemas para procesadores 486 DX2 o DX4 sin multiplicador. Tenía una memoria caché L1 de 16 Kbytes. Esta combinación permitió al 5x86 igualar e incluso sobrepasar ligeramente un procesador Pentium a 75 Mhz. Además, como fue concebido en base a un 486, era compatible con sistemas más antiguos, lo que perjudicaba ligeramente a su rival más rápido, el Cyrix Cx5x86.

AMD K6: fue lanzado en 1997. Este procesador estaba diseñado para funcionar en placas base Pentium. La principal ventaja del AMD con respecto al Pentium era su precio, bastante económico con las mismas prestaciones. El K6 tuvo una gran aceptación en el mercado presentándose como un rival fuerte para Intel. Su sucesor fue el microprocesador K6-2.

Fuente: Internet (AMDK6.wikipedia.com)

El K6 cuenta con una gama que va desde los 166 hasta los 300 Mhz y con el juego de instrucciones MMX, que ya se ha convertido en un estándar.

AMD Duron: Es una gama de microprocesadores de bajo costo compatibles con los Athlon, por lo tanto con arquitectura x86. Fueron diseñados para competir con la línea de procesadores Celeron de Intel.

La diferencia principal entre los Athlon y los Duron es que los Duron solo tienen 64 KBytes de memoria caché L2, frente a los 256 KBytes de los Athlon.

El Athlon: Originalmente el Athlon Classic, fue el primer procesador x86 de séptima generación y en un principio mantuvo su liderazgo de rendimiento sobre los microprocesadores de Intel.

El procesador Athlon se lanzó al mercado el 21 de agosto de 1999. El primer núcleo del Athlon, conocido en clave como "K7", estuvo disponible incialmente en versiones de 500 a 650 MHz, pero después alcanzó velocidades de hasta 1 GHz.

Internamente el Athlon es un rediseño de su antecesor, al que se le mejoró sustancialmente el sistema de coma flotante, esto es, 3 unidades de punto flotante que pueden trabajar simultánemente y se le aumentó la memoria caché de primer nivel (L1) a 128 KB (64 KB para datos y 64 KB para instrucciones). Además incluye 512 KB de caché de segundo nivel (L2) externa al circuito integrado del procesador y funcionando, por lo general, a la mitad de velocidad del mismo.

El AMD Opteron: Fue el primer microprocesador con arquitectura x86 que usó conjunto de instrucciones AMD64, también conocido como x86-64. También fue el primer procesador x86 de octava generación. Fue puesto a la venta el 22 de abril de 2003 con el propósito de competir en el mercado de procesadores para servidores, especialmente en el mismo segmento que el Intel Xeon.

La ventaja principal del Opteron es la capacidad de ejecutar tanto aplicaciones de 64 bits como de 32 bits sin ninguna penalización de velocidad. Las nuevas aplicaciones de 64 bits pueden acceder a más de 18 Hexabytes de memoria, frente a los 4 gigabytes de las de 32 bits.

Sempron: Es un procesador de bajo costo con arquitectura X86 fabricado por AMD. El AMD Sempron reemplaza al procesador Duron, siendo su principal competidor el procesador Celeron de Intel. Las primeras versiones fueron lanzadas al mercado en agosto de 2004.

Las versiones iniciales de este procesador estaban basadas en el núcleo Thoroughbred/Thorton del Athlon XP, con una caché de segundo nivel de 256 KB y un bus de 333 MHz.

Posteriormente el Sempron se basó en el núcleo Barton del Athlon XP. Esta versión tenía un índice de prestaciones relativas de 3000+ y poseía una caché de segundo nivel de 512 KB.

AMD Turion 64: Es una versión de bajo consumo del procesador AMD Athlon 64 destinada a los ordenadores portátiles y constituye la respuesta comercial de AMD a la plataforma Centrino de Intel. Se presentan en dos series, ML con un consumo máximo de 35 W y MT con un consumo de 25 W, frente a los 27 W del Intel Pentium M.

Es compatible con el Socket 754 de AMD y dispone de 512 o 1024 KB de cache L2 y un controlador de memoria de 64 bit integrado.

4.6 MICROPROCESADOR CYRIX

Ha sido el tercero entre los procesadores Intel compatibles. Sus procesadores se han caracterizado por tener una regular unidad de coma flotante, por lo que no es una buena opción para los que utilicen programas CAD, 3D, e incluso juegos. Además de esto, se ha caracterizado también por sus diseños avanzados y "originales" lo que le ha provocado más de un inconveniente por falta de compatibilidad.

Sus primeras versiones de 6x86 Cyrix tuvieron serios problemas debido a su alto consumo, lo que generaba un calentamiento excesivo en los reguladores de tensión de la placa base.

Fuente: Internet.

Estos dispositivos presentaban también un problema con Windows NT4, ya que dicho sistema operativo desactivaba la caché del procesador, y por tanto éste se ejecutaba muy lentamente.

6x86MX: Este es el primer microprocesador de Cyrix que lleva implementado el juego de instrucciones MMX. Sus desventajas son el bajo rendimiento de su coprocesador matemático, lo que conlleva que por lo menos dos de sus procesadores trabajen con una velocidad de bus de 75 y 83 Mhz.

De todas formas, para compensar este posible problema, Cyrix ha implementado multiplicadores de x2, x2.5, x3 y x3.5, y garantizan que siempre se podrá trabajar con una frecuencia de bus más normal y ajustar el multiplicador para que la CPU trabaje a una frecuencia parecida a la autorizada.

MII: Su diseño es idéntico al del 6x86MX, y sólo consigue imponerse a aquel por la mayor velocidad de sus nuevos modelos.

Fuente: Internet.

El problema de este procesador es tener una FPU poco potente. Este problema se agudiza con los actuales juegos 3D y unas cada vez mayores necesidades de este tipo de cálculos, lo que lo condena a quedar relegado a entornos ofimáticos.

Una de las ventajas es que funciona con cualquier placa preparada para MMX, no necesita de placas de última generación con voltajes más bajos de 2,9. Lo anterior permite actualizar la máquina a 300 Mhz sin necesidad de cambiar de placa.

4.7 Microprocesadores INTEL

Intel Corporation es una compañía pionera en el desarrollo y comercialización de microprocesadores. Actualmente, tiene una cuota del mercado mundial de los microprocesadores muy grande, ya que sus procesadores se utilizan en la mayoría de los computadores compatibles PC.

x86 es la denominación genérica dada a ciertos procesadores de la familia Intel, sus compatibles y a la arquitectura básica de estos procesadores, por la terminación de sus nombres: 8086, 80286, 80386 y 80486. Los sucesores del 80486 pasaron a ser llamados por nombres no numéricos, bajo la denominación Pentium; sin embargo todavía se los llama procesadores de la familia x86. A continuación se describen los microprocesadores más representativos.

Intel 4004: fue el primer microprocesador de 4 bits en un simple chip, así como el primero disponible comercialmente.

Intel 4040: fue el sucesor del Intel 4004. Fue lanzado al mercado en 1974. El 4040 fue usado principalmente en juegos, pruebas, desarrollo, y equipos del control. El paquete del 4040 era más de dos veces el ancho del 4004 y tenía 24 pines en lugar de los 16 del 4004. El 4040 agregó 14 instrucciones, un espacio más grande para la pila ( 7 niveles en vez de 3 ), un espacio para programas de 8KB, 8 registros adicionales, y habilidades de interrupción.

8080 y 8085: son procesadores de 8 bits fabricados por Intel a mediados de los 70. El 8085 era binariamente compatible con el 8080, pero exigía menos soporte de hardware; de esta forma permitía unos sistemas de microordenadores más simples y más económicos.

El número 5 de la numeración del procesador 8085 proviene del hecho que solamente requería una alimentación de 5 voltios, no como el 8080 que necesitaba unas alimentaciones de 5 y 12 voltios.

Entre las características del 8085 se destaca su bus de datos multiplexado, es decir, comparte los pines del bus de datos con los del bus de direcciones.

8086 y 8088: son dos microprocesadores de 16 bits diseñados por Intel en 1978, iniciadores de la arquitectura x86. La diferencia entre el 8086 y el 8088 es que el 8088 utiliza un bus externo de 8 bits, para el empleo circuitos de soporte al microprocesador más económicos, en contraposición al bus de 16 bits del 8086.

80186 y 80188: estos dos microprocesadores fueron desarrollados por Intel alrededor de 1982. Los 80186 y los 80188 son una mejora del Intel 8086 y del Intel 8088 respectivamente. Al igual que el 8086, el 80186 tiene un bus externo de 16 bits, mientras que el 80188 lo tiene de 8 bits como el 8088, para hacerlo más económico. La velocidad de reloj del 80186 y del 80188 es de 6 MHz.

Ambos microprocesadores no fueron muy usados en ordenadores personales, sino que su uso principal fue como procesadores empotrados. Con el 80186 y el 80188 se introdujeron ocho nuevas instrucciones al conjunto de instrucciones x86.

80286: (llamado oficialmente iAPX 286, también conocido como i286 o 286) es un microprocesador de 16 bits de la familia x86, que fue lanzado al mercado por Intel el 1 de febrero de 1982. Las versiones iniciales del i286 funcionaban a 6 y 8 MHz, pero acabó alcanzando una velocidad de hasta 20 MHz. El i286 fue el microprocesador más empleado en los IBM PC y compatibles entre mediados y finales de los años 80.

IA32: Es la arquitectura de microprocesadores de 32 bits de Intel (Intel Architecture 32). Son los microprocesadores más usados en los ordenadores personales (PC).

Esta gama de microprocesadores comenzó con el 80386, conocido luego popularmente como 386 o x86 para denominar a toda la gama. Los procesadores de Intel que siguieron y mantuvieron la compatibilidad son el 486, Pentium (ó 586), Pentium II (ó 686), Pentium III y Pentium IV.

La novedad de estos procesadores con respecto a sus predecesores es que incluyen gestión de memoria avanzada (segmentación, paginación, soporte de memoria virtual), unidad de punto flotante ( FPU ), y a partir del Pentium MMX cuentan con soporte para operaciones matriciales complejas, muy usadas en aplicaciones gráficas y multimedia.

80386: (i386, 386) Es un microprocesador CISC con arquitectura x86. Durante su diseño se le llamó 'P3', debido a que era el prototipo de la tercera generación x86. El i386 fue empleado como la unidad central de proceso de muchos ordenadores personales desde mediados de los años 80 hasta principios de los 90.

80486: (i486, 486) son una familia de microprocesadores de 32 bits con arquitectura x86 diseñados por Intel. Las principales diferencias con el i386 son las siguientes: tienen un conjunto de instrucciones optimizado, una unidad de coma flotante y un caché unificado e integrado en el propio circuito del microprocesador y una unidad de interfaz de bus mejorada.

Pentium: este procesador se lanzó al mercado el 22 de marzo de 1993, sucediendo al procesador Intel 80486. Intel no lo llamó 586 sino Pentium, para poderlo registrar y así evitar que la competencia siguiera utilizando los mismos números que Intel para sus procesadores equivalentes (AMD 486, IBM 486, etc). También es conocido por su nombre clave P54C.

El procesador Intel Pentium está formado por 3,1 millones de transistores y direcciona memoria con 64 bits. Integra dos memorias caché de 8 KBytes (una para datos y otra para código) y tiene dos unidades aritmético lógicas (ALU), lo que le permite hacer tratamiento paralelo. Por tanto el Pentium puede ejecutar hasta dos instrucciones por ciclo de reloj. Está optimizado para ejecutar código de 16 bits.

Evolución del Pentium

En 1997, Intel presentó una evolución de su procesador Pentium, llamado Pentium MMX. Este se basaba en el mismo núcleo del Pentium original, pero se le añadió una memoria caché L1 de 32 KBytes (frente a los 16 KBytes del Pentium común), siendo 16 KB para datos y 16 KB para instrucciones, ordenadas en 4 vías de 4 KB cada una, y 57 nuevas instrucciones multimedia (de coma flotante), llamadas MMX, con el fin de ejecutar más rápidamente las futuras aplicaciones interactivas. Este procesador funcionaba entre 166 y 233 MHz.

Fuente: Internet (wikipedia.com)

El nombre Pentium fue conservado por Intel para las generaciones siguientes de sus procesadores (Pentium Pro, Pentium II, Pentium III, Pentium IV y actualmente Pentium D), aunque exista una evolución importante en las arquitecturas.

Pentium II: este microprocesador fue al mercado el 7 de mayo de 1997. Está basado en una versión modificada del núcleo P6, usado por primera vez en el Intel Pentium Pro.

Fuente: Internet

Los cambios fundamentales fueron mejorar el rendimiento en la ejecución de código de 16 bits, añadir el conjunto de instrucciones MMX y eliminar la memoria caché de segundo nivel del núcleo del procesador, colocándola en una tarjeta de circuito impreso junto a éste.

El Pentium II se comercializó en versiones que funcionaban a una frecuencia de reloj de entre 166 y 450 MHz. La velocidad de bus era originalmente de 66 MHz, pero en las versiones a partir de los 333 MHz se aumentó a 100 MHz.

Poseía 32 KB de memoria caché de primer nivel repartida en 16 KB para datos y otros 16 KB para instrucciones. La caché de segundo nivel era de 512 KB.

Como novedad respecto al resto de procesadores de la época, el Pentium II se presentaba en un encapsulado SEC, con forma de cartucho. El cambio de formato de encapsulado se hizo para mejorar la disipación de calor. Este cartucho se conecta a las placas base de los equipos mediante una ranura Slot 1. este microprocesador integra 7,5 millones de transistores.

Celeron: es el nombre que lleva la línea de procesadores de bajo costo de Intel. El primer Celeron fue lanzado en agosto de 1998, y estaba basado en el Pentium II. Posteriormente, salieron nuevos modelos basados en las tecnologías Pentium III y Pentium IV.

Los procesadores Celeron se dividen en dos grandes clases:

• P6: Basada en los procesadores Pentium II y Pentium III

• Netburst: Basada en los procesadores Pentium IV

Pentium III: es un microprocesador de arquitectura i686. Fue lanzado el 26 de febrero de 1999. Las primeras versiones eran muy similares al Pentium II, siendo la diferencia más importante la introducción de las instrucciones SSE. Al igual que con el Pentium II, existía una versión Celeron de bajo costo y una versión Xeon para quienes necesitaban gran poder de cómputo. Esta línea ha sido eventualmente reemplazada por el Pentium IV, aunque la línea Pentium M está basada en el Pentium III.

Fuente: Internet

Pentium IV: es un microprocesador de séptima generación basado en la arquitectura x86 y manufacturado por Intel. Es el primer microprocesador con un diseño completamente nuevo desde el Pentium Pro de 1995. El Pentium IV original, denominado Willamette, trabajaba a 1,4 y 1,5 GHz; y fue lanzado en noviembre de 2000.

Para la sorpresa de la industria informática, el Pentium IV no mejoró el diseño P6 según las dos tradicionales formas para medir el rendimiento: velocidad en el proceso de enteros u operaciones de coma flotante. La estrategia de Intel fue sacrificar el rendimiento de cada ciclo para obtener a cambio mayor cantidad de ciclos por segundo y una mejora en las instrucciones SSE. Al igual que los demás procesadores de Intel, el Pentium IV se comercializa en una versión para equipos de bajo presupuesto (Celeron) y una orientada a servidores de gama alta (Xeon).

Pentium IV EDICIÓN EXTREMA: en septiembre de 2003, Intel anunció la edición extrema (Extreme Edition) del Pentium IV. Se destacó en el área de la codificación multimedia, ya que superaba la velocidad de los anteriores Pentium 4 y a toda la línea de AMD.

Pentium M: Fue Introducido en marzo de 2003. Este microprocesador cuenta con una arquitectura x86 (i686). Originalmente fue diseñado para uso en ordenadores portátiles. Su nombre en clave antes de su introducción era '''Banias'''. Todos los nombres clave del Pentium M son lugares de Israel, la ubicación del equipo de diseño del Pentium M.

El Pentium M es una versión fuertemente modificada del diseño del Pentium III. Está optimizado para un consumo de potencia eficiente, una característica vital para ampliar la duración de la batería de los ordenadores portátiles. Funciona con un consumo medio muy bajo y desprende mucho menos calor que los procesadores de ordenadores de sobremesa. El Pentium M funciona a una frecuencia de reloj más baja que los procesadores Pentium IV normales, pero con un rendimiento similar, y puede igualar o superar el rendimiento de un Pentium IV Prescott a 3 GHz.

Este procesador forma parte de la plataforma Intel Centrino.

Pentium D: fue introducido por Intel en 2005. Un chip Pentium D consta básicamente de dos procesadores Pentium IV (de núcleo Prescott) en una única pieza de silicio con un proceso de fabricación de 90nm. El nombre en clave del Pentium D antes de su lanzamiento era "Smithfield". Incluye una tecnología DRM (Digital Rights Management) para hacer posible un sistema de protección anticopia de la mano de Microsoft.

Xeon: es la actual generación de microprocesadores Intel para servidores PC. El primer procesador Xeon apareció en 1998 como Pentium II Xeon.

El Pentium II Xeon utilizaba tanto el chipset 440GX como el 450NX. En el año 2000, el Pentium II Xeon fue reemplazado por el Pentium III Xeon

El último miembro añadido a la familia Xeon es el procesador Xeon MP, lanzado en 2002, que combinaba la tecnología Hyper-Threading con NetBurst. Sus chipsets utilizan el socket 603 y tiene versiones GC-LE (2 procesadores, 16Gb de memoria direccionable) y GC-HE (4 procesadores o más, 64Gb direccionables), todos usando un bus de 400MHz.

Como la familia x86/IA-32 estándar de Intel de procesadores PC de escritorio, la línea de procesadores Xeon es de 32 bits. Se planea una versión de 64 bits de Xeon que complementará (o reemplazará) a la CPU Itanium de Intel.

El 26 de junio de 2006, Intel anunció la nueva generación de Xeon con tecnología de doble núcleo. Intel afirma que este nuevo procesador brindará un 80% más de rendimiento por vatio y que será hasta un 60% más rápido que la competencia.

Intel Core Duo: es el microprocesador de Intel que cuenta con dos núcleos de ejecución. Fue lanzado en enero del 2006. El microprocesador Intel Core Duo está optimizado para las aplicaciones de subprocesos múltiples y para la multitarea. Puede ejecutar varias aplicaciones simultáneamente, como juegos con gráficos o programas que requieran muchos cálculos, al mismo tiempo que puede descargar música o analizar su PC con su antivirus en el segundo plano.

Este microprocesador implementa 2Mb de caché compartida para ambos núcleos más un bus frontal de 667Mhz; además implementa un nuevo juego de instrucciones para multimedia (SSE3) y mejoras para las SSD y SSD2; sin embargo, el desempeño con enteros es ligeramente inferior debido a su caché con mayor latencia

Intel Core Duo es el primer microprocesador de Intel usado en las computadoras Apple Macintosh.

El Core Duo contiene 151 millones de transistores. El núcleo de ejecución del procesador contiene un pipeline de 12 etapas con velocidades previstas de ejecución entre 2.33 y 2.50 GHz. La comunicación entre la caché L2 y los dos núcleos de ejecución es controlada por un módulo de bus árbitro que elimina el tráfico de coherencia a través del bus frontal (FSB), con el costo de elevar la latencia de la comunicación de núcleo a L2 de 10 ciclos de reloj. El incremento de la frecuencia de reloj contrapesa el impacto del incremento en la latencia.

Las nuevas características de administración de energía incluyen control mejorado de temperatura, así como escalado independiente de energía entre los 2 núcleos, lo que resulta en un manejo de energía mucho más eficiente que los diseños anteriores.

CAPÍTULO 2

MICROPROCESADORES DE 8 BITS

MICROPROCESADORES de 8 bits: INTEL 8080 e INTEL 8085

A continuación se hará una descripción general, de dos de los microprocesadores de 8 bits, más representativos.

1. CARACTERÍSTICAS GENERALES

El Intel 8080 fue el sucesor del Intel 8008; esto se dio fácilmente ya que eran compatibles en muchos aspectos y porque utilizaban el mismo conjunto de instrucciones. El i8080 salió al mercado en el año de 1974, con un empaquetado más grande, DIP de 40 pines, lo que permitió al 8080 proporcionar un bus de direcciones de 16 bits y un bus de datos de 8 bits, permitiendo el fácil acceso a 64 KB de memoria. Tenía siete registros de 8 bits, seis de los cuales se podían combinar en tres registros de 16 bits, un puntero de pila en memoria de 16 bits, que reemplazaba la pila interna del 8008, y un contador de programa de 16 bits.

El 8080 podía manejar 256 puertos de E/S, los cuáles eran accesados por los programas mediante instrucciones dedicadas de E/S. Este esquema usaba un espacio de direcciones separado para las entradas/salidas, pero ahora es menos común que el de mapeo de memoria para dispositivos o puertos de E/S.

El 8080 fue implementado en muchos de los primeros microcomputadores, tales como la Altair 8800 de MITS y el IMSAI 8080, formando la base para las máquinas que corrían el sistema operativo CP/M.

El primer microcomputador en una simple tarjeta fue construido en base al 8080. Por medio de su arquitectura de conjunto de instrucciones (ISA), el 8080 hizo un impacto duradero en historia del computador.

El Intel 8085 fue presentado en el año de 1976 y se consideró un estándar de la industria de microprocesadores durante mucho tiempo. Tenía 20.000 transistores, funcionaba a 1 MHz y estaba encapsulado en un chip de 40 pines.

Este microprocesador tiene un total de 16 líneas de dirección. Las 8 líneas de dirección más significativas están conectadas a los pines A8 y A15, y se conectan directamente al bus de direcciones. El bus de datos de 8 bits está compartido con las 8 líneas de dirección menos significativas. Los pines de alimentación VCC y VSS deben ser conectados a una fuente de +5V.

El 8085 tiene circuitería de reloj permanente y solo necesita conectar los pines de entrada X1 y X2 a un cristal.

2. FUNCIONES Y DIAGRAMA DE PINES

El microprocesador 8080 es un chip de 40 pines con encapsulado de doble línea o DIP. Tiene 16 líneas de direcciones ( pin 1, pines 25 al 27 y pines 29 al 40 ) y 8 líneas bidireccionales para el de bus datos ( pines 3 al 10 ). Todas estas líneas se encargan del direccionamiento de la memoria y los dispositivos de entrada/salida, y del manejo de los datos.

A continuación se presenta el diagrama de pines del i8080 y se anexa una tabla con la descripción de cada una de sus funciones.

NOMBRE DEL PIN TIPO DESCRIPCIÓN

Líneas de dirección ( A15 - A0 ) Salida Provee la dirección de memoria o número de dispositivo entrada/salida. A0 denota el bit menos significativo

Líneas de datos ( D7 - D0 ) Entrada/Salida Provee comunicación bidireccional de instrucciones o datos entre la CPU y la memoria o dispositivos de entrada/salida. D0 es el bit menos significativo.

Señal de sincronismo (SYNC) Salida La señal de sincronismo indica el comienzo de cada ciclo máquina.

Señal de entrada de datos (DBIN) Salida Indica a los dispositivos externos que el bus de datos está en modo de entrada.

Listo (READY) Entrada Indica al 8080a que hay un dato válido de la memoria o dispositivo de entrada/salida en el bus de datos. Esta señal permite sincronizar la CPU con dispositivos más lentos. Si después de enviar una dirección no se recibe la señal de READY, la CPU entra en estado de espera hasta recibirla.

Espera (WAIT) Salida Indica que la CPU se encuentra en estado de espera.

Escritura ( )

Salida Señal de control de escritura para la memoria o dispositivo de entrada/salida.

Reposo (HOLD) Entrada • La CPU entra en estado de reposo, es decir, permite que un dispositivo externo tenga el control del bus de direcciones y de datos.

Reconocimiento de reposo (HLDA) Salida Esta señal aparece en respuesta a la señal HOLD e indica que el bus de datos y direcciones entran en estado de alta impedancia.

Habilitación de interrupción (INTE) Salida Indica el estado interno del flip-flop de habilitación de interrupción. Cuando es 0 se deshabilita la interrupción y cuando es igual a 1 es habilitada. Cuando la CPU se reinicia las interrupciones son deshabilitadas.

Petición de interrupción (INT) Entrada La CPU reconoce la petición de interrupción y la atiende al final de la actual instrucción o mientras esté detenido. Si se encuentra en estado de reposo o deshabilitadas las interrupciones no atiende la petición.

Reinicio (RESET) Entrada Mientras la señal esté activa el contador de programa es borrado. Después se reanudará en la posición de memoria 0.

Tierra (VSS) Alimentación Tierra o referencia

VDD Alimentación +12V V

VCC Alimentación +5V V

VBB Alimentación -5V V

Fases de reloj ( )

Reloj 2 fases externas de reloj suplementarias

Al igual que el i8080, el microprocesador 8085, su sucesor, es un procesador de 8 bits con un encapsulado DIP de 40 pines. Su diagrama de pines se ilustra en la siguiente figura. En la tabla anexa se resumen los nombres y descripciones de sus pines.

NOMBRE DEL PIN TIPO DESCRIPCION

( AD7 - AD0 ) Entrada/salida Bus de direcciones y datos, tres estados.

( A15 - A8 ) Salida Bus de direcciones, tres estados.

ALE Salida Señal de habilitación del cerrojo de dirección.

Salida Control de lectura.

Salida Control de escritura.

IO/

Salida E/S o indicador de memoria.

S0, S1 Salida Indicadores del estado del bus.

READY Entrada Petición de estado de espera.

SID Entrada Entrada de datos serie.

SOD Salida Salida de datos serie

HOLD Entrada Petición de reposo.

HLDA Salida Conocimiento de reposo.

INTR Entrada Petición de interrupción.

TRAP Entrada Petición de interrupción no enmascarable.

RST5.5 Entrada Petición de interrupción hardware vectorizadas.

RST6.5 Entrada Petición de interrupción hardware vectorizadas.

RST7.5 Entrada Petición de interrupción hardware vectorizadas.

Salida Conocimiento de interrupción.

IN

Entrada Reinicialización del sistema.

REINICIALIZACIÓN OUT Salida Reinicialización de los periféricos

X1, X2 Entrada Conexiones al cristal o RC.

CLK Salida Señal de reloj

VCC, Vss Alimentación + 5V, tierra.

Con las funciones añadidas del 8085, los 40 pines del chip no eran suficientes para todas las entradas y salidas. Por esta razón, el fabricante utiliza los pines 12 al 19 como líneas de propósito doble: de direcciones y datos (AD7 - AD0). Se dice entonces que esta unidad tiene un bus multiplexado de datos y direcciones.

El 8085 tiene una señal especial para informar a los periféricos cuándo el bus de direcciones/datos envía una dirección y cuando funciona como bus de datos. La señal especial se denomina señal de control de habilitación del cerrojo de direcciones (ALE). Se debe observar que los pines del bus de direcciones/datos son bidireccionales o pueden ser también de tres estados o alta impedancia.

Las salidas de control de lectura ( ) y escritura ( ) son utilizadas para informar a la memoria o dispositivos de entrada/salida cuando hay que enviar o recibir datos vía el bus de datos.

La entrada de reinicialización ( ) actúa como el reset de la CPU, ya que el contador de programa se ubica en la posición 0000H de la memoria. Los buses de datos y direcciones y líneas de control están en triestado durante la reinicialización. El contenido de los registros internos también puede ser alterado durante una reinicialización. El pin REINICIALIZACIÓN OUT está asociado con la operación de reinicialización. Como la CPU se está reinicializando, el pin REINICIALIZACIÓN OUT envía una señal a los periféricos que les informa que el sistema se va reiniciar.

La entrada de petición de interrupción (INTR) al 8085 es una interrupción de propósito general. Sin embargo, puede ser habilitada o deshabilitada por instrucciones de software. Además de la petición regular de interrupciones, la CPU tiene otras cuatro entradas de interrupción. Estos son los pines de entrada TRAP, RST7.5, RST6.5 y RST5.5. TRAP es la interrupción de mayor prioridad.

La interrupción INTR salta a una dirección dictada por una instrucción especial recibida, de un dispositivo periférico, cuando es activada la salida de conocimiento de interrupción ( ) de la CPU.

EL pin de entrada HOLD (reposo) notifica a la CPU que otro dispositivo quiere utilizar los buses de direcciones y datos. Esto puede ocurrir durante operaciones de acceso directo a memoria. Después de recibir una entrada HOLD, la CPU completará las transferencias actuales de datos en los buses. Entonces los pines de direcciones, datos, , e IO/ del 8085 se ponen en alta impedancia para no interferir con las transferencias de datos en los buses.

Una salida HLDA (conocimiento de reposo) indica a un periférico que se ha recibido una petición HOLD y que el microprocesador abandonará el control de los buses en el siguiente ciclo de reloj.

Las salidas IO/ , S0 y S1 son señales de control que notifican a los periféricos el tipo de ciclo de máquina que está realizando la CPU. Los tipos de ciclo de máquina aparecen a la derecha de la tabla. La combinación adecuada de las señales de salida de los pines IO/ , S0 y S1 se detalla en la columna de la izquierda.

Señales de control del 8085 Status de ciclos de máquina

IO/

S0 S1

0 0 1 Escritura en memoria

0 1 0 Lectura de memoria

1 0 1 Escritura de E/S

1 1 0 Lectura de E/S

0 1 1 Búsqueda del código de operación

1 1 1 Conocimiento de interrupción

* 0 0 Alto

* X X Reposo

* X X Reinicialización

* = condición de tres estados

X = no especificado.

3. ARQUITECTURA INTERNA

La organización interna o arquitectura del microprocesador 8080 se muestra en la siguiente figura.

Registros

El formato de datos e instrucciones que se manejan, es de enteros de 8 bits. Todas las transferencias sobre el bus de datos del sistema se realizan con este formato.

D7 D6 D5 D4 D3 D2 D1 D0

Las instrucciones de programa pueden tener tamaño de uno, dos o tres bytes de longitud. Los múltiples bytes de instrucciones deben ser guardados en palabras sucesivas en la memoria del programa. El formato de las instrucciones dependerá de la operación ejecutada en particular.

Las entradas o salidas de datos a la unidad, se realizan a través del bus de datos interno de 8 bits. Los datos pueden fluir desde el bus de datos interno al acumulador de 8 bits o a los registros temporales, registro de instrucciones, unidad de control de interrupción, unidad de control de E/S o cualquiera de los registros de propósito general (B, C, D, E, H y L). Cuenta también con un puntero de pila de 16 bits, un contador de programa de 16 bits y un buffer de datos/direcciones.

La unidad aritmético lógica está alimentada por dos registros de 8 bits (registro acumulador y registro temporal). Los flip-flops señalizadores tienen cinco indicadores de estado.

El registro de instrucciones alimenta al decodificador de instrucciones, el cual interpreta la instrucción actual y determina el microprograma que debe seguir. El decodificador de instrucciones también indica a las secciones de control y temporización sobre la secuencia de eventos que deben realizarse. La sección de temporización y control coordina las acciones del procesador y los periféricos.

El microprocesador 8085, cuenta con las mismas unidades estructurales del i8080: una unidad de control, una unidad lógico aritmética, un conjunto de registros y un bus interno de interconexión; pero incluye dos componentes adicionales bastante interesantes: una unidad para el control de las interrupciones y una comunicación serie sencilla.

También utiliza registros de 8 y 16 bits. Seis de estos registros pueden utilizarse como registros de 8 bits o como tres registros de 16 bits.

A continuación se presenta el diagrama interno o la arquitectura del microprocesador 8085.

Algunos de los registros más importantes, son los siguientes:

• El acumulador: es el centro de todas las operaciones de la ALU, la cual incluye instrucciones aritméticas, lógicas, de carga y de E/S. Es un registro de 8 bits.

• Los registros de propósito general BC, DE y HL pueden ser utilizados como seis registros de 8 bits o como tres registros de 16 bits dependiendo de la instrucción que se vaya a ejecutar. El registro HL llamado puntero de datos puede ser utilizado para apuntar a direcciones. Pocas instrucciones utilizan los registros BC y DE como punteros de dirección, ya que normalmente se utilizan como registros de datos de propósito general.

• El contador de programa (PC) siempre señala la posición de memoria de la siguiente instrucción que se va a ejecutar. Siempre contiene una dirección de 16 bits.

• El puntero de pila (SP) es un puntero de dirección de propósito especial (o puntero de dato) que siempre apunta a la parte superior de la pila de la RAM. Es un registro de 16 bits. Este registro se decrementa cada vez que se introduce un dato en la pila y se incrementa cada vez que se saca el dato de la pila.

• El registro de señalizadores ( Flags ) contiene cinco señalizadores de 1 bit con la información del estado de la CPU. Estos señalizadores son utilizados generalmente por instrucciones de bifurcación condicional y llamada y vuelta de subrutina. Este registro se presentan a continuación:

S Z AC P CY

B7 B6 B5 B4 B3 B2 B1 B0

El señalizador de arrastre (CY) es puesto a 1 ó 0 por operaciones aritméticas, y su estado es examinado por las instrucciones del programa. Un desbordamiento de una suma de 8 bits genera en el registro un set (1) en la bandera CY. En la resta el señalizador actua como un señalizador de “préstamo”, indicando que el minuendo es menor que el sustraendo si el señalizador está en 1.

El señalizador de paridad (P) examina el número de bits 1 del acumulador. Si éste contiene un número par de 1, se dice que existe paridad par y el señalizador de paridad se pone a 1. Sin embargo, si el acumulador contiene un número impar de 1 (paridad impar), el señalizador de paridad se pone en 0.

El señalizador de arrastre auxiliar (AC) indica desbordamiento o arrastre del bit 3 del acumulador de la misma forma que el señalizador de arrastre indica desbordamiento del bit 7. Esta señalizador es utilizado comúnmente en aritmética BCD (decimal codificado binario).

El señalizador de cero (Z) se pone a 1 si el resultado de ciertas operaciones es cero. El señalizador de cero está a 0 si el resultado no es cero.

El señalizador de signo (S) indica la condición del bit más significativo del acumulador después de la ejecución de instrucciones aritmético-lógicas. Estas instrucciones utilizan el MSB del dato para representar el signo del número contenido en el acumulador. Un señalizador de signo a 1 representa un número negativo, mientras que si es 0 representa un número positivo.

Los registros programables del i8085 se resumen en la siguiente tabla. El acumulador principal de 8 bits se etiqueta A; los otros registro de propósito general de 8 bits ( etiquetados B, C, D, E, H y L ) también se denominan acumuladores secundarios o contadores de datos. Además, los registros de 16 bits que son: el puntero de pila (SP) y el contador de programa (PC).

PSW (8) A (8)

B (8) C (8)

D (8) E (8)

H (8) L (8)

SP (16)

PC (16)

Unidad aritmético lógica: las operaciones aritméticas, lógicas y de desplazamiento son realizadas en la ALU. Los resultados de estas operaciones se almacenan en el acumulador. La ALU basa su funcionamiento en el registro acumulador, el registro de señalizadores y en algunos registros temporales que son inaccesibles al programador.

Registro de instrucción y decodificador: durante una búsqueda de instrucción, el primer byte de la instrucción, el código de operación, es transferido al registro de instrucción de 8 bits. El contenido de dicho registro queda entonces disponible para el decodificador de instrucciones. Allí se interpreta la instrucción, y a través de sus circuitos y señales de temporización y control, ejecuta las diferentes tareas en los registros, la ALU, la memoria y los buffers de datos y direcciones.

Generador del reloj interno: el 8085 incorpora un generador completo de reloj en el mismo chip. Requiere solamente la adición de un cristal de cuarzo para establecer la temporización de su operación. El pin de salida CLK es una salida de reloj que tiene una frecuencia de una vez y media la frecuencia del cristal.

4. MODOS DE DIRECCIONAMIENTO

Un modo de direccionamiento es la técnica empleada para buscar el operando deseado durante la ejecución de una instrucción.

En los microprocesadores i8080 e i8085, se tienen principalmente cinco modos de direccionamiento. Estos son:

• Direccionamiento inmediato.

• Direccionamiento directo.

• Direccionamiento indirecto de registro.

• Direccionamiento implicado.

• Direccionamiento de registro.

Direccionamiento inmediato: las instrucciones que utilizan direccionamiento inmediato tienen los datos inmediatamente a continuación del código de operación en la memoria del programa. Por ejemplo, se tiene la instrucción:

ADDI: suma inmediata

El microprocesador busca el código de operación en la memoria del programa. Después de decodificar la instrucción encuentra el dato inmediato en la siguiente posición consecutiva de la memoria del programa, después del código de operación. En este caso, el dato inmediato se suma al contenido del acumulador y el resultado es guardado en el acumulador.

Las instrucciones inmediatas utilizan el acumulador como operando implicado; por ejemplo la instrucción MVI puede transferir datos inmediatos a cualquier registro o posición de memoria. La instrucción LXI carga un registro par con un valor de 16 bits y por tanto no afecta al acumulador.

Direccionamiento directo: este tipo de instrucciones se especifican utilizando formato de instrucción de 3 bytes. El byte 1 contiene el código de operación para la instrucción de direccionamiento directo. El byte 2 contiene el byte de orden inferior de la dirección del operando. El byte 3 de la instrucción contiene el byte de orden superior de la dirección del operando. Por ejemplo, la instrucción:

LDA: cargar A directo

En este caso el código de operación es 3AH. Los 2 siguientes bytes de la memoria son ensamblados por el microprocesador en una dirección de 16 bits. Esta dirección de la memoria de datos es accedida por la CPU y su contenido cargado en el acumulador.

Las instrucciones que utilizan direccionamiento directo a veces son evitadas ya que requieren de mucho espacio en la memoria de programa, al igual que tiempo de ejecución relativamente largo, debido a los numerosos accesos a memoria que se necesitan.

Direccionamiento indirecto de registro: las instrucciones de registro indirecto referencian la memoria utilizando el contenido de un registro par para señalar la dirección del operando. Por ejemplo, la instrucción:

ADDM: sumar memoria

Esta instrucción suma el contenido del acumulador con el contenido de la posición de memoria indicado por la dirección del registro HL de la CPU.

Direccionamiento implicado: el modo de direccionamiento de ciertas instrucciones es implicado o inherente a, por la función de la instrucción. Por ejemplo, la instrucción:

STC: poner a 1 el señalizador de arrastre

Esta instrucción se relaciona con el señalizador de arrastre solamente y no con otros registros o posiciones de memoria.

Direccionamiento de registro: cuando se utilizan el tipo de instrucciones que utilizan direccionamiento de registro, se especifican la fuente del operando y la operación. Consideremos la ejecución de la instrucción:

ADD C: sumar el registro C con el acumulador

Una vez que se ejecuta la instrucción el resultado se deposita en el acumulador. Se considera del tipo de direccionamiento de registros porque ambos operandos estaban localizados en registros internos del microprocesador. Estas instrucciones son muy eficientes ya que solamente utilizan un espacio de la memoria de programa de 1 byte. También se ejecutan rápidamente porque no tienen que buscar operandos en memoria. Los accesos de memoria aumentan el tiempo de ejecución de la instrucción.

Modos de direccionamiento combinados: algunas instrucciones son de direccionamiento combinado, como por ejemplo la llamada a subrutina CALL, en la cual se tiene direccionamiento directo e indirecto de registro.

En este caso el direccionamiento directo especifica la dirección de la subrutina deseada y el direccionamiento indirecto es el del puntero de pila.

5. REPERTORIO DE INSTRUCCIONES

El grupo de instrucciones que un microprocesador puede ejecutar, se denomina su repertorio de instrucciones. Todas las instrucciones de un programa son almacenadas en un área denominada memoria de programa. El conjunto de instrucciones del 8080 es el mismo del 8085; aunque este último cuenta con dos nuevas instrucciones en su repertorio.

Las instrucciones se pueden agrupar en las siguientes categorías funcionales:

Grupo de transferencia de datos: en este grupo se encuentran las instrucciones de transferencias, cargas, almacenamientos e intercambios.

Algunas de las principales instrucciones de este tipo, con su direccionamiento, ciclos, estados y señalizadores, son especificadas a continuación.

MOV r1, r2 (transfiere registro)

(r1) (r2)

El contenido del registro r2 es transferido al registro r1.

Ciclos: 1

Estados: 4 (8085), 5 (8080)

Direccionamiento: registro

Señalizadores: ninguno

MOV r, M (transfiere de memoria)

(r) (H) (L)

El contenido de la posición de memoria, cuya dirección está en los registros H y L es transferido al registro r.

Ciclos: 2

Estados: 7

Direccionamiento: indirecto a registro

Señalizadores: ninguno

MOV M, r (transfiere a memoria)

(H) (L) (r)

El contenido del registo r es transferido a la posición de memoria cuya dirección está en los registros H y L.

Ciclos: 2

Estados: 7

Direccionamiento: indirecto a registro

Señalizadores: ninguno

MVI r, dato (transferencia inmediata)

(r) (byte2)

El contenido del byte 2 de la instrucción es transferido al registro r.

Ciclos: 2

Estados: 7

Direccionamiento: inmediato

Señalizadores: ninguno

LDA addr (carga acumulador directo)

(A) (byte3) (byte2)

El contenido de la posición de memoria, cuya dirección está especificada en los bytes 2 y 3 de la instrucción, es transferido al registro A.

Ciclos: 4

Estados: 13

Direccionamiento: directo

Señalizadores: ninguno

Grupo aritmético: en este grupo se encuentran las instrucciones que realizan sumas, restas, incrementos o decrementos en datos de registros o memoria.

Algunas de las principales instrucciones de este tipo, con su direccionamiento, ciclos, estados y señalizadores, son especificadas a continuación.

ADDr (Suma registros)

(A) (A)+(r)

El contenido del registro r es sumado al contenido del acumulador. El resultado se coloca en el acumulador.

Ciclos: 1

Estados: 4

Direccionamiento: registro

Señalizadores: Z,S,P,CY,AC

ADI dato (Suma inmediata)

(A) (A)+(byte2)

El contenido del segundo byte de la instrucción es sumado al contenido del acumulador. El resultado se coloca en el acumulador.

Ciclos: 2

Estados: 7

Direccionamiento: inmediato

Señalizadores: Z,S,P,CY,AC

SUBr (Resta registro)

(A) (A)-(r)

El contenido del registro r es restado al contenido del acumulador. El resultado se coloca en el acumulador.

Ciclos: 1

Estados: 4

Direccionamiento: registro

Señalizadores: Z,S,P,CY,AC

SUB M (Resta memoria)

(A) (A)-((H) (L))

El contenido de la posición de memoria cuya dirección está contenida en los registros H y L es restado al contenido del acumulador. El resultado se coloca en el acumulador.

Ciclos: 2

Estados: 7

Direccionamiento: indirecto de registro

Señalizadores: Z,S,P,CY,AC

INRr (Incrementa registro)

(r) (r)+1

El contenido del registro r es incrementado en uno.

Ciclos: 1

Estados: 4 (8085), 5(8080)

Direccionamiento: registro

Señalizadores: Z,S,P,AC

DCR M (Decrementa memoria)

(H) (L) (H) (L)-1

El contenido de la posición de memoria cuya dirección está contenida en los registros H y L es decrementado en uno. Todos los señalizadores son afectados excepto CY.

Ciclos: 3

Estados: 10

Direccionamiento: indirecto de registro

Señalizadores: Z,S,P,AC

Grupo lógico: en este grupo se encuentran las instrucciones que realizan operaciones AND, OR y XOR, comparaciones, desplazamientos circulares o complementos de datos en registros o entre memoria y un registro.

Algunas de las principales instrucciones de este tipo, con su direccionamiento, ciclos, estados y señalizadores, son especificadas a continuación.

ANAr (And registro)

(A) (A) (r)

El contenido del registro r realiza la operación lógica AND con el contenido del acumulador. El resultado se coloca en el acumulador

Ciclos: 1

Estados: 4

Direccionamiento: registro

Señalizadores: Z, S, P, CY, AC

ANA M (And memoria)

(A) (A) ((H) (L))

El contenido de la posición de memoria cuya dirección está contenida en los registros H y L realiza la operación lógica AND con el contenido del acumulador. El resultado se coloca en el acumulador.

Ciclos: 2

Estados: 7

Direccionamiento: indirecto de registro

Señalizadores: Z, S, P, CY, AC.

XRI dato (OR exclusiva inmediata)

(A) (A) (byte2)

El contenido del segundo byte de la instrucción realiza la operación lógica OR exclusiva con el contenido del acumulador. El resultado se coloca en el acumulador.

Ciclos: 2

Estados: 7

Direccionamiento: inmediato

Señalizadores: Z, S, P, CY, AC.

CPI dato (Comparación directa)

(A) - (byte2)

El contenido del segundo byte de la instrucción es restado del acumulador. El señalizador Z se pone a 1 si (A)=(byte2).

Ciclos: 2

Estados: 7

Direccionamiento: inmediato

Señalizadores: Z, S, P, CY, AC.

RLC (Desplazamiento circular a la izquierda)

(An+1) (An); (A0) (A7)

(CY) (A7)

El contenido del acumulador es desplazado a la izquierda una posición. El bit de orden inferior y el señalizador CY contienen ahora el valor del bit de orden más elevado antes de la operación de desplazamiento.

Ciclos: 1

Estados: 4

Señalizadores: CY.

Grupo de bifurcación: en este grupo se encuentran las instrucciones que realizan saltos condicionales o incondicionales, llamadas, vueltas y reinicializaciones.

Algunas de las principales instrucciones de este tipo, con su direccionamiento, ciclos, estados y señalizadores, son especificadas a continuación.

JMP addr (almacena acumulador directo)

(byte3) (byte2) (A)

El control es transferido a la instrucción cuya dirección está especificada en los bytes 2 y 3 de la instrucción actual.

Ciclos: 3

Estados: 10

Direccionamiento: inmediato

Señalizadores: ninguno

CALL addr (llamada)

((SP) -1) (PCH)

((SP) -2) (PCL)

(SP) (SP)-2

(PC) (byte3) (byte2)

Los ocho bits de orden superior de la dirección de la siguiente instrucción son transferidos a la posición de memoria cuya dirección es una unidad menor que el contenido del registro SP. Los ocho bits de orden inferior de la dirección de la siguiente instrucción son transferidos a la posición de memoria cuya dirección es dos unidades menor que el contenido del registro SP. El contenido del registro SP es decrementado en 2. El control es transferido a la instrucción cuya dirección está especificada en los bytes 2 y 3 de la instrucción actual.

Ciclos: 5

Estados: 18 (8085)

17 (8080)

Direccionamiento: inmediato/ indirecto de registro.

Señalizadores: ninguno

Grupo de pila, E/S y de control de máquina: en este grupo se encuentran las instrucciones para mantener la pila, leer los puertos de entrada, escribir en los puertos de salida, inicializar y leer máscaras de interrupción e inicializar y borrar señalizadores.

Algunas de las principales instrucciones de este tipo, con su direccionamiento, ciclos, estados y señalizadores, son especificadas a continuación.

PUSH rp (introducir)

((SP) -1) (rh)

((SP) -2) (rl)

(SP) (SP)-2

El contenido del registro de orden superior del registro par rp es transferido a la posición de memoria cuya dirección es una unidad menor que el contenido del registro SP. El contenido del registro de orden inferior del registro par rp es transferido a la posición de memoria cuya dirección es dos unidades menor que el contenido del registro SP.

Ciclos: 3

Estados: 12 (8085)

11 (8080)

Direccionamiento: indirecto de registro.

Señalizadores: ninguno

POP rp (sacar)

(rh) ((SP) -1)

(rl) ((SP) -2)

(SP) (SP)+2

El contenido de la posición de memoria, cuya dirección está especificada por el contenido del registro SP registro, es transferido de orden superior del registro par rp. El contenido de la posición de memoria, cuya dirección es una unidad mayor que el contenido del registro SP, es transferido al registro rp. El contenido del registro SP es incrementado en dos.

Ciclos: 3

Estados: 10

Direccionamiento: indirecto de registro.

Señalizadores: ninguno

IN puerto (Entrar)

(A) (dato)

El dato colocado en el bus de datos bidireccional de 8 bits, por el puerto especificado, es transferido al registro A.

Ciclos: 3

Estados: 10

Direccionamiento: directo

Señalizadores: ninguno.

OUT puerto (Salir)

(dato) (A)

El contenido del registro A es colocado en el bus de datos bidireccional de 8 bits, para que se transmita al puerto especificado.

Ciclos: 3

Estados: 10

Direccionamiento: directo

Señalizadores: ninguno.

EI (habilita interrupciones)

El sistema de interrupción es habilitado después de la ejecución de la siguiente instrucción. Las interrupciones no son reconocidas durante la instrucción EI.

Ciclos: 1

Estados: 4

Señalizadores: ninguno

HLT (alto)

El procesador se detiene. Los registros y señalizadores no se afectan. (8080) Un segundo ALE es generado durante la ejecución de HLT para dar información del status del ciclo Halt. (8085)

Ciclos: 1+(8085), 1(8080)

Estados: 5 (8085), 7(8080)

Señalizadores: ninguno

NOP (no operación)

No se realiza ninguna operación. Los registros y señalizadores no se afectan.

Ciclos: 1

Estados: 4

Se

ñalizadores: ninguno

CAPÍTULO 3

MICROPROCESADORES DE 16 Y 32 BITS

MICROPROCESADORES de 16 y 32 bits: INTEL 80286 e INTEL 80386

A continuación se hará una descripción general, de dos de los microprocesadores de 16 y 32 bits, más representativos.

1. CARACTERÍSTICAS GENERALES

El Intel 80286 (llamado oficialmente iAPX 286, también conocido como i286 o 286) es un microprocesador de 16 bits de la familia x86. Fue lanzado al mercado por Intel el 1 de febrero de 1982. Las versiones iniciales del i286 funcionaban a 6 MHz y a 8 MHz, pero acabó alcanzando una velocidad de hasta 20 MHz. El i286 fue el microprocesador más empleado en los IBM PC y compatibles entre mediados y finales de los años 80.

El i286 funciona el doble de rápido que su predecesor, el Intel 8086, y puede direccionar hasta 16 Mbytes de memoria RAM, en contraposición a 1 Mbyte del i8086. En máquinas DOS, esta memoria adicional solo podía ser accedida a través de emulación de memoria expandida previamente habilitada mediante software la memoria extendida. De todos modos, pocos ordenadores basados en el i286 tuvieron más de 1 Mbyte de memoria.

Fuente: Internet

El i286 fue diseñado para ejecutar aplicaciones multitarea, incluyendo comunicaciones, control de procesos en tiempo real y sistemas multiusuario. A pesar de su gran popularidad, hoy en día quedan pocos ordenadores con el i286 funcionando.

El intel 80386 (i386 o 386) es un microprocesador CISC de 32 bits con arquitectura x86. Durante su diseño se le llamó 'P3', debido a que era el prototipo de la tercera generación x86. El i386 fue empleado como la unidad central de proceso de muchos ordenadores personales desde mediados de los años 80 hasta principios de los 90.

El procesador i386 fue lanzado al mercado el 16 de octubre de 1985. El i386 añadió una arquitectura de 32 bits y una unidad de translación de páginas, lo que hizo mucho más sencillo implementar sistemas operativos que emplearan memoria virtual.

Debido al alto grado de compatibilidad, la arquitectura del conjunto de procesadores compatibles con el i386 suele ser llamada arquitectura i386. El conjunto de instrucciones para dicha arquitectura se conoce actualmente como IA-32.

Fuente: Internet (answers.com/topic/intel-i386-jpg)

Después de que comenzara la producción del 80386, Intel introdujo el i80386SX. El i386SX fue diseñado como una versión económica del i386. Los i386SX, como todos los i386, tienen una arquitectura de 32 bits, pero se comunican con el exterior mediante un bus externo de 16 bits. Esto hace que sean el doble de lentos al acceder al exterior, pero por el contrario el diseño los circuitos auxiliares del microprocesador es mucho más sencillo. El i386 original fue renombrado a Intel 80386DX para evitar la confusión.

Desde un punto de vista comercial, el i386 fue importante debido a que fue el primer microprocesador disponible desde una única fuente.

2. FUNCIONES Y DIAGRAMA DE PINES

a) i80286

La siguiente figura presenta la asignación de terminales del microprocesador 80286. La descripción de sus pines más importantes se hará en conjunto con el microprocesador i80386DX.

b) i80386

Al igual que en las versiones anteriores de los microprocesadores de la familia Intel, el 80386 requiere solamente una fuente de alimentación de +5V. La corriente promedio de la fuente de alimentación es 550 mA para la versión de 25MHz, 500mA para la versión de 20MHz y 450mA para la versión de 16MHz.

Este dispositivo contiene múltiples conexiones de Vcc y Vss , las cuáles deben estar conectadas, respectivamente, a +5V y tierra para una correcta operación. Algunas terminales están etiquetadas como N/C y no deben ser conectadas.

Cada terminal de salida del 80386 es capaz de proporcionar 4mA (conexiones de dirección y datos) o 5mA (otras conexiones). Esto representa un incremento en la corriente de salida en comparación con los 2mA disponibles en los terminales de salida de los anteriores 8086, 8088 y 80286. Cada Terminal de entrada representa una carga pequeña, requiriendo aproximadamente 10 A de corriente. En algunos sistemas, exceptuando a los más pequeños, estos niveles de corriente requieren buffers de bus.

La siguiente figura muestra la asignación de terminales del microprocesador 80386DX. El 80386DX está encapsulado en un empaque PGA (arreglo reticular de terminales) de 132 pines.

Fuente: Internet

A continuación se presenta la función de cada grupo de terminales del 80386DX:

• A31-32: Las conexiones del bus de direcciones permiten acceder a cualquiera de las localidades de memoria de 1GX32 bits encontradas en el sistema de memoria de los 80386. Las señales A0 y A1 son codificadas en las señales de habilitación de bus de 32 bits. Debido a que el 80386SX posee un bus de datos de 16 bits en vez de uno de 32, las señales de selección de banco son sustituidas por y . La señal habilita la mitad superior del bus de datos; la señal habilita la mitad inferior del bus de datos.

• D31-D0: Las conexiones del bus de datos transfieren datos entre el microprocesador y su sistema de memoria y E/S.

• : Las señales de habilitación de banco seleccionan el acceso de un byte, una palabra, o doble palabra de datos. El microprocesador genera internamente estas señales a partir de los bits de dirección A1 y A0.

• M/ : El Terminal de memoria/ES selecciona un dispositivo de memoria cuando tiene un valor 1 lógico, o un dispositivo de E/S cuando tiene un valor de 0 lógico. Durante la operación de E/S, el bus de direcciones contiene una dirección de E/S de 16 bits en las conexiones de dirección A15-A2.

• W/ : Escritura/lectura indica que el ciclo de bus actual es de escritura cuando contiene 1 lógico, o de lectura cuando contiene un 0 lógico.

• : El pulso de direccionamiento está activo cuando el 80386 haya emitido una dirección válida de memoria o de E/S. Esta señal es combinada con la señal W/ para generar las señales separadas de lectura y escritura existentes en los sistemas anteriores, basados en los microprocesadores 8086 y 80286.

• RESET: la restauración inicializa al 80386, que comienza a ejecutar el software a partir de la localidad de memoria FFFFFFF0H. El 80386 es restaurado en el modo real, y las 12 líneas de dirección más significativas permanecen con el valor de 1 lógico (FFFH), hasta que un salto lejano o llamada lejana es ejecutada. Esto establece la compatibilidad con los microprocesadores anteriores.

• CLK2: El reloj por 2 es alimentado por una señal de reloj que tiene una frecuencia igual al doble de la frecuencia de operación del 80386.

• : Ready controla el número de estados de espera insertados en un ciclo de acceso para aumentar el tiempo de acceso a memoria.

• : El Terminal de candado asume un valor 0 lógico siempre que una instrucción tenga el prefijo LOCK. Esto se utiliza con mayor frecuencia durante los accesos de DMA.

• D/ : Datos/control indica que el bus de datos contiene datos para, o desde la memoria o E/S cuando tiene un valor 1 lógico. Si D/ es un 0 lógico, el microprocesador es detenido o ejecuta una aceptación de interrupción.

• : El tamaño de bus 16 selecciona ya sea un bus de datos de 32 bits ( =1), o un bus de datos de 16bits ( =0).

• : Siguiente dirección ocasiona que el 80386 emita la dirección de la siguiente instrucción, o a los datos del ciclo de bus actual.

• HOLD: Detención solicita una acción de DMA.

• HOLDA: La solicitud de coprocesador pide al 80386 que ceda el control, y es una conexión directa al coprocesador aritmético 80387.

• : Reconocimiento de detención indica que el 80386 está actualmente en una condición de detención.

• : Ocupado es una entrada utilizada por la instrucción WAIT o FWAIT que espera a que el coprocesador se desocupe. Esta es también una conexión directa entre el 80387 y el 80386.

• : indica al microprocesador que el coprocesador ha detectado un error.

• INTR: es utilizada por los circuitos externos para solicitar una interrupción.

• NMI: Una interrupción no enmascarable es solicitada igual que en las versiones anteriores del microprocesador.

3. ARQUITECTURA INTERNA

a) i80286

La siguiente figura muestra el diagrama de bloques interno del microprocesador 80286. Este microprocesador no incorpora periféricos internos; en lugar de ello, contiene una unidad de administración de memoria (MMU), referida como unidad de direccionamiento en el diagrama de bloques.

Las terminales A23-A0, , CAP, , y son terminales nuevas o adicionales que no aparecen en el microprocesador 8086. Las señales , CAP, , y son utilizadas con la extensión del microprocesador, o coprocesador, del cual el 80387 es un ejemplo. El bus de direcciones es de 24 bits para controlar los 16 MB de memoria física.

Las unidades básicas del microprocesador se conservan, aunque su complejidad y rendimiento han aumentado considerablemente. ( comparados con los anteriores microprocesadores de 8 bits )

El conjunto de registros del i80286 se describe a continuación. Cabe anotar que casi todos los registros son iguales a los utilizados por los microprocesadores 8086/8088 y 80186/80188. Sin embargo se observa que el 80286 contiene un registro adicional de palabra de status de máquina (MSW), en donde el bit MSW controla si el 80286 está en el modo real o protegido.

AH AL

DH DL

CH CL

BH BL

Registro base

Registro índice

Registro índice

Puntero de pila

Señalizadores

puntero de instrucción

palabra status máquina

Selector de segmento

de código

Selector de segmento

de datos

Selector de segmento

de pila

Selector de segmento

extra

El registro de señalizadores del 80286 se aprecia a continuación.

NT IOPL OF DF IF TF SF ZF AF PF CF

Los principales señalizadores son:

bit número nombre

11 desbordamiento

10 señalizador de dirección

9 habilita interrupción

8 señalizador de trampa

7 signo

6 cero

4 arrastre auxiliar

2 paridad

0 arrastre

b) I80386

La siguiente figura presenta el diagrama de bloques de la estructura interna del microprocesador 80386DX. El i80386DX direcciona 4GB de memoria por medio de su bus de direcciones de 32 bits y tiene un bus de datos de 32 bits. El 80386SX es más parecido al 80286, y direcciona 16MB de memoria con su bus de direcciones de 24 bits y cuenta con un bus de datos de 16 bits. El 80386SX es encontrado en muchas aplicaciones que no requieren una versión completa del bus de 32 bits.

El sistema de memoria

El sistema de memoria física del 80386DX tiene una capacidad de 4GB y es diseccionado como tal. Si se recurre a direccionamiento virtual, la unidad de administración de memoria y los descriptores mapean 64 TB en los 4 GB de espacio físico.

La memoria está dividida en cuatro bancos de memoria de 8 bits, y cada uno con una capacidad hasta 1 GB de memoria. Esta organización de memoria de 32 bits permite el acceso directo a bytes, palabras o dobles palabras de datos de memoria. El 80386DX transfiere un número de hasta 32 bits en un solo ciclo de memoria, mientras el 8088 requiere cuatro ciclos para completar la misma transferencia, y los 80286 y el 80386SX requieren dos ciclos. Actualmente, el ancho de datos es importante, especialmente para el manejo de números de punto flotante con precisión sencilla de 32 bits.

Normalmente, el software de alto nivel utiliza números de punto flotante para el almacenamiento de datos, así que las localidades de memoria de 32 bits aceleran la ejecución de software de alto nivel, sacando así el máximo provecho de esta memoria más ancha.

La CPU del i80386 contiene registros en las siguientes categorías:

 Registros de propósito general.

 Registros de segmento.

 Puntero de instrucción y señalizadores.

 Registros de control.

 Registros de direcciones del sistema.

 Registros de depuración.

 Registros de prueba.

Los registros de propósito general de 32 bits, los registros selectores de segmento de 16 bits y el puntero de instrucciones y señalizadores se muestran en la siguiente figura.

Reg. Dirección y Generales de datos

31 16 15 0

AX

BX

CX

DX

SI

DI

BP

SP

15 0

CS

SS

DS

ES

FS

GS

Código de pila

puntero de instrucción y registro de señalizadores

31 16 15 0

IP

señalizadores

dato

Señalizadores

Reservado VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 CF

bit nombre

VM modo virtual

RF señalizador de resumen

NT señalizador de tareas anidadas

IOPL nivel de privilegio de E/S

OF desbordamiento

DF señalizador de dirección

IF habilitación de interrupción

TF señalizador de trampa

SF señalizador de signo

ZF señalizador de cero

AF arrastre auxiliar

PF señalizador de paridad

CF señalizador de arrastre

Los otros tipos de registro (control, direcciones del sistema, depuración y prueba) son más usados por el software del sistema. Por ejemplo, el registro MSW del 80286 es parte del registro de control de la CPU del 80386.

Pipelines y cachés. La memoria caché es una memoria buffer que permite que el 80386 funcione más eficientemente con velocidades de DRAM más bajas. Un pipeline es una forma especial de manejar accesos a memoria con tiempos de acceso de 50 ns o menos para operar a máxima velocidad. De hecho actualmente las DRAMs más rápidas tienen un tiempo de acceso de 60 ns o mayor. Esto significa que debe encontrarse alguna técnica para establecer una interfaz con estos dispositivos de memoria, que son más lentos a lo requerido por el microprocesador. Tres técnicas están disponibles: memoria entrelazada, uso de memoria caché y un pipeline.

Cuando una instrucción es obtenida de la memoria, el microprocesador dispone frecuentemente de un tiempo adicional antes de leer la siguiente instrucción. Durante este tiempo adicional, la dirección de la siguiente instrucción es emitida por el bus de direcciones en forma anticipada. Este tiempo adicional (un período de reloj) es utilizado para emitir un mayor tiempo de acceso a componentes de memoria más lentos. En términos generales, el pipeline es una característica que reduce costos y que disminuye el tiempo de acceso requerido por el sistema de memoria en sistemas de baja velocidad.

Una caché es un sistema de memoria de alta velocidad ubicado entre el microprocesador y el sistema de memoria DRAM. Los dispositivos de memoria caché son normalmente componentes de memoria RAM estática, con tiempos de acceso menores a 25 ns. La capacidad de la memoria caché está determinada más por la aplicación, que por microprocesador. Si un programa es pequeño y hace referencia a pocos datos de memoria, una caché pequeña es benéfica. Si un programa es grande y hace referencia a bloques grandes de memoria, es recomendable que el tamaño de caché sea lo más grande posible.

Un sistema de memoria entrelazada es otro método para mejorar la velocidad del sistema. Su única desventaja es que debido a su estructura requiere considerablemente más memoria. Los sistemas de memoria entrelazada existen en algunos sistemas, para que puedan alargarse los tiempos de acceso sin necesidad de tiempos de espera; además requiere dos o más conjuntos completos de buses de direcciones y un controlador que proporcione las direcciones a cada bus.

El sistema de E/S

El sistema de entrada y salida del 80386 es el mismo encontrado en cualquier sistema basado en microprocesadores 8086 de la familia Intel. Si se instrumenta una E/S aislada, existen 64 KB de espacio disponible de E/S. Con la E/S aislada, las instrucciones IN y OUT se utilizan para transferir datos de E/S entre el microprocesador y los dispositivos de E/S. La dirección de puerto de E/S aparece en las conexiones A15-A2 del bus de direcciones, donde se utilizan para seleccionar un byte, palabra o doble palabra de datos de E/S. Si se instrumenta la E/S ubicada en memoria, entonces el número de localidades de E/S puede ser cualquier cantidad, hasta 4GB. Con la E/S ubicada en memoria, cualquier instrucción que transfiera datos entre el microprocesador y el sistema de memoria se puede utilizar para transferencias de E/S, porque el dispositivo de E/S es tratado como un dispositivo de memoria.

La única característica agregada al 80386, con respecto a la E/S, es la información del privilegio de E/S, añadida al final del TSS cuando el 80386 opera en modo protegido. Una localidad de E/S puede bloquearse o inhibirse en el modo protegido, entonces si una localidad de E/S bloqueada es direccionada, se genera una interrupción. Este esquema es agregado para que el acceso a la E/S pueda ser prohibido en un ambiente multiusuario. El bloqueo es una extensión de la operación en modo protegido, como lo son los niveles de privilegio.

Señales de control de memoria y E/S

La memoria y la E/S se controlan con señales separadas. La señal M/ indica si la transferencia de datos es entre el microprocesador y la memoria (M/ =1) o la E/S (M/ =0). Adicionalmente a M/ , la memoria y los sistemas de E/S deben leer o escribir datos. La señal W/ es un 0 lógico para una operación de lectura, y un 1 lógico para una operación de escritura. La señal se utiliza para calificar las señales de control W/ y M/ . Éste es un cambio con respecto a los anteriores microprocesadores que no utilizaban a para la calificación.

4. MODOS DE DIRECCIONAMIENTO

La CPU ( i80286 o i80386 ) puede operar en dos modos. El primero es el modo de direcciones reales, en el cual puede acceder hasta 1 Mbyte de memoria, igual que los microprocesadores 8086 y 80186. El segundo es el modo de direcciones virtuales protegidas, que también se denomina modo protegido. En el modo protegido, la CPU formatea 1 Gbyte de direcciones virtuales por tarea, en un espacio de direcciones reales de 16 Mbytes. El modo protegido se denomina así ya que proporciona protección de memoria para aislar a los datos y programas de las tareas individuales. Esto permite la multitarea y una fácil conexión en red de los computadores. El modo protegido proporciona acceso a la gestión de memoria, paginación y capacidades de privilegio de CPU.

La memoria virtual es un espacio de memoria mayor (1GB para el 80286) en un espacio de memoria física mucho más pequeño (16 MB para el 80286), lo que permite que un sistema muy grande pueda ser ejecutado en sistemas de memoria física menor. Esto es realizado por medio de un intercambio de datos y programas entre el sistema de memoria de disco duro y la memoria física. El direccionamiento de un sistema de memoria de 1GB es realizado por los descriptores en el microprocesador 80286. Cada descriptor del 80286 describe un segmento de memoria de 64KB. El i80286 acepta hasta 16K descriptores, lo que corresponde a 1GB de memoria.

Los descriptores describen al segmento de memoria en el modo protegido. El 80286 tiene descriptores que definen códigos, datos, segmentos de pila, interrupciones, procedimientos y tareas. Los accesos a descriptores son realizados cargando un registro de segmento con un selector en el modo protegido. El selector accede a un descriptor que describe un área de memoria.

i80386

El microprocesador 80386 también tiene dos modos de operación: el modo de direcciones reales (modo real) y el modo de direcciones virtuales protegidas (modo protegido). En el modo real, el 80386 opera como un microprocesador 8086 muy rápido. En el modo protegido proporciona acceso a la gestión de memoria, paginación y capacidades de privilegio de la CPU.

Para asegurar un alto rendimiento, la interfaz del bus del 80386 ofrece encauzamiento de direcciones (pipeling), bus dinámico de datos y señales directas de habilitación de bytes para cada byte del bus de datos. El microprocesador puede ejecutar de esta forma unas tres millones de instrucciones por segundo.

Además soporta diferentes tipos de datos. Entre éstos se encuentran: bit, campo de bits, cadena de bits, byte, entero, entero grande, cúadruple palabra con signo, cadena, BCD y BCD empaquetado. Cuando el 80386 se conecta al coprocesador numérico 80387, se soportan los números con signo en punto flotante.

5. REPERTORIO DE INSTRUCCIONES

A continuación se muestra una selección del conjunto de instrucciones de los microprocesadores 80286 y 80386, el cual contiene el código de operación nemotécnico y una breve descripción del propósito de la instrucción.

ARPL (ajusta el nivel de privilegio solicitado)

Formato: ARPL reg, reg.

0 1 1 0 0 0 1 1

o o r r r m m m

80286 80386

Ciclos 10 20

señalizadores Z

BOUND (verifica arreglo contra límite)

Formato: BOUND reg, mem.

0 1 1 0 0 0 1 0

o o r r r m m m

80286 80386

Ciclos 13 10

señalizadores ninguno

BSF (exploración de bit en sentido directo)

Formato: BSF reg, reg.

0 0 0 0 1 1 1 1

1 0 1 1 1 1 0 0

80286 80386

Ciclos - 10+3n

señalizadores Z

BT (verificación de bit)

Formato: BT reg, inm8.

0 0 0 0 1 1 1 1

1 0 1 1 1 0 1 0

80286 80386

Ciclos - 3

señalizadores C

CALL (llamar procedimiento(subrutina))

Formato: Call etiqueta.

1 1 1 0 1 0 0 0

80286 80386

Ciclos 7 3

señalizadores ninguno

CMP (compara)

Formato: CMP reg, reg.

0 0 1 1 1 0 d w

80286 80386

Ciclos 2 2

señalizadores S, Z, A, P, C.

CWDE (convierte palabra en doble palabra extendida)

Formato: CWDE

1 0 0 1 1 0 0 0

80286 80386

Ciclos - 3

señalizadores ninguno

ENTER (crea un marco de pila)

Formato: ENTER inm, 0.

1 1 0 0 1 0 0 0

80286 80386

Ciclos 11 10

señalizadores ninguno

HLT (para)

Formato: HLT

1 1 1 1 0 1 0 0

80286 80386

Ciclos 2 5

señalizadores ninguno

IN (Lee dato de puerto)

Formato: IN acc, pt.

1 1 1 0 0 1 0 w

puerto

80286 80386

Ciclos 5 12

señalizadores ninguno

JMP (salta)

Formato: JMP etiqueta

1 1 1 0 1 0 1 1

80286 80386

Ciclos 7 7

señalizadores ninguno

LFS (carga apuntador lejano a FS y registro)

Formato: LFS reg, mem.

0 0 0 0 1 1 1 1

1 0 1 1 0 1 0 0

dato

80286 80386

Ciclos - 7

señalizadores ninguno

LOOP (repite hasta que CX=0 o ECX=0)

Formato: LOOP etiqueta.

1 1 1 0 0 0 1 0

dato

80286 80386

Ciclos 8/4 11

señalizadores ninguno

MOVS (mueve dato de cadena)

Formato: MOVSB

1 0 1 0 0 1 0 w

80286 80386

Ciclos 5 7

señalizadores ninguno

OUT (escribe dato a puerto)

Formato: OUT pt, acc.

1 1 1 0 0 1 1 w

puerto

80286 80386

Ciclos 3 10

señalizadores ninguno

POP (recupera dato de pila)

Formato: POP reg

0 1 0 1 1 r r r

80286 80386

Ciclos 5 4

señalizadores ninguno

RET (regreso de procedimiento)

Formato: RET

1 1 0 0 0 0 1 1

80286 80386

Ciclos 11 10

señalizadores ninguno

SET condition (establece condicionalmente)

Formato: SETcnd, reg8.

0 0 0 0 1 1 1 1

1 0 0 1 c c c c

o o 0 0 0 m m m

80286 80386

Ciclos - 4

señalizadores ninguno

SMSW (Almacena palabra de estado de máquina (80286))

Formato: SMSW reg.

0 0 0 0 1 1 1 1

0 0 0 0 0 0 0 1

o o 1 0 0 m m m

80286 80386

Ciclos 2 10

señalizadores ninguno

TEST (verifica operandos (comparación lógica))

Formato: TEST reg,reg.

0 1 0 1 1 r r r

80286 80386

Ciclos 2 2

señalizadores C=0,P, Z, S

WAIT (espera al coprocesador)

Formato: WAIT

1 0 0 1 1 0 1 1

80286 80386

Ciclos 3 6

señalizadores ninguno

UNIDAD 2

FUNDAMENTOS DE MICROCONTROLADORES

CONTENIDOS

Capítulo 1. Introducción al Microcontrolador

1. Generalidades del microprocesador

2. Estructura interna

3. Familias de microcontroladores

Capítulo 2. Microcontroladores de 8 bits

1. Características Generales

2. Funciones y diagrama de pines

3. Arquitectura interna

4. Modos de direccionamiento

5. Repertorio de instrucciones

CAPÍTULO 1

INTRODUCCIÓN AL MICROCONTROLADOR

1. GENERALIDADES DEL MICROCONTROLADOR

A partir de 1980, aproximadamente, aparece en el mundo de la electrónica un nuevo componente para el control, medición e instrumentación, al que llamaron microcomputador en un solo chip, o de forma más exacta microcontrolador.

Un microcontrolador es un circuito integrado que contiene en su interior toda la estructura de un computador, es decir, la Unidad Central de Procesamiento ( CPU ), la memoria de lectura y escritura ( RAM ), la memoria de sólo lectura ( ROM ) y los puertos o circuitos de entrada / salida ( I / O ), como se aprecia en la siguiente figura.

Los microcontroladores negocian su velocidad por la flexibilidad y facilidad de uso. Sus aplicaciones son múltiples y están encaminadas hacia el control de dispositivos y pequeños procesos.

Los microcontroladores se suelen confundir constantemente con los microprocesadores, por el hecho que contienen internamente una CPU. Sin embargo se puede afirmar que aunque son menos poderosos que un microprocesador, su práctico uso los hace apropiados en el desarrollo de aplicaciones de mediana complejidad.

Las principales características que diferencian un microcontrolador de un microprocesador son:

 Los microcontroladores son sistemas cerrados, ya que contienen todos sus elementos internos, con características fijas, y dentro de un solo chip; mientras que los microprocesadores son sistemas abiertos, ya que tienen las líneas de los buses de datos, direcciones y control al exterior, para la conexión con elementos de expansión como memorias, interfaces de E/S, etc.

 Los microcontroladores son de propósito específico, es decir, son programados para realizar una única tarea, mientras que los microprocesadores son de propósito general, ya que realizan múltiples tareas en función de los programas que contenga.

 La memoria que maneja un microcontrolador es pequeña pero adecuada para las aplicaciones de control e instrumentación que realiza, en donde no se necesita almacenar grandes cantidades de información. Un microprocesador puede manejar grandes volúmenes de información ya que ejecuta programas de alto nivel.

 Cuando se trabaja con microcontroladores no es necesario el diseño de circuitos decodificadores de direcciones, ya que los mapas de memoria y de puertos están implícitos en el microcontrolador. Esto trae como consecuencia la simplificación de los circuitos impresos en el desarrollo de proyectos.

Si se quieren emplear estos elementos en algún proyecto, se deben tener en cuenta las anteriores diferencias, ya que cada parte tiene sus ventajas y su ubicación especial dentro de las aplicaciones electrónicas.

Un microcontrolador, típicamente consta de:

CPU o procesador: Es el cerebro del sistema, el cual procesa todos los datos que viajan a lo largo del bus.

Memorias: Está formada por una no volátil (ROM, EEPROM, FLASH) donde se almacenan los programas y una volátil (RAM) donde se almacenan los datos.

Reloj principal: Normalmente todos los microcontroladores necesitan de circuitos osciladores para su funcionamiento.

Puertos E/S (Entrada/Salida): Son los que soportan las líneas que comunican al microcontrolador con los periféricos externos.

Módulos especiales: Son aquellos módulos que permiten realizar tareas específicas dentro del microcontrolador y que le dan el valor agregado al mismo. Entre los más comunes se tienen:

• Temporizadores: para controlar periodos de tiempo.

• Contadores de eventos

• Convertidores Analógico/Digital y Digital/Analógico

• Comparadores analógicos

• Moduladores de ancho de impulsos.

• Puertos de comunicación: Tanto serie como paralelo.

• Control de interrupciones

Debido a que los microcontroladores incluyen estas características específicas sólo para algunos modelos, su costo es relativamente bajo y depende de la aplicación que se les quiera dar.

El mercado de los microcontroladores está creciendo cada año y parece no tener barreras. Los microcontroladores a menudo se encuentran en aplicaciones domésticas (microondas, refrigeradores, televisión, equipos de música), computadores con sus componentes (impresoras, módems, lectores de discos), automóviles (ingeniería de control, diagnóstico, control de climatización), control medioambiental (invernaderos, fábricas, casas), instrumentación, aeronáutica, y miles de usos más. En muchos componentes podemos encontrar más de un microcontrolador.

2. ESTRUCTURA INTERNA

Es de gran importancia conocer la estructura interna de un microcontrolador. Es por eso que abordaremos este tema en la presente sección.

Tipos de Arquitecturas de Microcontroladores

a) Arquitectura Von Neumann

La arquitectura tradicional de computadoras y microprocesadores está basada en la arquitectura Von Neumann, en la cual la unidad central de procesos (CPU), está conectada a una memoria única donde se guardan las instrucciones del programa y los datos.

El tamaño de la unidad de datos e instrucciones está dado por el ancho del bus que comunica la memoria con la CPU. Así un microprocesador de 8 bits ( con un bus de 8 bits ) tendrá que manejar datos e instrucciones de una o más unidades de 8 bits de longitud. Si tiene que acceder a una instrucción o dato de más de un byte de longitud, tendrá que realizar más de un acceso a la memoria; y el tener un único bus hace que la CPU sea más lenta en su respuesta, ya que no puede buscar en memoria una nueva instrucción mientras no finalicen las transferencias de datos de la instrucción anterior.

Resumiendo todo lo anterior, las principales limitaciones que se tienen con la arquitectura Von Neumann son:

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

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

b) Arquitectura Harvard

La arquitectura Harvard tiene la unidad central de proceso (CPU) conectada a dos memorias (una con las instrucciones y otra con los datos) por medio de dos buses diferentes. Una de las memorias contiene solamente las instrucciones del programa (Memoria de Programa), y la otra sólo almacena datos (Memoria de Datos). Ambos buses son totalmente independientes y pueden ser de distintos anchos.

Para un procesador de Set de Instrucciones Reducido, o RISC (Reduced Instrucción Set Computer), el set de instrucciones y el bus de memoria de programa pueden diseñarse de tal manera que todas las instrucciones tengan una sola posición de memoria de programa de longitud. Además, al ser los buses independientes, la CPU puede acceder a los datos para completar la ejecución de una instrucción, y al mismo tiempo leer la siguiente instrucción a ejecutar.

Las ventajas de esta arquitectura son:

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

 El tiempo de acceso a las instrucciones puede superponerse con el de los datos, logrando una mayor velocidad en cada operación.

Estructura y Elementos Internos de los Microcontroladores

CPU

Es el elemento más importante del microcontrolador y determina sus principales características, tanto a nivel hardware como software. Se encarga, entre otras funciones, de direccionar la memoria de instrucciones, de recibir el código de la instrucción en curso, decodificarlo y ejecutar de la operación que implica la instrucción, así como también de la búsqueda de los operandos y el almacenamiento del resultado.

Existen tres orientaciones en cuanto a la arquitectura y funcionalidad de los procesadores actuales:

a) CISC (Computadores de Juego de Instrucciones Complejo): un gran número de procesadores usados en los microcontroladores están basados en la filosofía CISC. Generalmente disponen de más de 80 instrucciones máquina en su repertorio, algunas de las cuales son muy sofisticadas y potentes, requiriendo muchos ciclos para su ejecución. Una ventaja de los procesadores CISC es que ofrecen al programador instrucciones complejas que actúan como macros.

b) RISC (Computadores de Juego de Instrucciones Reducido): en estos procesadores el repertorio de instrucciones máquina es muy reducido y las instrucciones son simples, y generalmente, se ejecutan en un ciclo. La sencillez y rapidez de las instrucciones permiten optimizar el hardware y el software del procesador.

c) SISC (Computadores de Juego de Instrucciones Específico): en los microcontroladores destinados a aplicaciones muy concretas, el juego de instrucciones, además de ser reducido, es específico, es decir, las instrucciones se adaptan a las necesidades de la aplicación prevista.

Memoria

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

Hay dos particularidades referentes a las memorias, que diferencian a los microcontroladores de las computadoras personales:

 No existen sistemas de almacenamiento masivo, como discos duros, ya que el microcontrolador sólo se destina a una tarea concreta y su memoria ROM debe almacenar un único programa de trabajo.

 La memoria RAM en los microcontroladores es de poca capacidad, pues sólo debe contener las variables y los cambios de información que se produzcan en el transcurso del programa.

Los usuarios de computadoras personales están habituados a manejar Megabytes y Gigabytes de memoria, pero en el trabajo con microcontroladores se tienen capacidades de ROM comprendidas entre 512 bytes y 8 Kbytes y de RAM entre 20 y 512 bytes.

Según el tipo de memoria ROM que dispongan los microcontroladores, la aplicación y utilización de los mismos es diferente. A continuación se describen las principales versiones de memoria no volátil que se pueden encontrar en los microcontroladores hoy en día.

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

b) EEPROM o E2PROM: se trata de memorias ROM programables y borrables eléctricamente EEPROM (Electrical Erasable Programmable Read OnIy Memory). Tanto la programación como el borrado, se realizan eléctricamente desde el propio grabador y bajo el control de un PC. Es muy cómoda y rápida su operación de grabado y de borrado. No necesitan de una ventana de cristal en la superficie.

Estos microcontroladores son recomendados para la enseñanza y el diseño de proyectos.

c) FLASH: se trata de una memoria no volátil, de bajo consumo, que se puede escribir y borrar. Funciona como una ROM y una RAM, pero consume menos energía y es más pequeña. A diferencia de la EEPROM, la memoria FLASH es más rápida y de mayor densidad.

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 de operación.

Puertos de Entrada y Salida

Los puertos de Entrada y Salida (E/S) permiten comunicar la CPU con el mundo exterior o con otros dispositivos, a través de interfaces. Estos puertos ocupan la mayor parte de los pines de un microprocesador. Según los controladores de periféricos que posea cada modelo de microcontrolador, las líneas de E/S se destinan a proporcionar el soporte a las señales de entrada, salida y control.

Reloj principal

Todos los microcontroladores disponen de un circuito oscilador que genera una onda cuadrada de alta frecuencia ( impulsos de reloj ), los cuáles son usados en la sincronización de todas las operaciones del sistema. Esta señal del reloj es el motor del sistema y permite que el programa y los contadores avancen.

Generalmente, el circuito de reloj está incorporado en el microcontrolador y sólo se necesitan unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia de trabajo. Dichos componentes suelen ser: un cristal de cuarzo junto a elementos pasivos, un resonador cerámico o una red R-C.

Al aumentar la frecuencia de reloj se disminuye el tiempo en que se ejecutan las instrucciones, pero ello lleva asociado un incremento en el consumo de energía y en el calor generado.

Recursos Especiales

Cada fabricante oferta numerosas versiones de una arquitectura básica de microcontrolador. En algunos casos amplía las capacidades de memoria, en otras incorpora nuevos recursos, en otras más reduce las prestaciones al mínimo para aplicaciones muy simples, etc. La labor del diseñador es encontrar el modelo adecuado que satisfaga todos los requerimientos de su aplicación. De esta forma, minimizará los costos, el hardware y el software.

Los principales recursos específicos que incorporan los microcontroladores son:

• Temporizadores o Timers.

• Perro guardián o Watchdog.

• Protección ante fallo de alimentación o Brown out.

• Estado de reposo o de bajo consumo (Sleep mode).

• Conversor A/D (Analógico a Digital).

• Conversor D/A (Digital a Analógico).

• Comparador analógico.

• Modulador de anchura de impulsos o PWM (Pulse Wide Modulation).

• Puertas de E/S digitales.

• Puertas de comunicación.

En la medida en que se vaya profundizando en el tema, se irán conociendo las diferentes posibilidades que ofrecen los microcontroladores y cómo emplearlas en el desarrollo de proyectos.

3. FAMILIAS DE MICROCONTROLADORES

Existen muchas familias fabricantes de microcontroladores, entre las más comunes están:

Atmel (AVR ), Hitachi (H8), Intel de 8 bits (8XC42, MCS51, 8xC251) o Intel de 16 bits (MCS96, MXS296), National Semiconductor (COP8), Microchip, Motorola de 8 bits (68HC05, 68HC08, 68HC11) o de 16 bits (68HC12, 68HC16) o de 32 bits (683xx ), NEC (78K), Texas Instruments (TMS370) y Zilog (Z8, Z86E02).

Sin embargo en nuestro medio se destacan sólo dos de ellas: la empresa Microchip y la empresa Motorola.

La Familia PIC

Esta familia, desarrollada por la casa Microchip, se divide en varias gamas: enana, baja, media y alta.

Las principales diferencias entre estas gamas radica en el número de instrucciones y su longitud, el número de puertos y funciones, lo cual se refleja en el encapsulado, la complejidad interna y de programación, y en el número de aplicaciones.

a) Gama enana

Su principal característica es su reducido tamaño, al disponer todos sus componentes de 8 pines. Se alimentan con un voltaje de corriente continua comprendido entre 2,5 V y 5,5 V, y consumen menos de 2 mA cuando trabajan 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. En la Figura se muestra el diagrama de pines de uno de estos PIC.

Aunque los PIC enanos sólo tienen 8 pines, pueden destinar hasta 6 como líneas de E/S para los periféricos porque disponen de un oscilador interno R-C, lo cual es una de su principales características.

En la siguiente tabla se presentan las principales características de los modelos de esta subfamilia. En los modelos 12C5xx el tamaño de las instrucciones es de 12 bits; mientras que en los 12C6xx sus instrucciones tienen 14 bits. Los modelos 12F6xx poseen memoria Flash para el programa y EEPROM para los datos.

Modelo Mem. de programa Mem. de datos Frecuencia Líneas de E/S ADC de 8 bits Temporizador

PIC12C508 512x12 25x8 4MHz 6 --- TRM0+WDT

PIC12C509 1024x12 41x8 4MHz 6 --- TRM0+WDT

PIC12C670 512x14 80x8 4MHz 6 --- TRM0+WDT

PIC12C671 1024x14 128x8 4MHz 6 2 TRM0+WDT

PIC12C672 2048x14 128x8 4MHz 6 4 TRM0+WDT

PIC12F680 512x12 FLASH 80x8 16x8 EEPROM 4MHz 6 4 TRM0+WDT

PIC12F681 1024x14 FLASH 80x8 16x8 EEPROM 4MHz 6 4 TRM0+WDT

b) Gama baja

Se trata de una serie de PICs de recursos limitados, pero con una de la mejores relaciones costo/prestaciones.

Sus versiones están encapsuladas con 18 y 28 pines y pueden alimentarse a partir de una tensión de 2,5 V, lo que los 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). Tienen un repertorio de 33 instrucciones cuyo formato consta de 12 bits. En la Figura se muestra el diagrama de pines de uno de estos PICs.

Al igual que todos los miembros de la familia PIC16/17, los componentes de la gama baja se caracterizan por poseer los siguientes recursos: Sistema Power On Reset, Perro guardián (Watchdog o WDT), Código de protección, etc. Sus principales desventajas o limitaciones son que la pila sólo tiene dos niveles y que no admiten interrupciones.

En la siguiente tabla se presentan las principales características de los modelos de esta subfamilia.

Modelo Mem. de programa Mem. de datos Frecuencia Líneas

de E/S Temporizador pines

PIC16C52 384 25 bytes 4 MHz 12 TRM0+WDT 18

PIC16C54 512 25 bytes 20 MHz 12 TRM0+WDT 18

PIC16C55 512 24 bytes 20 MHz 20 TRM0+WDT 28

PIC16C56 1K 25 bytes 20 MHz 12 TRM0+WDT 18

PIC16C57 2K 72 bytes 20 MHz 20 TRM0+WDT 28

PIC16C58A 2K 73 bytes 20 MHz 12 TRM0+WDT 18

c) Gama media

Es la gama más variada y completa de los PIC. Abarca modelos con encapsulado desde 18 pines hasta 68, cubriendo varias opciones que integran diversos periféricos.

En esta gama sus componentes añaden nuevas prestaciones a las que poseían los de la gama baja, haciéndoles más adecuados en las aplicaciones complejas. Admiten interrupciones, poseen comparadores de magnitudes analógicas, convertidores A/D, puertos serie y diversos temporizadores. El repertorio de instrucciones es de 35, 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. También dispone de interrupciones y una pila de 8 niveles que permite el anidamiento de subrutinas.

En la siguiente tabla se presentan las principales características de algunos de los modelos de esta familia.

Modelo PINES I / O EPROM RAM Interrup Voltaje (V)

PIC16C61 18 13 1Kx14 36x8 3 3.0-6.0

PIC16C62 28 22 2Kx14 128x8 10 2.5-6.0

PIC16C63 28 22 4Kx14 192x8 10 3.0-6.0

PIC16C64 40 33 2Kx14 128x8 8 3.0-6.0

PIC16C65 40 33 4Kx14 192x8 11 3.0-6.0

PIC16C620 18 13 512x14 80x8 4 3.0-6.0

PIC16C621 18 13 1Kx14 80x8 4 3.0-6.0

PIC16C622 18 13 2Kx14 128x8 4 3.0-6.0

Modelo PINES I / O EPROM RAM Interrup Canales A / D

PIC16C70 18 13 512x14 36x8 4 4 canales

PIC16C71 18 13 1Kx14 36x8 4 4 canales

PIC16C72 28 22 2Kx14 128x8 8 5 canales

PIC16C73 28 22 4Kx14 192x8 11 5 canales

PIC16C74 40 33 4Kx14 192x8 12 8 canales

Modelo Mem. de programa

RAM / EEPROM Mem. de programa Mem. de datos INT Líneas

de E/S Temporizador

PIC16F83 36 64 512X14 FLASH 25 bytes 4 13 TRM0+WDT

PIC16C84 36 64 1KX14 EEPROM 25 bytes 4 13 TRM0+WDT

PIC16F84 68 64 1KX14 FLASH 25 bytes 4 13 TRM0+WDT

d) Gama alta: PIC17CXXX

En esta gama se alcanzan las 58 instrucciones de 16 bits en el repertorio y sus modelos disponen de un sistema de gestión de interrupciones vectorizadas muy potente. También incluyen variados controladores de periféricos, puertos de comunicación serie y paralelo con elementos externos, un multiplicador hardware de gran velocidad y mayores capacidades de memoria, que alcanza los 8K palabras en la memoria de instrucciones y 454 bytes en la memoria de datos.

Quizás la característica más destacable de los componentes de esta gama es su arquitectura abierta, que consiste en la posibilidad de ampliación del microcontrolador con elementos externos. Para este fin, los pines comunican al exterior las líneas de los buses de datos, direcciones y control, a las que se conectan memorias o controladores de periféricos. Esta facultad obliga a estos componentes a tener un elevado número de pines comprendido entre 40 y 44. Esta filosofía de construcción del sistema es la que se empleaba en los microprocesadores y no suele ser una práctica habitual cuando se emplean microcontroladores.

En la siguiente tabla se presentan las características más relevantes de los modelos de esta gama, que sólo se utilizan en aplicaciones espaciales.

Modelo CAP PWM Multiplica

hardware Mem. de

programa Mem. de datos

RAM Líneas

de E/S Temp. pines

PIC17C42A 2 2 8X8 2KX16 232 33 4+WDT 18

PIC17C43 2 2 8X8 4KX16 454 33 4+WDT 18

PIC17C44 2 2 8X8 8KX16 454 33 4+WDT 18

PIC17C52 4 1 8X8 8KX16 454 50 4+WDT 18

PIC17C56 4 1 8X8 16KX16 902 50 4+WDT 28

La Familia Freescale

Esta familia, desarrollada por la casa Motorola, se divide en las siguientes subfamilias:

a) Familia HC08

Son microcontroladores de propósito general. Cada miembro de esta familia cuenta con diferentes periféricos internos, pero con una CPU común que permite migrar aplicaciones entre ellos, facilitando con ello el diseño.

El 68HC08 es un microcontrolador de 8 bits y arquitectura Von Neumann, con un solo bloque de memoria. Es conocido también simplemente por HC08.

Entre los periféricos internos con los que cuentan estos microcontroladores, están: conversores analógicos-digitales, módulo de control de tiempos y sistemas de comunicación como SPI, I²C, USB o SSCI entre otros.

b) Familia 68HC11 (abreviado HC11 o 6811)

Es una familia de microcontroladores de Motorola, derivada del microprocesador Motorola 6800. Los microcontroladores 68HC11 son más potentes y costosos que los de la familia 68HC08 y se utilizan en múltiples dispositivos empotrados.

Siguen la arquitectura Von Newman. Internamente, el conjunto de instrucciones de la familia 68HC11 es compatible con la de la mayoría de sus predecesores.

La familia 68HC11 emplea instrucciones de longitud variable y se considera que emplea una arquitectura CISC. Tienen dos acumuladores de ocho bits (A y B), dos registros índice de 16 bits (X e Y), un registro de banderas, un puntero de pila y un contador de programa.

Los 68HC11 tienen cinco puertos externos (A, B, C, D y E), cada uno de ocho bits excepto el E, que es generalmente de seis bits.

El puerto A se emplea en captura de eventos, salida comparada, acumulador de pulsos y otras funciones de reloj. El puerto D para E/S serie y el puerto E como conversor analógico-digital.

La familia 68HC11 puede funcionar tanto con memoria interna o externa. En caso de emplear memoria externa, los puertos B y C funcionan como bus de datos y direcciones respectivamente.

CAPÍTULO 2

MICROCONTROLADORES DE 8 BITS

En este capítulo se estudiarán dos de los más importantes microcontroladores de 8 bits de la familia PIC de Microchip que, como se describió en el capítulo anterior, corresponden a la familia de gama media. Los microcontroladores en cuestión son el PIC16F84 y el PIC16F877, dos de los microcontroladores más populares y más empleados en aplicaciones de electrónica.

1. PIC16F84

a) CARACTERÍSTICAS GENERALES

 Bajo consumo de energía

 Frecuencia de reloj externa máxima de 10MHz

 No posee conversores analógicos/digitales ni digitales/analógicos

 Pipe-line de 2 etapas, 1 para búsqueda de instrucción y otra para la ejecución

de la instrucción (los saltos ocupan un ciclo más).

 Repertorio de instrucciones reducido (RISC), con tan solo 35 instrucciones

 4 tipos distintos de instrucciones: orientadas a byte, orientadas a bit,

operación entre registros y de salto.

 1024 palabras de memoria de programa

 Memoria de datos RAM de 68 bytes

 Memoria de datos EEPROM de 64 bytes

 Palabras de instrucción de 14 bits

 Bytes de datos de 8 bits

 15 registros especiales de función hardware

 8 niveles de pila

 Modos de direccionamiento: directo, indirecto y relativo

 Cuatro fuentes de interrupción

 TMR0 de 8 bits con pre-escala programable

 Perro guardián (watchdog)

b) FUNCIONES Y DIAGRAMA DE PINES

La siguiente figura muestra el diagrama de pines del PIC16F84 en encapsulado PDIP, SOIC.

La descripción de las funciones de los pines de este microcontrolador se presenta en la siguiente tabla.

NOMBRE DEL PIN TIPO DESCRIPCION

RA0 a RA3 Entrada/salida Líneas de E/S digitales del Puerto A

RA4/T0CKI Entrada/salida E/S digital o entrada de reloj externo

para el TMR0.

RB0/INT a RB7 Entrada/salida E/S digitales del Puerto B.

RB0/INT puede actuar como INT externa.

RB4-RB7 pueden provocar una interrupción cuando cambian de estado.

OSC1/CLKIN Entrada Entrada de cristal oscilador / entrada de reloj externo.

OSC2/CLKOUT Salida Salida del cristal oscilador.

En el modo RC, la salida del pin de OSC2/CLKOUT, tiene ¼ de la frecuencia de OSC1 (ciclo de instrucción)

VSS Alimentación Tierra para los pines lógicos y de E/S

VDD Alimentación Fuente de tensión positiva ( Típicamente 5V )

/VPP

Entrada Entrada maestra de borrado (Reset)/ voltaje de programación. El reset del dispositivo es activo bajo.

c) ARQUITECTURA INTERNA

Como se ha mencionado, el microcontrolador emplea una arquitectura Harvard, en la cual, programa y datos se acceden de memorias separadas usando diferentes buses. Esto trae como consecuencia la existencia de dos buses independientes y la posibilidad de tener un ancho diferente. En este caso, el bus de datos es de 8 bits y el bus de programa es de 14 bits.

La secuencia de las instrucciones de un programa, está controlada por el registro contador de programa ( Program Counter ). Este registro se incrementa en cada paso para ejecutar el programa grabado en la memoria ROM del microcontrolador. El contador de programa también está conectado a los registros de Stack o pila, que son los que soportan llamadas consecutivas a una subrutina.

El diagrama de bloques de la estructura interna del PIC16F84 se presenta en la siguiente figura.

El microcontrolador también posee una unidad lógica aritmética ( ALU ) de 8 bits y un registro de trabajo ( W ). La ALU ejecuta funciones aritméticas y booleanas entre datos del registro de trabajo y cualquier otro registro o constante. También es capaz de realizar operaciones lógicas, adiciones y sustracciones entre datos de 8 bits.

El registro de trabajo ( W ), es un registro de 8 bits de gran importancia para el buen funcionamiento del microcontrolador. Se emplea intensamente en las operaciones que requieren transferencia interna de datos, como por ejemplo, en las operaciones de la ALU o en las comunicaciones entre registros.

Para la ejecución de un programa, las palabras de la memoria de programa se llevan al registro de instrucciones, el cual, las comunica al decodificador de instrucciones, en donde se da la orden de iniciar su ejecución.

A continuación se presenta una breve descripción de los principales componentes del microcontrolador.

Organización de la memoria

La memoria de programa tiene implementado 1024 palabras de 14 bits cada una, para el almacenamiento de las instrucciones del programa a ejecutar. También cuenta con dos vectores empleados para el manejo de las Interrupciones y el estado de Reinicialización (reset) del microcontrolador.

La memoria de datos está particionada en dos áreas. La primera es para los registros de funciones especiales (SFR), y la segunda área es para los registros de propósito general (GPR). Los registros especiales controlan las operaciones del dispositivo.

Toda la memoria de datos puede ser accedida ya sea por direccionamiento directo utilizando direcciones absolutas de cada registro de fila o indirecto a través del registro de selección de fila (FSR).

Puertos de Entrada/Salida

El microcontrolador PIC16F84, cuenta con dos puertos bidireccionales: Puerto A y Puerto B. Algunos pines de estos puertos son multiplexados con una función alternativa de los periféricos del dispositivo. En general, cuando un periférico es habilitado, el pin correspondiente no puede ser utilizado como pin de E/S de propósito general. A continuación se describen los puertos de este microcontrolador.

Puerto A: este puerto bidireccional tiene un tamaño de 5 bits ( RA4:RA0 ). Tiene además 2 registros asociados que se muestran en la siguiente tabla y que corresponden a:

 Control de dirección de los pines del puerto A (TRISA)

 Estado de los pines del puerto A (PORTA)

Puerto B: este puerto bidireccional tiene un tamaño 8 bits ( RB7:RB0 ). Tiene además 4 registros asociados que se muestran en la siguiente tabla.

Timer0: el módulo temporizador/contador de 8 bits TMR0 puede ser leído y escrito continuamente y se puede seleccionar un reloj interno o uno externo para trabajar con el. Además cuenta con preescalador progamable de 8 bits, y con interrupción por desbordamiento desde FFh a 00h. El diagrama de bloques del módulo se muestra en la siguiente figura y los registros relacionados con el Timer0 se presentan posteriormente.

Configuración del oscilador

El PIC16F84 puede operar con cuatro configuraciones de oscilador. El usuario puede seleccionar la más conveniente, según su necesidad

 LT: baja potencia de cristal

 XT: cristal/ resonador

 HS: cristal de alta velocidad/ resonador

 CS: resistor/ capacitor

La siguiente tabla muestra los valores de capacitor para las configuraciones: LP, XT y HS; junto con el valor del rango de frecuencia de resonancia.

Interrupciones

El PIC16F84 tiene cuatro fuentes de interrupción:

 Interrupción externa a través del pin RBO/INT

 Interrupción por desbordamiento del TMR0

 Interrupción PORTB (RB7:RB4)

 Interrupción de la memoria EEPROM cuando la escritura ha finalizado.

Watchdog (perro guardián)

El temporizador watchdog es un recurso de vigilancia del microcontrolador. Cuenta libremente con el oscilador RC del chip, por lo tanto no necesita componentes externos. Tiene un período nominal de finalización de 18ms.

Durante la operación normal del microcontrolador, una finalización del temporizador watchdog genera un reinicio o RESET; pero si el dispositivo está en modo SLEEP provoca que se retome nuevamente la operación normal del dispositivo. El wachtdog puede ser habilitado o deshabilitado por software.

2. PIC16F877

a) CARACTERÍSTICAS GENERALES

El microcontrolador PIC16F877 tiene como características generales:

 Arquitectura RISC y 35 instrucciones de palabra sencilla

 Todas las instrucciones son de un solo ciclo, excepto los saltos ( dos ciclos )

 Velocidades de operación: DC hasta 20MHz con entrada de reloj y DC hasta

200ns ciclo de instrucción.

 Hasta 8Kx14 palabras de memoria programable FLASH, 368x8 bytes de

memoria de datos RAM y 256x8 bytes de memoria de datos EEPROM.

 Capacidad de interrupción (hasta 14 fuentes).

 8 niveles de pila

 Perro guardián (watchdog)

 Modos de direccionamiento: directo, indirecto y relativo

 Conversor analógico digital multicanal de 10 bits.

 TRM0, TRM2 de 8 bits contador/ preescalar.

 TRM1 de 16 bits contador/ prescalar.

 Tiene dos módulos de comparación, captura de 16 bits y PWM de 10 bits.

 Receptor/transmisor USART / SCI.

 Puerto paralelo esclavo de 8 bits con líneas de control externo.

b) FUNCIONES Y DIAGRAMA DE PINES

La asignación de pines del PIC16F877 se muestra en la siguiente figura.

El PIC16F877 viene en una pastilla integrada de 40 pines. 33 pines conforman los cinco puertos bidireccionales que posee, mientras que los siete pines restantes se emplean para la aplicación del voltaje de alimentación ( 4 ), el circuito oscilador ( 2 ) y el circuito de Reset.

La descripción de las funciones de los pines del microcontrolador PIC16F877 se presenta a continuación.

NOMBRE DEL PIN TIPO DESCRIPCION

RA0/AN0 - RA2/AN2 Entrada/salida Líneas de E/S digitales del Puerto A, o entradas analógicas.

RA3/AN3/VREF Entrada/salida E/S digital, analógica o entrada

externa de referencia

RA4/T0CKI Entrada/salida E/S digital o entrada de reloj externo

para TMR0.

RA5/AN4/SS Entrada/salida E/S digital, analógica o selección del puerto síncrono

RB0/INT - RB7 Entrada/salida E/S digitales del Puerto B.

RB0/INT puede actuar como entrada de

interrupción externa.

RB4-RB7 pueden provocar una interrupción cuando cambian de estado.

RC0/T1OSO/T1CKI Entrada/salida E/S digital del Puerto C. Conexión del oscilador externo para el temporizador TMR1 o entrada de reloj para el TMR1.

RC1/T1OSI/CCP2 Entrada/salida Conexión del oscilador externo para el TMR1 o salida del módulo 2 de captura/comparación.

RC2/CCP1 Entrada/salida Salida del módulo 1 de captura/comparación.

RC3/SCK/SCL Entrada/salida E/S de reloj para el Puerto Serie Síncrono (SSP) en los módulos SPI o I2C.

RC4/SDI/SDA Entrada/salida E/S digital. Entrada de datos serie en el modo SPI. E/S de datos serie en modo I2C.

RC5/SDO Entrada/salida E/S digital. Salida de datos serie en modo SPI

RC6/TX/CK Entrada/salida E/S digital. Transmisión serie asíncrona. Entrada de reloj para comunicación serie síncrona.

RC7/RX/DT Entrada/salida E/S digital. Recepción serie asíncrona. Línea de datos en la comunicación serie síncrona.

RD0/PSP0 - RD7/PSP7 Entrada/salida E/S digitales del Puerto D. Este puerto puede trabajar como puerto paralelo esclavo para interconexión con un bus de datos de 8 bits de otro microprocesador.

RE0/RD/AN5 Entrada/salida E/S digital del Puerto E. Señal de lectura del puerto paralelo esclavo. Entrada analógica.

RE1/WR/AN6 Entrada/salida E/S digital del Puerto E. Señal de escritura del puerto paralelo esclavo. Entrada analógica.

RE2/CS /AN7 Entrada/salida E/S digital. Señal de activación del puerto paralelo esclavo. Entrada analógica.

OSC1/CLKIN Entrada Entrada del cristal / entrada de reloj externo.

OSC2/CLKOUT Salida Salida del cristal oscilador. Conecta el cristal o el resonador en el modo cristal oscilador. En el modo RC, la salida del pin de OSC2 CLKOUT, tiene ¼ de la frecuencia de OSC1

VSS Alimentación Tierra para los pines lógicos y de E/S

VDD Alimentación Fuente de Tensión Positiva

Entrada Entrada maestra de borrado (Reset)/ voltaje de programación. El reset del dispositivo es activo bajo.

c) ARQUITECTURA INTERNA

A continuación se presenta una breve descripción de los principales módulos del microcontrolador.

Organización de la memoria

Existen principalmente dos bloques de memoria en el interior del microcontrolador: la memoria de datos y la memoria de programa, cada una con su propio bus.

- Organización de la Memoria de Programa

El microcontrolador tiene un contador de programa de 13 bits capaz de direccional un espacio de memoria de programa de 8K x 14, es decir 8192 palabras de memoria FLASH.

El vector de RESET está en la dirección 0000h y el vector de interrupción en la 0004h. Además cuenta con 8 niveles de pila como lo muestra la figura.

- Organización de la memoria de datos

La memoria de datos está particionada en múltiples bancos ( 4 ) que contienen registros de propósito general y registros de función especial.

Los bits RP1 (bit 6) y RP0 (bit 5) del registro de estatus seleccionan los bancos de memoria como lo muestra la siguiente figura.

Puertos de Entrada/Salida

El microcontrolador 16F877 cuenta con cinco puertos de E/S (A, B, C, D, E), los cuáles suman 33 pines bidireccionales para el trabajo con diversas señales externas.

Hay que destacar que algunos pines de E/S están multiplexados con una función alternativa de los periféricos del dispositivo. En general, cuando un periférico es habilitado el pin correspondiente no puede ser utilizado como pin de E/S de propósito general.

Puerto A: este puerto bidireccional tiene un tamaño de 6 bits (RA5:RA0). Tiene además 3 registros asociados que se muestran en la tabla y que corresponden a:

Estado de los pines del puerto A (PORTA)

Control de dirección de los pines del puerto A (TRISA)

El periférico de conversión analógico digital (ADCON1)

Puerto B: este puerto bidireccional tiene un tamaño de 8 bits (RB7:RB0). Tiene además 3 registros asociados que se muestran en la ¡Error! No se encuentra el origen de la referencia. y que corresponden a:

Estado de los pines del puerto B (PORTB)

Control de dirección de los pines del puerto B (TRISB)

Interrupción externa pin RB0 (OPTION-REG bit INTEDG)

Puerto C: este puerto bidireccional tiene un tamaño de 8 bits (RC7:RC0). Tiene además 2 registros asociados que se muestran en la ¡Error! No se encuentra el origen de la referencia. y que corresponden a:

Estado de los pines del puerto C (PORTC)

Control de dirección de los pines del puerto C (TRISC)

Puerto D: este puerto bidireccional tiene un tamaño de 8 bits (RD7:RD0) con entradas bufferadas de schmit trigger (disparo). Puede ser configurado como puerto paralelo esclavo y en este modo los buffers de entrada son TTL. Tiene además 3 registros asociados que se muestran en la ¡Error! No se encuentra el origen de la referencia. y que corresponden a:

Estado de los pines del puerto D (PORTD)

Control de dirección de los pines del puerto D (TRISD)

Control de configuración puerto paralelo esclavo (TRISE)

Puerto E: este puerto bidireccional tiene un tamaño de 3 bits (RE2:RE0), con entradas bufferadas de schmit trigger (disparo). Puede ser configurado como puerto paralelo esclavo, en este modo los buffers de entrada son TTL. Tiene además 3 registros asociados que se muestran en la ¡Error! No se encuentra el origen de la referencia. y que corresponden a:

Operación de lectura / escritura de los pines RE cuando son entradas analógicas o puerto paralelo esclavo (PORTE)

Control de configuración puerto paralelo esclavo y control de la dirección de los pines RE (TRISE)

Configuración de entrada/salida digital (ADCON1)

Módulo Timer0

Este temporizador/contador de 8 bits, tiene las características de ser de escritura y lectura, preescalador de 8 bits programable por software, selección de reloj interno o externo e interrupción por desbordamiento. La siguiente figura muestra el diagrama de bloques y la tabla con los registros relacionados con el Timer0.

Módulo Timer1

El timer1 es un módulo contador/temporizador de 16 bits que consta de dos registros de 8 bits, los cuales pueden ser escritos y leídos continuamente. El módulo puede operar como temporizador o como contador. En el modo temporizador el TIMER1 se incrementa cada ciclo de instrucción, en el modo contador se incrementa con el flanco de bajada de la entrada de reloj externa. El diagrama de bloques del módulo se muestra en la siguiente figura y la tabla muestra los registros relacionados con el Timer0.

Módulo de Puerto Serial Maestro Síncrono

Es una interfaz serial utilizada para comunicarse con otros periféricos o microcontroladores. Estos dispositivos periféricos pueden ser memorias EEPROM seriales, registros de desplazamiento, manejadores de display, conversores A/D entre otros. El módulo MSSP puede operar en dos modos: interfaz serial periférica (SPI) ó circuito inter-integrado (I2C)

a) Interfaz Serial Periférica (SPI): El SPI permite transmitir y recibir datos de 8 bits simultáneamente. Además soporta las cuatro modalidades que son:

Salida serial de dato (SDO)

Entrada serial de dato (SDI)

Reloj serial (SCK)

Selección esclavo ( )

b) Circuito inter- integrado (I2C): El módulo soporta todas las configuraciones maestro y esclavo, provee interrupciones por hardware de los bits de arranque y parada y determina cuando libera el bus.

Conversor analógico digital

El conversor analógico/digital del PIC16F877 tiene 8 entradas multiplexadas y una resolución máxima de 10 bits.

La señal analógica de entrada es muestreada y cargada en un capacitor a la entrada del conversor; el cual genera como resultado un valor digital del nivel analógico a través de aproximaciones sucesivas.

La conversión analógico/digital de la señal analógica de entrada tiene una resolución máxima de 10 bits. El módulo cuenta también con un nivel alto y bajo de voltaje de referencia programado por software, escogiendo entre los pines VSS, VDD, RA3 y RA2.

El conversor A/D tiene la característica de operar mientras el microcontrolador se encuentra en modo SLEEP. El reloj del A/D es derivado del oscilador interno del conversor.

El tiempo mínimo de adquisición es de 19,72 s. El tiempo de conversión del A/D por bit se denomina TAD; en el caso del módulo se necesitan 12 TAD para 10 bits. La fuente del reloj de conversión se selecciona por software y pueden ser: 2TOSC, 8 TOSC, 32 TOSC ó módulo oscilador interno del ADC. La siguiente tabla muestra los registros asociados con el A/D.

3. MODOS DE DIRECCIONAMIENTO

Existen tres modos de direccionamiento en los microcontroladores PIC: directo, indirecto y relativo.

En el direccionamiento directo se utilizan los valores de RP1 y RP0 para seleccionar el banco y la localización a través del formato de instrucción (OPCODE).

En el caso particular de esta familia, el direccionamiento indirecto está determinado por los registros INDF y FSR. Hay que destacar que el registro INDF no es un registro físico, pero a través de el es que se realiza el direccionamiento indirecto. Cualquier instrucción que utilice el registro INDF accede al registro puntero de selección de fila, FSR.

Si se lee solamente el registro INDF el valor de FSR es igual a 0, es decir, la dirección leída es igual 00H. Los 9 bits de dirección efectiva son el resultado de concatenar los 8 bits del registro FSR y el bit 7 (IRP) del registro de estado.

El direccionamiento relativo se logra sumando el contenido del registro de trabajo W al registro contador de programa ( PC ). Este direccionamiento se utiliza ampliamente en la elaboración de tablas de saltos.

La siguiente figura ilustra la diferencia entre el direccionamiento directo y el indirecto.

4. REPERTORIO DE INSTRUCCIONES

Cada instrucción de los PIC16F84 y PIC16F877 es una palabra de 14 bits, dividida entre el OPCODE, la cual especifica el tipo de instrucción y uno o más operandos según la instrucción.

Se presenta a continuación el listado de instrucciones de estos microcontroladores.

Hexa Nemotécnico Descripción Función

OPERACIONES LITERALES Y DE CONTROL

3E kk ADDLW k suma un literal a w k + w w

39 kk ANDLW k AND entre un literal y w k .AND. w w

2k kk CALL k llama una subrutina PC + 1 pila, k PC

00 64 CLRWDT limpia el watchdog (WDT) 0 watchdog timer

2k kk GOTO k salta a una dirección k PC ( 9 bits )

38 kk IORLW k OR incl entre un literal y w k .OR. w w

30 kk MOVLW k mueve el literal a w k w

00 09 RETFIE retorna de interrupción pila PC, 1 GIE

34 kk RETLW k retorna y carga literal en w k w, pila PC

00 08 RETURN retorna de una subrutina pila PC

00 63 SLEEP a modo de bajo consumo 0 WDT, para oscilador

3C kk SUBLW k resta w del literal k - w w

3A kk XORLW k OR excl entre un literal y w k .XOR. w w

OPERACIONES ORIENTADAS A REGISTROS

07 ff ADDWF f,d suma w y f w + f d

05 ff ANDWF f,d AND entre w y f w .AND. f d

01 8f CLRF f limpia f 0 f

01 00 CLRW limpia w 0 w

09 ff COMF f,d complementa f .NOT. f d

03 ff DECF f,d decrementa f f - 1 d

0B ff DECFSZ f,d dec. f, salta si cero f - 1 d, salta si cero

0A ff INCF f,d incrementa f f + 1 d

0F ff INCFSZ f,d inc. f, salta si cero f + 1 d, salta si cero

04 ff IORWF f,d OR inclusiva entre w y f w . OR. f d

08 ff MOVF f,d mueve f f d

00 8f MOVWF f mueve w a f w f

00 00 NOP no opera

0D ff RLF f,d rota a la izquierda f carry d(0), f(7) carry

0C ff RRF f,d rota a la derecha f carry d(7), f(0) carry

02 ff SUBWF f,d resta w de f f - w d

0E ff SWAPF f,d intercambia mitades de f f <0:3> f <4:7> d

06 ff XORWF f,d OR exclusiva entre w y f w . XOR. f d

OPERACIONES ORIENTADAS A BITS

1b ff BCF f,b limpia el bit 0 f(b)

1b ff BSF f,b activa el bit 1 f(b)

1b ff BTFSC f,b prueba el bit, salta si cero salta si f(b) = 0

1b ff BTFSS f,b prueba el bit, salta si uno salta si f(b) = 1

UNIDAD 3

PROGRAMACIÓN DE MICROCONTROLADORES Y MICROPROCESADORES

CONTENIDOS

Capítulo 1. Introducción a la programación

1. Lenguajes máquina y ensamblador

2. Repertorio de instrucciones

2.1 Aritméticas y lógicas

2.2 Transferencia de datos

2.3 Bifurcación

2.4 Atención a subrutinas

2.5 Misceláneas

Capítulo 2. Desarrollo de aplicaciones

1. Generalidades de programación

2. Dispositivos de entrada

3. Dispositivos de salida

4. Aplicaciones

CAPÍTULO 1

INTRODUCCIÓN A LA PROGRAMACIÓN

1. LENGUAJES MÁQUINA Y ENSAMBLADOR

En el nivel más básico, el microprocesador responde a un conjunto de operaciones que se denomina programa máquina. Este programa está escrito en un lenguaje apropiado para la máquina (computadora), ya que sus instrucciones son cadenas binarias ( series de caracteres de dígitos 0 y 1).

Este programa máquina ( o en código máquina ), estará conformado por las diferentes órdenes o instrucciones que debe ejecutar el microprocesador para el desarrollo de una tarea particular. Cada una de las instrucciones será expresada en su correspondiente código de operación y almacenada en la memoria de programa. Un ejemplo de un programa en código máquina, se escribe a continuación.

Dir de memoria Código ( bin ) Código ( hex )

0000 00111110 3E

0001 10110100 B4

0002 00101111 2F

0003 00110010 32

… … …

El programa se puede expresar en binario o en hexadecimal, sin embargo siguen siendo muy difíciles de comprender para cualquier persona.

Las instrucciones en lenguaje máquina dependen del hardware de la computadora, y por lo tanto dependerán del fabricante del microprocesador.

La principal ventaja del Lenguaje Máquina es la posibilidad de cargar ( transferir un programa a la memoria ) sin necesidad de traducción posterior, lo que supone una velocidad de ejecución superior a la de cualquier otro lenguaje de programación.

Las desventajas del Lenguaje Máquina serían: dificultad y lentitud en la codificación, poca fiabilidad, gran dificultad para verificar y poner a punto los programas y la dependencia con el microprocesador ya que los programas sólo son ejecutables determinada CPU.

En la actualidad, las desventajas superan a las ventajas, lo que hace prácticamente no recomendables a los lenguajes máquina.

Lenguajes de bajo nivel.

Estos lenguajes son más fáciles de utilizar que los lenguajes máquina, pero al igual que ellos, dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador ( o assembler ). Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotécnicos, es decir, se emplean términos de fácil asociación para la realización de un programa.

Por ejemplo, nemotécnicos típicos de operaciones aritméticas son: ADD, SUB, DIV, etc. ( en inglés ) o podrían ser: SUM, RES, DIV, etc. ( en español )

Una instrucción típica de suma sería:

ADD M, N, P

Esta instrucción significa "sumar el contenido de la posición de memoria M al número almacenado en la posición de memoria N y almacenar el resultado en la posición de memoria P". Evidentemente es más sencillo recordar la instrucción anterior con un nemotécnico, que su equivalente en código máquina:

0110 1001 1010 1011

Un programa escrito en lenguaje ensamblador, requiere de una fase de traducción al lenguaje máquina para poder ser ejecutado directamente por la computadora. Esta tarea se realiza generalmente con un software especial conocido como “ programa ensamblador ”

El programa original escrito en lenguaje ensamblador se denomina programa fuente y el programa traducido en lenguaje máquina se conoce como programa objeto, el cual ya es directamente entendible por la computadora.

La principal ventaja del lenguaje ensamblador frente al lenguaje máquina, es su mayor facilidad de codificación y, en general, su velocidad de cálculo.

Las desventajas del lenguaje ensamblador serían: dependencia total de la máquina, lo que impide la posibilidad de ejecutar un programa en diferentes máquinas y la formación requerida ya que exige buenos conocimientos, no solo en las técnicas de programación, sino también en el interior de la máquina

Los lenguajes ensamblador tienen aplicaciones específicas y se centran básicamente en desarrollos de tiempo real, control de procesos y en dispositivos electrónicos.

2. REPERTORIO DE INSTRUCCIONES

En esta sección se estudiará con más detalle el repertorio completo de las instrucciones de los microcontroladores PIC.

Los operandos afectados al ejecutar una instrucción, se definen en el siguiente cuadro.

OPERANDOS DESCRIPCIÓN

f dirección del registro ( de 00h a FFh )

W registro de trabajo ( acumulador )

b dirección del bit dentro de un registro

k literal, constante o etiqueta

d selector de destino

d = 0, almacena el resultado en W

d = 1, almacena el resultado en el registro

2.1 Instrucciones aritméticas y lógicas

ADDLW suma un literal al reg. W

Sintaxis: ( etiqueta ) ADDLW k

Operandos: 0 < k < 255

Operación: ( W ) + k  W

Estados Afectados: C, DC, Z

Código: 11 111x kkkk kkkk

Descripción: el contenido del reg. W es adicionado al literal k de 8-bits y el resultado es almacenado en el reg. W.

ADDWF suma a W con el reg. f

Sintaxis: ( etiqueta ) ADDWF f,d

Operandos: 0 < f < 127, d   0,1 

Operación: ( W ) + ( f )  ( destino )

Estados Afectados: C, DC, Z

Código: 00 0111 d f f f f f f f

Descripción: el contenido del reg. W es adicionado al contenido del reg. f y el resultado es almacenado en el reg. W o en el reg. f según d.

ANDLW AND entre un literal y W

Sintaxis: ( etiqueta ) ANDLW k

Operandos: 0 < k < 255

Operación: ( W ) .AND.( k )  W

Estados Afectados: Z

Código: 11 1001 kkkk kkkk

Descripción: realiza la operación AND entre un literal k de 8-bits y el reg. W. El resultado se almacena en el reg. W.

ANDWF AND entre W y el reg. f

Sintaxis: ( etiqueta ) ANDWF f,d

Operandos: 0 < f < 127, d   0,1 

Operación: ( W ) .AND. ( f )  ( dest )

Estados Afectados: Z

Código: 00 0101 d f f f f f f f

Descripción: realiza la operación AND entre W y el reg. f. El resultado es almacenado en el reg. W o en el reg. f según d.

COMF complementa el reg. f

Sintaxis: ( etiqueta ) COMF f,d

Operandos: 0 < f < 127, d   0,1 

Operación: ( f )  ( destino )

Estados Afectados: Z

Código: 00 1001 d f f f f f f f

Descripción: el contenido del reg. f se complementa y almacena en el reg. W o en el reg. f según d.

DECF decrementa el reg. f

Sintaxis: ( etiqueta ) DECF f,d

Operandos: 0 < f < 127, d   0,1 

Operación: ( f ) - 1  ( destino )

Estados Afectados: Z

Código: 00 0011 d f f f f f f f

Descripción: decrementa el reg. f. El resultado es almacenado en el reg. W o en el reg. f según d.

INCF incrementa el reg. f

Sintaxis: ( etiqueta ) INCF f,d

Operandos: 0 < f < 127, d   0,1 

Operación: ( f ) + 1  ( destino )

Estados Afectados: Z

Código: 00 1010 d f f f f f f f

Descripción: incrementa el reg. f. El resultado es almacenado en el reg. W o en el reg. f según d.

IORLW OR incl entre un literal y W

Sintaxis: ( etiqueta ) IORLW k

Operandos: 0 < k < 255

Operación: ( W ) .OR. ( k )  ( W )

Estados Afectados: Z

Código: 11 1000 kkkk kkkk

Descripción: realiza la operación OR inclusiva entre el reg. W y el literal k de 8-bits. El resultado se almacena en el reg. W.

IORWF OR inclusiva entre W y f

Sintaxis: ( etiqueta ) IORWF f,d

Operandos: 0 < f < 127, d   0,1 

Operación: ( W ) .OR. ( f )  ( dest )

Estados Afectados: Z

Código: 00 0100 d f f f f f f f

Descripción: realiza la operación OR inclusiva entre el reg. W y el reg. f. El resultado es almacenado en el reg. W o en el reg. f según d.

RLF rota a la izquierda el reg. f

Sintaxis: ( etiqueta ) RLF f,d

Operandos: 0 < f < 127, d   0,1 

Operación: carry  d ( 0 ),

f ( 7 )  carry

Estados Afectados: C

Código: 00 1101 d f f f f f f f

Descripción: el contenido del reg. f es rotado bit por bit hacia la izquierda a través del bit CARRY ( STATUS < 0 > ) y el resultado se almacena en el reg. W o en el reg. f según d.

RRF rota a la derecha el reg. f

Sintaxis: ( etiqueta ) RRF f,d

Operandos: 0 < f < 127, d   0,1 

Operación: carry  d ( 7 ),

f ( 0 )  carry

Estados Afectados: C

Código: 00 1100 d f f f f f f f

Descripción: el contenido del reg. f es rotado bit por bit hacia la derecha a través del bit CARRY ( STATUS < 0 > ) y el resultado se almacena en el reg. W o en el reg. f según d.

SUBLW resta W de un literal

Sintaxis: ( etiqueta ) SUBLW k

Operandos: 0 < k < 255

Operación: k - ( W )  ( W )

Estados Afectados: C, DC, Z

Código: 11 110x kkkk kkkk

Descripción: el reg. W es sustraído del literal k de 8-bits por el método del complemento a dos. El resultado se almacena en el reg. W.

SUBWF resta W del reg. f

Sintaxis: ( etiqueta ) SUBWF f,d

Operandos: 0 < f < 127, d   0,1 

Operación: f - ( W )  ( destino )

Estados Afectados: C, DC, Z

Código: 00 0010 d f f f f f f f

Descripción: el reg. W es sustraído del reg. f por el método del complemento a dos. El resultado es almacenado en el reg. W o en el reg. f según d.

SWAPF intercambia mitades de f

Sintaxis: ( etiqueta ) SWAPF f,d

Operandos: 0 < f < 127, d   0,1 

Operación: f < 3:0 >  d < 7:4 >

f < 7:4 >  d < 3:0 >

Estados Afectados: ninguno

Código: 00 1110 d f f f f f f f

Descripción: la mitad superior del reg. f se cambia con la mitad inferior. El resultado se almacena en el reg. W o en el reg. f según d.

XORLW OR excl entre un literal y W

Sintaxis: ( etiqueta ) XORLW k

Operandos: 0 < k < 255

Operación: ( W ) .XOR. k  ( W )

Estados Afectados: Z

Código: 11 1010 d f f f f f f f

Descripción: realiza la operación OR exclusiva entre el reg. W y el literal k de 8-bits. El resultado es almacenado en el reg. W.

XORWF OR exclusiva entre W y f

Sintaxis: ( etiqueta ) XORWF f,d

Operandos: 0 < f < 127, d   0,1 

Operación: ( W ) .XOR. ( f )  ( dest )

Estados Afectados: Z

Código: 00 0110 d f f f f f f f

Descripción: realiza la operación OR exclusiva entre el reg. W y el reg. f. El resultado es almacenado en el reg. W o en el reg. f según d.

2.2 Instrucciones de transferencia de datos

MOVLW mueve el literal a W

Sintaxis: ( etiqueta ) MOVLW k

Operandos: 0 < k < 255

Operación: ( k )  ( W )

Estados Afectados: ninguno

Código: 11 00xx kkkk kkkk

Descripción: el literal k de 8-bits es almacenado en el registro de trabajo W.

MOVF mueve el registro f

Sintaxis: ( etiqueta ) MOVF f,d

Operandos: 0 < f < 127, d   0,1 

Operación: ( f )  ( destino )

Estados Afectados: Z

Código: 00 1000 d f f f f f f f

Descripción: el contenido del registro f es movido a su destino d. Si d=0 el destino es el reg. W. Si d=1 el destino es el mismo registro.

MOVWF el contenido de W va a f

Sintaxis: ( etiqueta ) MOVWF f

Operandos: 0 < f < 127

Operación: ( W )  ( f )

Estados Afectados: ninguno

Código: 00 0000 1 f f f f f f f

Descripción: mueve el contenido del registro W al el registro f.

2.3 Instrucciones de bifurcación

BTFSC prueba el bit, salta si cero

Sintaxis: ( etiqueta ) BTFSC f,b

Operandos: 0 < f < 127, 0 < b < 7

Operación: salta si ( f < b > ) = 0

Estados Afectados: ninguno

Código: 01 10bb b f f f f f f f

Descripción: si el bit b del reg. f es cero la siguiente instrucción es saltada.

Ciclos: 1 ( 2 )

BTFSS prueba el bit, salta si uno

Sintaxis: ( etiqueta ) BTFSS f,b

Operandos: 0 < f < 127, 0 < b < 7

Operación: salta si ( f < b > ) = 1

Estados Afectados: ninguno

Código: 01 11bb b f f f f f f f

Descripción: si el bit b del reg. f es uno la siguiente instrucción es saltada.

Ciclos: 1 ( 2 )

DECFSZ decrementa f, salta si cero

Sintaxis: ( etiqueta ) DECFSZ f,d

Operandos: 0 < f < 127, d   0,1 

Operación: ( f ) - 1  ( destino )

salta si el resultado = 0

Estados Afectados: ninguno

Código: 00 1011 d f f f f f f f

Descripción: decrementa el contenido del reg. f. El resultado es almacenado en el reg. W o en el reg. f según d. Si el resultado es cero, la siguiente instrucción es saltada.

Ciclos: 1 ( 2 )

GOTO salto a una dirección

Sintaxis: ( etiqueta ) GOTO k

Operandos: 0 < k < 2047

Operación: k  PC < 10:0 >,

( PCLATH<4:3> )  PC<12:11>

Estados Afectados: ninguno

Código: 10 1kkk kkkk kkkk

Descripción: salta a una dirección determinada. El contador de programa se carga con la nueva dirección.

Ciclos: 2

INCFSZ incrementa f, salta si cero

Sintaxis: ( etiqueta ) INCFSZ f,d

Operandos: 0 < f < 127, d   0,1 

Operación: ( f ) + 1  ( destino )

salta si el resultado = 0

Estados Afectados: ninguno

Código: 00 1111 d f f f f f f f

Descripción: incrementa el contenido del reg. f. El resultado es almacenado en el reg. W o en el reg. f según d. Si el resultado es cero, la siguiente instrucción es saltada.

Ciclos: 1 ( 2 )

2.4 Instrucciones de atención a subrutinas

CALL llamada a una subrutina

Sintaxis: ( etiqueta ) CALL k

Operandos: 0 < k < 2047

Operación: ( PC ) + 1  TOS,

k  PC < 10:0 >,

( PCLATH<4:3> )  PC<12:11>

Estados Afectados: ninguno

Código: 10 0kkk kkkk kkkk

Descripción: llama una subrutina. La dirección ( PC+1 ) se lleva a la pila y el contador de programa se carga con la dirección de la subrutina.

Ciclos: 2

RETLW retorna y carga literal en W

Sintaxis: ( etiqueta ) RETLW k

Operandos: 0 < k < 255

Operación: k  W

TOS  PC

Estados Afectados: ninguno

Código: 11 01xx kkkk kkkk

Descripción: el reg. W es cargado con el literal k de 8-bits. Se retorna de una subrutina al cargar el contador de programa con la última dirección de la pila.

Ciclos: 2

RETURN retorno de una subrutina

Sintaxis: ( etiqueta ) RETURN

Operandos: ninguno

Operación: TOS  PC

Estados Afectados: ninguno

Código: 00 0000 0000 1000

Descripción: retorna de una subrutina. La última dirección de la pila es cargada en el contador de programa.

Ciclos: 2

2.5 Instrucciones misceláneas

BCF limpia un bit del registro f

Sintaxis: ( etiqueta ) BCF f,b

Operandos: 0 < f < 127, 0 < b < 7

Operación: 0  f < b >

Estados Afectados: ninguno

Código: 01 00bb b f f f f f f f

Descripción: el bit b del registro f es limpiado, es decir, puesto a cero.

BSF en set un bit del registro f

Sintaxis: ( etiqueta ) BSF f,b

Operandos: 0 < f < 127, 0 < b < 7

Operación: 1  f < b >

Estados Afectados: ninguno

Código: 01 01bb b f f f f f f f

Descripción: el bit b del registro f es set, es decir, puesto a uno.

CLRF limpia el registro f

Sintaxis: ( etiqueta ) CLRF f

Operandos: 0 < f < 127

Operación: 00h  f

1  Z

Estados Afectados: Z

Código: 00 0001 1 f f f f f f f

Descripción: el contenido del registro f es limpiado y el bit Z es puesto a uno.

CLRW limpia el registro W

Sintaxis: ( etiqueta ) CLRW

Operandos: ninguno

Operación: 00h  ( W )

1  Z

Estados Afectados: Z

Código: 00 0001 0xxx xxxx

Descripción: el contenido del registro W es limpiado y el bit Z es puesto a uno.

CLRWDT limpia el watchdog

Sintaxis: ( etiqueta ) CLRWDT

Operandos: ninguno

Operación: 00h  WDT

0  WDT pre-escalador

1  TO, PD

Estados Afectados: TO, PD

Código: 00 0000 0110 0100

Descripción: esta instrucción resetea el temporizador del circuito de vigilancia ( watchdog ) así como su pre-escalador.

NOP posición de no operación

Sintaxis: ( etiqueta ) NOP

Operandos: ninguno

Operación: no opera

Estados Afectados: ninguno

Código: 00 0000 0xx0 0000

Descripción: en esta posición no se realiza ninguna operación

RETFIE retorno de interrupción

Sintaxis: ( etiqueta ) RETFIE

Operandos: ninguno

Operación: TOS  PC,

1  GIE

Estados Afectados: ninguno

Código: 00 0000 0000 1001

Descripción: se retorna de una interrupción. La última dirección de la pila es cargada en el contador de programa. Se habilitan las interrupciones por medio de la activación del bit GIE ( INTCON < 7 > )

Ciclos: 2

SLEEP modo de bajo consumo

Sintaxis: ( etiqueta ) SLEEP

Operandos: ninguno

Estados Afectados: TO, PD

Código: 00 0000 0110 0011

Descripción: el temp. del circuito de vigilancia ( watchdog ), su pre-escalador y el bit PD son limpiados. El bit TO es puesto a uno. El procesador es puesto en modo de bajo consumo.

Ciclos: 1

CAPÍTULO 2

DESARROLLO DE APLICACIONES

1. GENERALIDADES DE PROGRAMACIÓN

Para programar con éxito un microprocesador o microcontrolador, es necesario conocer con cierta profundidad, la arquitectura general del sistema, los registros disponibles, el repertorio de instrucciones y comprender claramente la aplicación a desarrollar.

Sin embargo, los siguientes pasos pueden ayudar en la realización de un proyecto en particular:

 Definir claramente el proyecto.

 Realizar un diagrama de flujo con la solución del problema.

 Seleccionar el hardware más conveniente.

 Escribir el programa en lenguaje ensamblador.

 Simular el programa ( dependiendo de su complejidad )

 Programar y verificar el desempeño de la aplicación.

Por medio de la siguiente aplicación, van a presentar otras recomendaciones e indicaciones para el desarrollo de un proyecto con el microcontrolador PIC16F84.

Proyecto: Control del encendido de un diodo LED por medio de un pulsador.

Diagrama de Flujo:

Hardware Recomendado:

El microcontrolador, además del circuito de reset, el circuito oscilador y la alimentación, debe ir conectado a los siguientes componentes electrónicos:

1 pulsador y una resistencia de 10 kΩ ( pulsador en el pin RA0 )

1 LED y una resistencia de 220 Ω ( LED en el pin RB0 )

Programa en lenguaje ensamblador:

Cuando se escribe un programa en lenguaje ensamblador, se acostumbra dividir cada sentencia en 4 campos:

(etiqueta) (nemotécnico) (operando) ; (comentarios )

Por ejemplo:

START CLRF PORTA ; comienza formalmente el programa

Verifique esta estructura en el siguiente programa.

; CONTROL DE UN LED POR MEDIO DE UN PULSADOR

; DEFINO VARIABLES

STATUS EQU 3

PORTA EQU 5 ; PULSADOR EN RA0

TRISA EQU 85

PORTB EQU 6 ; LED EN RB0

TRISB EQU 86

TECLA EQU 0C

; INICIALIZO REGISTROS

START CLRF PORTA ; COMIENZA FORMALMENTE EL PROGRAMA

CLRF PORTB

CLRF TECLA

; CONFIGURO PUERTOS

BSF STATUS,5

MOVLW B’11111’ ; PUERTO A COMO IN

MOVWF TRISA

MOVLW B’00000000’ ; PUERTO B COMO OUTS

MOVWF TRISB

BCF STATUS,5

; LECTURA DEL ESTADO DEL PULSADOR

LAZO MOVF PORTA,W

MOVWF TECLA

BTFSS TECLA,0

GOTO TAREA2

GOTO TAREA1

TAREA1 MOVLW B’00000001’

MOVWF PORTB

GOTO LAZO

TAREA2 MOVLW B’00000000’

MOVWF PORTB

GOTO LAZO

END

Después de escribir el programa, se compila, simula y programa la aplicación en el correspondiente microcontrolador. Si el desempeño real no es el esperado, se procede a corregir el programa y se repite el proceso de implantación en la aplicación.

2. DISPOSITIVOS DE ENTRADA

Algunos de los principales circuitos de entrada o “ periféricos ” más empleados cuando se trabaja comúnmente con un microcontrolador, son los siguientes: circuito de reset, circuito oscilador, pulsadores, interruptores y sensores en general.

Circuito de Reset

El microcontrolador presenta varios tipos de reset, los cuáles pueden ser activados internamente como parte de su inicialización o funcionamiento, o por medio de un circuito externo de reset. Estos tipos de reset son:

 Al encendido ( Power on Reset ).

 Al rebasar el conteo del temporizador del circuito de vigilancia ( WDT ) durante la operación normal o en modo de bajo consumo.

 Por medio del terminal MCLR del microcontrolador durante la operación normal o en modo de bajo consumo.

El reset al encendido ( POR ) se produce cuando el microcontrolador detecta que el voltaje de alimentación es aplicado ( 1.6 V a 1.8 V ). Este reset define el estado o las condiciones de inicialización de los registros de funciones especiales y prepara al microcontrolador para la ejecución del programa. También permite que el voltaje de alimentación llegue a un nivel aceptable y se estabilice.

El microcontrolador opera en modo normal mientras el terminal MCLR esté conectado al voltaje positivo de alimentación ( VDD ). En la siguiente figura se muestra el diagrama de tiempos de la secuencia del reset al encendido.

El temporizador del circuito de vigilancia ( watchdog ), cuando se habilita, también genera un reset en el microcontrolador, cada vez que el temporizador rebasa su cuenta. Si el microcontrolador se encuentra en modo de bajo consumo ( SLEEP ) cuando se produce el rebase del temporizador, se saca al microcontrolador de este estado y se continúa con la operación normal. Para evitar que se produzcan reset no deseados por causa del temporizador de vigilancia, se recomienda deshabilitarlo en el momento de la programación o limpiarlo continuamente por medio de la instrucción CLRWDT.

Además de las anteriores opciones de reset, se puede implementar un circuito físico de reset externo en el microcontrolador y emplearlo en cualquier momento. La utilidad de este circuito es que inicializa el programa y los registros, permitiendo que el proceso vuelva a empezar cada vez que se desee.

En caso de alguna falla externa al microcontrolador o si se quiere iniciar el proceso por cualquier motivo, se puede hacer uso de este circuito.

Cabe anotar que después de que se produce un reset en el microcontrolador, los registros de funciones especiales se cargan, según la causa que produjo el reset, con un valor determinado. Este valor se denomina estado de reset del registro y es establecido por el fabricante.

Finalmente, el circuito físico de reset permite realizar de forma sencilla la conexión del pin MCLR del microcontrolador al voltaje positivo de alimentación. Por medio del interruptor que posee se puede llevar momentáneamente este pin a un estado lógico bajo y activar el reset en cualquier momento.

Los valores recomendados en el circuito de reset son: las resistencias R y R1 de 22 KΩ y 1 KΩ respectivamente y el condensador de 10 F. Se recomienda para la resistencia R valores menores a 40 KΩ y para R1 valores comprendidos entre 100 Ω y 1 KΩ. El circuito de reset recomendado es el siguiente.

Circuito oscilador

Un microcontrolador, generalmente puede operar en cualquiera de sus cuatro opciones de oscilación. Estas son:

 LP ( cristal de baja potencia y velocidad )

 XT ( cristal / resonador )

 HS ( cristal de alta velocidad / resonador )

 RC ( red resistor - capacitor )

En los modos LP, XT o HS, el cristal o resonador cerámico se conecta a los pines OSC1 y OSC2 del microcontrolador para establecer la oscilación.

El modo RC es el más económico pero el más inestable ( figura b. ). Se puede emplear en aplicaciones que no requieran de mucha precisión en el cumplimiento de las rutinas de tiempo. Su frecuencia de oscilación es función del voltaje de alimentación, de los componentes de la red y de la temperatura de operación.

Si se implementa una red RC como circuito oscilador, se recomienda para la resistencia valores comprendidos entre 3 KΩ y 100 KΩ y para el condensador valores superiores a 20 pF.

El modo de oscilación XT, con un cristal oscilador de 4 Mhz y dos condensadores de 20 pF, en la configuración recomendada ( figura a. ), es una buena opción. Este cristal asegura el cumplimiento de los tiempos de oscilación y ofrece una velocidad de procesamiento adecuada para el desarrollo de un gran número de aplicaciones.

En el microcontrolador, el ciclo de instrucción se define como el período de tiempo en el cual un sistema programado obedece a una instrucción típica, y es igual al período de reloj multiplicado por cuatro. Para un cristal de 4 Mhz, el período de reloj es de 0,25 s. y el tiempo de cada ciclo de instrucción es de 1 s.

En la siguiente figura se presenta el diagrama de tiempos del microcontrolador y la forma como se ejecutan las instrucciones. Hay que destacar que cada ciclo de instrucción se compone de 4 ciclos Q.

Pulsadores o interruptores

Otro importante elemento para el desarrollo de tareas en un microcontrolador, son los pulsadores o interruptores, ya que con ellos se pueden construir arreglos de pulsadores o teclados.

El circuito base es muy sencillo de implementar y su finalidad es colocar un cero lógico o un uno lógico en determinado pin del microcontrolador y así dar una orden, que según el programa, se interprete y realice.

La resistencia R limita la corriente que circula cuando se presiona un pulsador y generalmente se utiliza una resistencia de 5.1 k para que realice esta función.

El circuito presentado es para pulsadores normalmente abiertos. Se puede apreciar que en caso de no estar presionados, envían un cero lógico al pin al que están conectados.

3. DISPOSITIVOS DE SALIDA

Algunos de los principales circuitos de salida o “ periféricos ” más empleados cuando se trabaja comúnmente con un microcontrolador, son los siguientes: diodos LEDs, relés, zumbadores, motores, displays de 7 segmentos y LCDs ( visualizadores de cristal líquido )

De acuerdo a cada proyecto o aplicación, se empleará un elemento en particular o un conjunto de elementos de salida.

El más sencillo de estos elementos es el diodo LED, el cual se puede conectar directamente a cualquier pin, por medio de una resistencia limitadora. Hay que destacar que la corriente típica que suministra un pin de un microcontrolador es de 20 mA, por lo que en algunos casos será necesario emplear circuitos manejadores de corriente ( drivers ) para la conexión con diversos elementos de salida.

El display de cristal líquido ( LCD )

Un display de cristal líquido, es un elemento de mucha utilidad en cualquier proyecto, ya que permite visualizar directamente todos los datos y variables involucradas en la aplicación. Los displays más comunes tienen dos líneas de 14, 16, 20 o más caracteres cada una y viene con los circuitos necesarios para su funcionamiento.

El display cuenta generalmente con 14 terminales de conexión. Tres terminales para el suministro del voltaje de alimentación, tres para el control del display y los ocho terminales restantes para la interfase de datos con el microcontrolador.

Pin Nº Símbolo Nivel Función

1 Vss Tierra o referencia

2 VDD Voltaje positivo ( 5 V. )

3 Vee Voltaje de manejo

4 RS H / L Control Selector de Registros

1 = modo entrada de datos.

0 = modo entrada de comandos.

5 R / W H / L Control de Lectura y Escritura

1 = Lectura de Datos.

0 = Escritura de Datos.

6 E H, H  L Señal de Habilitación

7 DB0 H / L

8 DB1 H / L

9 DB2 H / L Terminales del

10 DB3 H / L

11 DB4 H / L Bus de Datos

12 DB5 H / L

13 DB6 H / L

14 DB7 H / L

El display puede trabajarse en cualquiera de sus dos modos de operación: como una interfase de datos de 8-bits o como una interfase de 4-bits. Cuando opera en el modo de 4-bits se hace necesario la transferencia de dos caracteres por terminal. El modo de 8-bits es más fácil de implementar y utiliza menos espacio de memoria pero requiere los ocho terminales del bus de datos.

El circuito de alimentación del display y la interfase con el PIC se muestran en la siguiente figura. La resistencia R2 se remplaza generalmente por una resistencia variable de 1 KΩ que permita realizar el contraste del display.

Para el buen funcionamiento del display se deben tener en cuenta los siguientes aspectos:

• El display debe contar con un voltaje de alimentación adecuado.

• Antes de poner a funcionar el display, es necesario realizar una secuencia de inicialización en la que se definen sus condiciones de operación. Una vez inicializado el display, cada uno de los caracteres es individualmente direccionable.

• Para evitar conflictos en el display, se debe contar con el tiempo suficiente para la ejecución de las diferentes instrucciones.

4. APLICACIONES

En esta sección se presentan algunas de las aplicaciones más comunes de los microcontroladores. Se adjunta además un programa ejemplo, el cual puede servir de guía para el proceso de programación del microcontrolador.

Configuración de puertos de un microcontrolador

Los diferentes puertos que posee un microcontrolador, pueden operar como entradas o salidas digitales según se necesite o desee.

Cada puerto se configura por separado y cada pin puede configurarse individualmente como entrada o como salida, dependiendo de la función que vaya a realizar. Si algún puerto no se utiliza, es configurado por el microcontrolador como entrada digital.

Cabe mencionar que un ‘ 1 ’ lógico en el registro TRISx configura al pin correspondiente como entrada digital y un cero ‘ 0 ’ como salida digital.

En el siguiente ejemplo se muestra la configuración básica de los pines de un puerto y la forma de realizar la lectura y escritura en los mismos.

Ejemplo: configure el Puerto A de un microcontrolador PIC primero con todos sus pines como salidas digitales y luego como entradas digitales.

Operación del teclado

La comunicación entre el usuario y el control se hace posible como consecuencia de la interacción entre el PIC y el teclado.

Existen muchas formas de hacer interactuar estos elementos con el programa. Por ejemplo, se puede llevar la lectura del puerto donde se encuentra el teclado a un registro auxiliar y allí se verifica el estado de cada tecla ( bit ) por medio de la instrucción BTFSC. En caso de estar presionada alguna tecla se leerá un ‘ 1 ’ lógico en la posición asignada a dicha tecla y esto le indicará al microcontrolador la tarea a realizar.

En el siguiente ejemplo se presenta como hacer esta lectura de teclado.

Ejemplo: realice la lectura de una tecla ubicada en el Puerto B y de acuerdo a su estado salte a la TAREA1 o a la TAREA2.

Retardo por software

En muchos casos se hace necesario colocar retardos en el tiempo para la visualización de algún efecto o la realización de determinada tarea.

Para ello se puede emplear la siguiente subrutina, la cual depende del valor que se le asigne a la variable “ time ”.

; tiempo del retardo = ( time * 5,001ms )

RETARDO movlw .time

movwf val1

TRES movlw .185

movwf val2

DOS movlw .7

movwf val3

nop

UNO decfsz val3,f

goto UNO

decfsz val2,f

goto DOS

decfsz val1,f

goto TRES

return

Interfase PIC – Display de cristal líquido

La interfase que se va a implementar, para el trabajo con el display de cristal líquido, es la del bus de datos de 8-bits. Antes de presentar un programa que controla el comportamiento del display, se van a describir en el siguiente cuadro las instrucciones típicas para su manejo y configuración.

Instrucción RS R/W DB DB DB DB DB DB DB DB Descripción

7 6 5 4 3 2 1 0

Limpiar 0 0 0 0 0 0 0 0 0 1 limpia el display y lleva el

Display cursor a la dirección cero

Cursor 0 0 0 0 0 0 0 0 1 * lleva el cursor a la dirección

at Home cero sin cambiar el contenido

Modo 0 0 0 0 0 0 0 1 I/D S controla el movimiento del cursor y

entry set activa el desplazamiento del display

Control 0 0 0 0 0 0 1 D C B activa o desactiva el display, el

ON/OFF cursor y el parpadeo del cursor

Cursor / 0 0 0 0 0 1 S/C R/L * * mueve el cursor o desplaza el display

Display sin cambiar al contenido de la pantalla

Función 0 0 0 0 1 DL N F * * define el ancho de interfase, el número

SET de líneas del display y caracteres

Dirección 0 0 0 1 ACG define la dirección en el display

DDRAM del RAM del generador de caracteres

Dirección 0 0 1 ADD define la dirección en el display

DDRAM del RAM de datos del display

Busy Flag / 0 1 BF AC indica si la operación interna está en

Addres Read proceso y lee direcciones de contenido

Escritura 1 0 Escritura de Datos escribe los datos en el DDRAM

de Datos o en el CGRAM

Lectura 1 1 Lectura de Datos lee datos del DDRAM o del CCRAM

de Datos

En el cuadro de instrucciones del display se emplearon las siguientes abreviaturas:

* : posición no válida.

I / D : dirección del cursor. 1, hacia la derecha. 0, hacia la izquierda.

S : desplazamiento del display. 1, activado. 0, desactivado.

D : display. 1, activado. 0, desactivado.

C : cursor. 1, activado. 0, desactivado.

B : parpadeo del cursor. 1, activado. 0, desactivado.

S /C : desplazamiento / cursor. 1, desplazamiento del display.

0, movimiento del cursor.

R / L : desplaza el display. 1, hacia la derecha. 0, hacia la izquierda.

DL : ancho de la interfase. 1, 8-bits. 0, 4-bits.

N : líneas del display. 1, dos líneas. 0, una línea.

F : puntos de los caracteres. 1, 5x10 puntos. 0, 5x7 puntos.

BF : 1, operación interna en proceso. 0, instrucción aceptada.

DDRAM : RAM de datos del display.

CGRAM : RAM del generador de caracteres.

ACG : dirección del CGRAM

ADD : dirección del DDRAM.

AC : contador de direcciones.

Después de inicializar el display, se realiza el programa de interfase, el cual permite que se visualicen los mensajes, datos y resultados que se necesiten o se quieran presentar durante la aplicación.

En el siguiente ejemplo se presenta la interfase de 8-bits PIC - display, en la que se indica la forma de inicializar el display y de visualizar un mensaje.

UNIDAD 4

EL PLC

CONTENIDOS

4.1 INTRODUCCIÓN AL PLC

4.1.1. Estructura básica

4.1.2. Diferentes tipos de PLC

4.2 DESARROLLO DE APLICACIONES

4.2.1 El PLC micro-1 de IDEC

4.2.1.1 Programación del micro-1

4.2.1.2 El temporizador

4.2.1.3 El contador

4.2.1.4 Las funciones especiales

4.2.2 El PLC FX-16MR

NOTA: Tema pendiente

GLOSARIO DE TÉRMINOS

ACUMULADOR: Registro de la unidad aritmética y lógica del ordenador que almacena los resultados intermedios.

ADC: Acrónimo de Analog to Digital Converter ( Conversor análogo a digital )

ADMINISTRADOR DE MEMORIA EXTENDIDA: Programa que impide que distintas aplicaciones utilicen la misma área de memoria extendida al mismo tiempo.

ALGORITMO: Procedimiento o conjunto de procedimientos que describen una asociación de datos lógicos destinados a la resolución de un problema. Los algoritmos permiten automatizar tareas.

ANCHO DE BANDA: Es la cantidad de información, normalmente expresada en bits por segundo, que puede transmitirse en una conexión durante la unidad de tiempo elegida. Es también conocido por su denominación inglesa: bandwith.

ARCHIVO DE SISTEMA: Archivo que contiene la información necesaria para ejecutar el sistema operativo.

AREA DE MEMORIA ALTA: (HMA) Los primeros 64 KB de memoria extendida. Esta área es utilizada por algunas aplicaciones, entre ellas Windows.

AREA DE MEMORIA SUPERIOR: Área de 384 KB adyacentes a los 640 KB de memoria convencional. Esta área se reserva usualmente para el funcionamiento de los componentes de hardware del sistema, tal como el monitor, y no se considera parte de la memoria total, ya que las aplicaciones no pueden almacenar información en ella.

ASCII: Siglas de American Standar Code for Information Exchange. Se trata de un código casi universal para caracteres, números y símbolos, asignándole un número entre el 0 y el 255 a cada uno de ellos, como por ejemplo, el 65 para la letra A.

ASYNC: Acrónimo de Asyncronous ( Asíncrono ). Es el tipo de comunicación por el cual los datos se pasan entre dispositivos de forma asíncrona o sea que la transmisión de un caracter es independiente del resto de los demás caracteres.

BANDERA: Indicador interior del programa que da información sobre una condición determinada.

BAUDIO: Unidad que mide la velocidad de transmisión de los datos. Normalmente representa el número de bits por segundo.

BIT DE INICIO: Primer bit en un conjunto de datos que indica que los siguientes son datos.

BIT DE PARADA: Último bit en un conjunto de datos que indica que los anteriores son datos.

BIT DE PARIDAD: Se trata del método más elemental de detección de errores. Consiste en un único bit que indica si el número de bits enviados es par o impar.

BITS POR SEGUNDO: Se abrevia usualmente como 'bps'. Es el número de bits de datos enviados por segundo y es la auténtica velocidad de transmisión.

BLOQUES DE MEMORIA SUPERIOR: (UMOS) Zonas no utilizadas del área de memoria superior. Si se dispone de una computadora con un procesador 80386 o 80486, es posible copiar en los bloques de memoria superior información procedente de otros tipos de memoria, liberando así más memoria convencional (los primeros 640 KB).

BUCLE: Conjunto de instrucciones que se repiten varias veces seguidas.

BUFFER: Área de almacenamiento temporal de información.

BUS: ( Línea ) Cableado utilizado para transmitir un conjunto de señales de información entre dispositivos de un computador. De su amplitud ( expresada en bits simultáneos ) depende su velocidad.

CACHÉ DE DISCO: Una porción de la memoria reservada para almacenar temporalmente información leída en un disco.

CAMPO: Colección de caracteres que forman un grupo distinto, como un código de identificación, un nombre o una fecha. Generalmente un campo forma parte de una información.

CHECKSUM: ( Suma de comprobación ). Es el más elemental de los controles de errores. Consiste normalmente en un único byte obtenido mediante una o varias operaciones matemáticas realizadas sobre todos los bytes de un bloque de datos con el fin de controlar los posibles errores que se produzcan durante una transmisión.

COMPILADOR: Programa que pasa otro programa escrito en un lenguaje de alto nivel ( parecido al humano ) al lenguaje de la máquina de modo que ésta lo entienda perfectamente.

COMUNICACIÓN SíNCRONA: Es el tipo de comunicación por el cual los datos se pasan entre dispositivos de forma síncrona o sea que la transmisión depende de la meticulosa sincronización de los datos transmitidos, enviados y de sus propios mecanismos de transmisión. No requiere ni bit de inicio ni bit de parada, a diferencia de la comunicación asíncrona.

CPU: Acrónimo de Central Processing Unit ( unidad central de procesamiento ) Es el procesador central del computador encargado de controlar rutinas, realizar funciones aritméticas, y otras tareas propias. Cada vez se le suele descargar de más tareas, consiguiendo de esta forma un mayor rendimiento.

DAC: Acrónimo de Digital to Analog Converter ( Conversor de digital a analógico )

DEPURAR: ( debug ). Eliminar los errores de un programa.

DIAGRAMA DE FLUJO ( FLOW-CHART ): Trazado de la escritura y curso de un programa en el que se utilizan formas diferentes, como un rectángulo o un cuadrado para indicar una acción del ordenador, y un rombo para las decisiones tomadas por éste. Normalmente, se suele hacer el gráfico o diagrama del programa antes de introducir una sola línea de éste en el computador.

DIRECCIÓN: Número que se refiere a la posición, generalmente en la memoria del computador, en la que se almacena la información.

DIRECCIONES DE E/S: ( Entrada /Salida ) Posiciones dentro del espacio de dirección de entrada/salida de la computadora que son utilizadas por un dispositivo, como puede ser una impresora o un módem. La dirección es utilizada para la comunicación entre el software y el dispositivo.

DMA: Acrónimo de Direct Memory Access ( Acceso directo a memoria ).

DOBLE PALABRA: Agrupación de 32 bits consecutivos equivalente a cuatro bytes.

E/S: Acrónimo de 'Entrada/Salida'. Suele aplicarse al flujo de datos. También es conocido por su acrónimo inglés 'I/O'.

EMULADOR DE MEMORIA EXPANDIDA: Utilidad que convierte memoria extendida en memoria expandida.

ENSAMBLADOR ( ASSEMBLER ): Es un programa que convierte otro programa escrito en lenguaje de ensamble ( assembly language ) en un código que el microprocesador puede ejecutar directamente.

ENTRADA ( INPUT ): Toda la información que se introduce en un programa durante su ejecución.

FIRMWARE: Son los programas que funcionan dentro del computador, relacionados íntimamente con el hardware. El firmware puede alterarse, hasta cierto punto, por medio del software.

I/O: Acrónimo de Input/Output ( Entrada/Salida ). Suele aplicarse al flujo de datos. También es conocido por su acrónimo castellano 'E/S' ( Entrada/Salida ).

INSTRUCCIÓN: Elemento del código de programación que le dice al computador que lleve a cabo una tarea determinada. Una instrucción en lenguaje de ensamble, por ejemplo, podría ser ADD, con lo que le dice al ordenador que realice una suma.

INTEL: Uno de los mayores fabricantes de procesadores, chips y circuitos integrados del mundo, de nacionalidad estadounidense. Sus 'CPUs' más conocidas son: 8086, 8088, 80286, 80386, 80486, Pentium y su co-procesador matemático: 80387.

INTERFAZ: Conexión mecánica o eléctrica que permite el intercambio de información entre dos dispositivos o sistemas. Habitualmente se refiere al 'software' y 'hardware' necesarios para unir dos elementos de proceso en un sistema o bien para describir los estándares recomendados para realizar dichas interconexiones. Es más conocido por su denominación inglesa: 'interface'.

INTERRUPCIÓN: Señal que un dispositivo envía a la computadora cuando dicho dispositivo, por ejemplo, no está listo para aceptar o enviar información.

IRQ: Acrónimo de Interrupt ReQuest ( Petición de interrupción ). Señal que envía un dispositivo para ser atendido por el programa encargado de gestionarlo. En un PC ( no inferior a un 80286 ) existen 15 IRQs de las cuales sólo los números 10, 11, 12 y 15 están realmente libres ya que las otras las ocupa el propio sistema. Conocido simplemente como: interrupción.

K: Abreviatura de kilobyte; 1 K= 1.024 bytes .

KB/S: Acrónimo de Kilobytes per second ( Kilo-bytes por segundo )

KBIT/S: Acrónimo de Kilobits per second ( Kilobits por segundo )

LENGUAJE DE ALTO NIVEL: Lenguaje de programación que utiliza instrucciones escritas con palabras comunes.

LENGUAJE DE BAJO NIVEL: Lenguaje parecido al utilizado en el computador.

LENGUAJE DE MÁQUINA: Es el escalón inferior al lenguaje de bajo nivel; es el lenguaje que el ordenador entiende directamente .

LÍNEAS DE INTERRUPCIÓN REQUERIDA: ( IRO ) Líneas del hardware sobre las cuales los dispositivos pueden enviar señales de interrupción, las que indican si el dispositivo está listo para aceptar o enviar información. Por lo general, cada uno de los dispositivos conectados a la computadora utiliza una línea IRQ independiente.

MAINFRAME: Computador muy potente al que se conectan una o varias estaciones de trabajo.

MB/S: Acrónimo de Megabytes per second ( Mega-bytes por segundo]

MBIT/S: Acrónimo de Megabits per second ( Megabits por segundo )

MEGABYTE: Equivale a: 1024 Kilo-bytes ó 1.048.576 bytes ( 2 elevado a la 20 ).

MEMORIA CONVENCIONAL: Primeros 640 KB de memoria que utiliza el MS-DOS para ejecutar aplicaciones.

MEMORIA EXPANDIDA: Memoria que utilizan algunas aplicaciones No-Windows además de la memoria convencional. La memoria expandida es un estándar antiguo que se está sustituyendo hoy por la memoria extendida. Sólo el software compatible con EMS puede utilizar memoria expandida. Cuando Windows se ejecuta en el modo extendido del 386, simula memoria expandida para aquellas aplicaciones que la necesiten. También denominada Memoria EMS.

MEMORIA EXTENDIDA: Memoria más allá de un megabyte (MB) en las computadoras basadas en los procesadores 80286, 80386 y 80486. Windows utiliza memoria extendida para administrar y ejecutar aplicaciones. Por lo general, la memoria extendida no podrá ser utilizada por las aplicaciones No-Windows ni por MS-DOS.

MEMORIA VIRTUAL: Sistema de administración de memoria utilizado por Windows en el modo extendido del 386, que permite ejecutar Windows como si hubiese más memoria de la que existe en realidad. La cantidad de memoria virtual disponible será igual a la cantidad de memoria RAM libre sumada al volumen de espacio de disco asignado a un archivo de intercambio que Windows utiliza para simular memoria RAM adicional.

MEMORIA VOLATIL: Un mecanismo de memoria que pierde sus contenidos cuando se le corta la energía eléctrica.

MICRO: Abreviatura de microcomputador.

MICROCHIP: Diminuto circuito de silicio que funciona como memoria, procesador, etc .

MICROPROCESADOR: El chip que hace de corazón del computador o de su parte pensante.

MODO EXTENDIDO DEL 386: Modo en el que se ejecuta Windows para tener acceso a las capacidades de memoria virtual del procesador Intel 80386. En este modo, Windows parece utilizar más memoria de la disponible físicamente y puede trabajar en el modo de multitarea con aplicaciones No-Windows.

MODO PROTEGIDO: Modo de funcionamiento de la computadora que permite tener acceso directamente a la memoria extendida.

MSB: Acrónimo de Most Significant Bit ( Bit más significativo )

MULTITAREA: Capacidad que tiene una computadora de ejecutar varias aplicaciones al mismo tiempo.

MULTIUSUARIO: Capacidad de permitir el acceso a varios usuarios simultáneos a un determinado programa, aplicación, sistema o servicio telemático en línea sin destruir la integridad de mismo.

NIBBLE: Agrupación de 4 bits consecutivos equivalente a medio byte.

PALABRA: Word. Agrupación de 16 bits consecutivos equivalente a dos bytes.

PAQUETE: Conjunto de caracteres enviados conjuntamente durante una comunicación. Los bloques más comunes suelen ser de 64, 128 ó 1024.

PC: Acrónimo de Personal Computer ( Computadora personal ) Computador presentado por 'IBM' el 12 de agosto de 1981 en EE.UU. y comercializado en 1982. Fue el primer ordenador que se vendió masivamente en todo el mundo siendo su denominación original: 'IBM PC'. Con la idea de que el ordenador debía transportarse, surgió su primer competidor: 'Compaq' que lanzó en 1982 su propio portátil. El despegue real del 'PC' llegó en 1983 cuando 'IBM' anunció un auténtico estándar: el 'PC XT' siendo posteriormente culminado por el 'PC AT'.

PERIFÉRICO: Dispositivo externo o interno que se conecta al computador.

POR DEFECTO: Dícese del disco, el programa, etc. que entra en funcionamiento cuando no se da ninguna otra instrucción.

PUERTO: Canal o interfaz que une un periférico a un microprocesador. Puede ser serie ( envía los datos bit a bit ) o paralelo ( envía los datos byte a byte ).

REGISTRO: Parte de la memoria del computador que contiene datos de uso frecuente .

SALIDA (OUTPUT): Todos los datos producidos por el computador mientras está procesando, ya aparezcan estos datos en la pantalla, ya los entregue a la impresora o los utilice internamente.

SERVIDOR: Computadora que suministra espacio de disco, impresoras u otros servicios a computadoras conectadas con ella a través de una red.

TERMINAL: Dispositivo de entrada/salida de datos. El terminal "tonto" ( a veces denominado 'TTY' ) maneja simplemente dicha entrada/salida mientras que el "inteligente" utiliza un microprocesador para realizar esa tarea con capacidades adicionales no disponibles en el anterior.

TIEMPO DE ESPERA: Cantidad de tiempo que deberá esperar la computadora cuando un dispositivo no ejecute una determinada tarea, antes de presentar un mensaje de error.

TIEMPO REAL: Modalidad de funcionamiento de un sistema de proceso de datos que controla una actividad en curso, con un tiempo de respuesta prácticamente nulo a la recepción de las señales de entrada.

UNIDAD: Dispositivo de un computador que acepta discos o cintas en los que lee o graba datos.

UNIDAD CENTRAL DE PROCESAMIENTO: Es el corazón del computador, en donde se llevan a cabo las funciones aritméticas, lógicas, de procesamiento y de control.

VLSI: Acrónimo de Very Large Scale Integration ( Integración a muy gran escala ) Este tipo de integración permite diseñar circuitos cada vez más reducidos en tamaño lo que, en la práctica, hace que nuestros computadores, módems, etc sean cada vez más diminutos, aumentando paradójicamente sus prestaciones.

FUENTES DOCUMENTALES

DOCUMENTOS IMPRESOS

ANGULO, José Mª. “Microcontroladores PIC: Diseño Práctico de Aplicaciones”. ( 2ª edición ). Editorial Mc Graw Hill. España, 1999.

BREY, Barry. “Los microprocesadores INTEL”. ( 5ª edición ). Editorial Prentice-Hall. México, 2001.

CEKIT. Curso básico de microprocesadores.

STALLINGS, William. “Organización y Arquitectura de Computadores”. ( 5ª edición ). Editorial Prentice-Hall. Madrid, 2000.

TOKHEIM, Roger. “Fundamentos de los Microprocesadores”. ( 2ª edición ). Editorial Mc Graw Hill. México, 1985.

URUÑUELA, José Mª. “Microprocesadores: Programación e Interconexión”. ( 2ª edición ). Editorial Mc Graw Hill. España, 1995.

DIRECCIONES DE SITIOS WEB

http://www.duiops.net/hardware/micros/micros.htm#Principio

http://usuarios.lycos.es/irojasb/El_Microprocesador.htm

http://www.alpertron.com.ar/INTEL.HTM

http://www.conocimientosweb.net/dcmt/ficha4227.html

http://www.unicrom.com/Tut_PICs1.asp

http://perso.wanadoo.es/chyryes/tutoriales/pic0.htm

http://www.abcdatos.com/tutoriales/electronicayelectricidad/electronica/microcontroladorespic.html

...

Descargar como  txt (203.5 Kb)  
Leer 131 páginas más »
txt