inicio micros 8bits

Upload: falco-corvaro

Post on 15-Jul-2015

2.809 views

Category:

Documents


1 download

TRANSCRIPT

Iniciacin a los Microcontroladores de las familias de 8 bits

Jordi MaynIngeniero de Aplicaciones

Rev. 2

ndiceQu es un Microcontrolador? ______________________________________________________________ 8 ndice ________________________________________________________________________________ 8 Introduccin___________________________________________________________________________ 8 Vista global de un Sistema con Microprocesador_____________________________________________ 8 Entradas de un Sistema con Microprocesador _______________________________________________ 9 Salidas de un Sistema con Microprocesador_________________________________________________ 9 Unidad Central de Proceso (CPU) _________________________________________________________ 9 Reloj (Clock) _________________________________________________________________________ 10 Memoria del Microprocesador___________________________________________________________ 10 Programa de un Microprocesador ________________________________________________________ 10 El Microcontrolador ___________________________________________________________________ 11 Resumen _____________________________________________________________________________ 12 Partes de cualquier microprocesador ______________________________________________________ 12 Tipos de Microprocesadores ____________________________________________________________ 12 Nmeros y Cdigos de un microprocesador ___________________________________________________ 13 ndice _______________________________________________________________________________ 13 Introduccin__________________________________________________________________________ 13 Nmeros Binarios y Hexadecimales_______________________________________________________ 13 Cdigos ASCII ________________________________________________________________________ 14 Cdigo de trabajo del microprocesador ___________________________________________________ 15 Cdigos Mnemotcnicos de las Instrucciones y Ensambladores ________________________________ 15 Nmeros Octales ______________________________________________________________________ 16 BCD (Binario Codificado en Decimal)_____________________________________________________ 17 Resumen _____________________________________________________________________________ 18 Elementos bsicos de la Lgica _____________________________________________________________ 19 ndice _______________________________________________________________________________ 19 Introduccin__________________________________________________________________________ 19 Niveles lgicos ________________________________________________________________________ 19 Transistores CMOS____________________________________________________________________ 19 Puertas Simples _______________________________________________________________________ Inversor ____________________________________________________________________________ Puerta NAND _______________________________________________________________________ Entrada ____________________________________________________________________________ Puerta NOR _________________________________________________________________________ Entrada ____________________________________________________________________________ Puertas de Transmisin, Buffers y Flip-Flops_______________________________________________ Puerta de transmisin _________________________________________________________________ Buffer de tres estados _________________________________________________________________ Medio Flip Flop (HFF) ________________________________________________________________ 20 20 21 21 21 22 22 22 23 24

Resumen _____________________________________________________________________________ 25 Memoria y Entradas/Salidas Paralelas _______________________________________________________ 26 ndice _______________________________________________________________________________ 26 1

Introduccin__________________________________________________________________________ 26 Analoga de una Memoria con unas Casillas________________________________________________ 26 Cmo ve la Memoria el Microprocesador __________________________________________________ 27 Kilobytes, Megabytes y Gigabytes ________________________________________________________ 27 Tipos de Memoria _____________________________________________________________________ 27 Memorias Voltiles ____________________________________________________________________ 27 RAM: Memoria de Acceso Aleatorio (Random Access Memory) _______________________________ 27 Memorias No-Voltiles _________________________________________________________________ ROM: Memoria de slo Lectura (Read-Only Memory) _______________________________________ PROM: Memoria Programable de slo lectura (Programmable ROM) ___________________________ EPROM: Memoria Elctricamente Programable (borrable por UV)______________________________ OTP: Memoria EPROM programable uno sola vez __________________________________________ EEPROM: Memoria Programable y Borrable elctricamente___________________________________ FLASH: Memoria Programable y Borrable elctricamente ____________________________________ 28 28 28 28 28 28 28

E/S como un tipo de Memoria ___________________________________________________________ 28 Estados internos y Registros de control____________________________________________________ 29 Mapa de memoria _____________________________________________________________________ 30 La Memoria como un Perifrico _________________________________________________________ 31 Resumen _____________________________________________________________________________ 32 Tipos de Memoria ____________________________________________________________________ 32 Arquitectura del Microcontrolador __________________________________________________________ 33 ndice _______________________________________________________________________________ 33 Introduccin__________________________________________________________________________ 33 Arquitectura del Microcontrolador _______________________________________________________ 33 Registros de la CPU____________________________________________________________________ 34 Tiempos _____________________________________________________________________________ 35 Vista de un Programa __________________________________________________________________ 35 Listado 1. Programa Ejemplo ___________________________________________________________ 36 Funcionamiento de la CPU ______________________________________________________________ Funcionamiento Detallado de las Instrucciones en la CPU _____________________________________ Guardar en el Acumulador (Modo de Direccionamiento Directo) _______________________________ Cargar el Acumulador (Modo de Direccionamiento Inmediato) _________________________________ Bifurcacin Condicional _______________________________________________________________ Llamada a una subrutina y Retorno de una subrutina _________________________________________ Listado 2. Ejemplo de Llamada a Subrutina ________________________________________________ 38 38 38 39 39 39 40

Ver Funcionando un Microcontrolador ___________________________________________________ 41 Reset ______________________________________________________________________________ 44 Pin de RESET _____________________________________________________________________ Power-On Reset______________________________________________________________________ Reset por Watchdog Timer_____________________________________________________________ Reset por una Direccin ilegal___________________________________________________________ 44 44 44 44

Interrupciones ________________________________________________________________________ 45 Direccin del Vector __________________________________________________________________ 45 Interrupciones externas ________________________________________________________________ 46 Interrupciones de Perifricos internos_____________________________________________________ Interrupcin por Software (SWI)_________________________________________________________ Latencia de Interrupcin _______________________________________________________________ Interrupciones anidadas ________________________________________________________________ 47 47 47 47

Resumen _____________________________________________________________________________ 48 2

Juego de Intrucciones del MC68HC05 _______________________________________________________ 49 ndice _______________________________________________________________________________ 49 Introduccin__________________________________________________________________________ 49 Unidad Central de Proceso (CPU)________________________________________________________ 49 Unidad Aritmtica/Lgica (ALU) ________________________________________________________ 50 Control de la CPU _____________________________________________________________________ 50 Registros de la CPU____________________________________________________________________ 50 (A) Acumulador _______________________________________________________________________ 50 (X) Registro de ndice __________________________________________________________________ 50 (CCR) Registro de Cdigo Condicin _____________________________________________________ 51 (H) Bit Medio acarreo __________________________________________________________________ 51 (I) Bit Mscara de interrupcin __________________________________________________________ (N) Bit negativo______________________________________________________________________ (Z) Bit Cero _________________________________________________________________________ (C) Bit Carry/Borrow _________________________________________________________________ 51 51 51 52

Contador de Programa _________________________________________________________________ 52 Modos de Direccionamiento _____________________________________________________________ 53 Modo de Direccionamiento Inherente _____________________________________________________ 54 Modo de Direccionamiento Inmediato_____________________________________________________ 55 Modo de Direccionamiento Extendido_____________________________________________________ 55 Cdigo mnemotcnico_________________________________________________________________ 56 Modo de Direccionamiento Directo _______________________________________________________ 56 Cdigo mnemotcnico_________________________________________________________________ 57 Modos de direccionamiento Indexado _____________________________________________________ 57 Modo Indexado sin Ningn Desplazamiento _______________________________________________ 58 Cdigo mnemotcnico_________________________________________________________________ 58 Indexado con 8-bits de Desplazamiento____________________________________________________ 58 Indexado con 16-Bits de Desplazamiento __________________________________________________ 59 Cdigo mnemotcnico_________________________________________________________________ 60 Modo de Direccionamiento Relativo ______________________________________________________ 60 Instrucciones Prueba de bit (Bit Test) y Bifurcacin (Branch) __________________________________ 61 Organizacin de las instrucciones por Tipo ________________________________________________ 61 Resumen del Juego de Instrucciones ______________________________________________________ Smbolos de Cdigo de condicin ________________________________________________________ Operadores Booleanas _________________________________________________________________ Registros de la CPU___________________________________________________________________ Modos de Direccionamiento Abreviacin 65 65 65 65

Operandos _______________________________ 65

Resumen _____________________________________________________________________________ 66 Registros de la CPU____________________________________________________________________ 66 Modos de Direccionamiento _____________________________________________________________ 66 Ejecucin de Instrucciones ______________________________________________________________ 66 Programacin ___________________________________________________________________________ 67 ndice _______________________________________________________________________________ 67 Introduccin__________________________________________________________________________ 67 Escribiendo un simple programa _________________________________________________________ 67 3

Diagrama de flujo _____________________________________________________________________ 68 Cdigo Fuente Mnemnico ______________________________________________________________ 69 Programa de Retardo __________________________________________________________________ 70 Listado Ensamblador __________________________________________________________________ Listado 3. Listado Ensamblador _________________________________________________________ Archivo de Cdigo Objeto______________________________________________________________ Directivas del Ensamblador_____________________________________________________________ Origen (ORG) _______________________________________________________________________ Igual (EQU) _________________________________________________________________________ Byte de Forma Constante (FCB) _________________________________________________________ Byte de Forma Doble (FDB) ____________________________________________________________ Byte de Reserva de Memoria (RMB) _____________________________________________________ Pone el Nmero Base por defecto a Decimal _______________________________________________ 71 71 73 74 74 74 74 75 75 75

Familiarizacin con el Juego de Instrucciones ______________________________________________ 76 Desarrollo de la Aplicacin______________________________________________________________ 76 Resumen _____________________________________________________________________________ 78 Estructura del Programa Base______________________________________________________________ 79 ndice _______________________________________________________________________________ 79 Introduccin__________________________________________________________________________ 79 EQUATES del Sistema _________________________________________________________________ 79 Registros EQU para el MC68HC705J1A __________________________________________________ 79 Aplicacin de los EQU del Sistema _______________________________________________________ 80 Preparacin de los Vectores _____________________________________________________________ 80 Vector de Reset _______________________________________________________________________ 80 Interrupciones sin usar _________________________________________________________________ 81 Variables de la RAM ___________________________________________________________________ 82 Bucle Base ___________________________________________________________________________ 82 Bucle Secuenciador ____________________________________________________________________ 83 Bucle del Reloj del Sistema ______________________________________________________________ 83 Sus Programas ________________________________________________________________________ 84 Consideraciones de tiempo ______________________________________________________________ 84 Consideraciones de la Pila (Stack) ________________________________________________________ 84 Estructura de una Aplicacin Preparada __________________________________________________ 85 Listado 4. Estructura del Programa Base (pg 1 de 5) ________________________________________ 86 Resumen _____________________________________________________________________________ 91 Perifricos Internos ______________________________________________________________________ 92 ndice _______________________________________________________________________________ 92 Introduccin__________________________________________________________________________ 92 Tipos de Perifricos ____________________________________________________________________ 92 Temporizadores _______________________________________________________________________ 93 Puertos Serie _________________________________________________________________________ 93 Convertidor Analgico a Digital _________________________________________________________ 93 Convertidor Digital a Analgico _________________________________________________________ 93 EEPROM ____________________________________________________________________________ 94 4

Control de Perifricos __________________________________________________________________ 94 Temporizador del MC68HC705J1A ______________________________________________________ 94 Ejemplo del Temporizador _____________________________________________________________ 96 Usando el Software PWM______________________________________________________________ 100 Listado 5. Listado del Programa PWM (pgina 1 de 2) ______________________________________ 101 Ejemplo Prctico de un Control de Motor ________________________________________________ 103 Teora ______________________________________________________________________________ 103 Circuito de Control de un motor ________________________________________________________ 104 Software del Control de Motor__________________________________________________________ 106 Listado 6. Listado del Programa de Control de Velocidad (pgina 1 de 4) ________________________ 108 Resumen ____________________________________________________________________________ 112 Otros Tipos de Perifricos _____________________________________________________________ 112 Juego de Instrucciones___________________________________________________________________ 113 ndice ______________________________________________________________________________ 113 Introduccin_________________________________________________________________________ 114 Juego de Instrucciones del MC68HC05___________________________________________________ 115 ADC ADD AND ASL ASR BCC BCLR n BCS BEQ BHCC BHCS BHI BHS Suma con Acarreo Suma sin Acarreo AND Lgico ADC ____________________________________________________ 116 ADD ___________________________________________________ 117 AND _______________________________________________________ 118 ASL____________________________________ 119 ASR __________________________________ 120 BCC _______________________________________ 121 BCLR n ______________________________________ 122 BCS ________________________________________ 123 BHCC______________________________________ 125 BHCS ____________________________________ 126 BHS _______________________________________ 128

Desplazamiento Aritmtico a la Izquierda Desplazamiento Aritmtico a la Derecha Bifurcacin si se pone a 0 el Acarreo Pone a 0 un Bit en la Memoria Bifurcacin si el Acarreo es 1 Bifurcacin si es Igual Bifurcacin si Medio Acarreo es 0 Bifurcacin si Medio Acarreo es 1 Bifurcacin si ms es Mayor Bifurcacin si es Mayor o Igual

BEQ_______________________________________________ 124

BHI________________________________________________ 127

BIH Bifurcacin si el Pin de Interrupcin est en nivel Alto BIH _______________________________ 129 BIL Bifurcacin si el Pin de Interrupcin est en nivel Bajo BIL ________________________________ 130 BIT BLO BLS BMC BMI BMS BNE BPL BRA BRCLR n BRN Bit de Prueba de la Memoria con el Acumulador Bifurcacin si es ms Menor Bifurcacin si es Menor o Igual Bifurcacin si es Menor Bifurcacin si no es Igual Bifurcacin si es Positivo Bifurcacin Incondicional Bifurcacin si el Bit n es Cero Nunca Bifurcacin BIT __________________________________ 131 BLO ___________________________________________ 132 BLS ____________________________________________ 133 BMI ____________________________________________ 135 BMS ________________________________ 136 BNE ___________________________________________ 137 BPL_______________________________________________ 138 BRA _________________________________________ 139 BRCLR n ____________________________________ 140

Bifurcacin si la Mscara de Interrupcin es 0 BMC___________________________________ 134 Bifurcacin si la Mscara de Interrupcin es 1

BRN ____________________________________________________ 141 5

BRSET n BSET n BSR CLC CLI CLR CMP COM CPX DEC EOR INC JMP JSR LDA LDX LSL LSR MUL NEG NOP ORA ROL ROR RSP RTI RTS SBC SEC SEI STA STOP STX SUB SWI TAX TST TXA WAIT

Bifurcacin si el Bit n es 1 Pone a 1 el Bit en la Memoria Bifurcacin a Subrutina Pone a Cero el Bit de Acarreo Pone a Cero Complemento Decremento

BRSET _______________________________________ 142 BSET n ________________________________________ 143 CLC _______________________________________ 145 CLI_________________________________ 146

BSR ________________________________________________ 144

Pone a Cero el Bit de Mscara de Interrupcin

CLR ________________________________________________________ 147 COM ______________________________________________________ 149 CPX ________________________________ 150 EOR________________________________ 152 DEC ______________________________________________________ 151

Compara el Acumulador con la Memoria CMP _____________________________________ 148 Compara el Registro de ndice con la Memoria OR-Exclusiva de la Memoria con el Acumulador Incrementa Salto

INC_______________________________________________________________ 153 JMP________________________________________________________________ 154 JSR ________________________________________________________ 155 LDA ____________________________________ 156

Salto a Subrutina

Carga el Acumulador desde la Memoria Desplazamiento Lgico a la Izquierda Desplazamiento Lgico a la Derecha Multiplicacin Sin Signo Negado No Operacin OR-Inclusiva

Carga el Registro de ndice desde la Memoria LDX __________________________________ 157 LSL ________________________________________ 158 LSR______________________________________ 159

MUL ______________________________________________ 160

NEG __________________________________________________________ 161 NOP________________________________________________________ 162 ORA________________________________________________________ 163 ROL ________________________________________ 164 ROR _______________________________________ 165

Rotacin a la Izquierda por Acarreo Rotacin a la Derecha por Acarreo Reset del Puntero de Pila Retorno de la Interrupcin Retorno de Subrutina

RSP ______________________________________________ 166

RTI __________________________________________________ 167 RTS ___________________________________________________ 168 SBC _____________________________________________ 169 SEC _____________________________________________ 170 SEI ___________________________________ 171 STA _________________________________ 172 STOP_________________________________ 173 STX_________________________________ 174

Subtraccin con Acarreo Pone a 1 el bit de Acarreo

Pone a 1 el Bit de Mscara de Interrupcin Guarda el Acumulador en la Memoria Habilita la

IRQ y Para el Oscilador

Guarda el Registro de ndice X en la Memoria Substraccin Interrupcin por Software Prueba para Negativo o Cero

SUB _____________________________________________________ 175 SWI___________________________________________ 176 TAX________________________________ 177 TST ___________________________________________ 178 WAIT ________________________________ 180

Transfiere el Acumulador al Registro de ndice

Transfiere el Registro de ndice al Acumulador TXA _________________________________ 179 Habilita la Interrupcin, Para el Procesador

Tablas de Referencia ____________________________________________________________________ 181 6

ndice ______________________________________________________________________________ 181 Conversin de Hexadecimal a ASCII ____________________________________________________ 181 Conversin de Hexadecimal a Decimal ___________________________________________________ 182 Conversin de Decimal a Hexadecimal ___________________________________________________ 182 Valores Hexadecimales vs. Instrucciones MC68HC05_______________________________________ 183 Glosario ____________________________________________________________________________ 185

7

Qu es un Microcontrolador?ndiceIntroduccin Vista global de un Sistema con microprocesador Entradas de un Sistema con microprocesador Salidas de un Sistema con microprocesador Unidad Central de Proceso (CPU) Reloj Memoria del microprocesador Programa del microprocesador El Microcontrolador Resumen Partes de Cualquier Microprocesador Tipos de Microprocesadores

IntroduccinEste captulo pone el fundamento para una exploracin detallada del funcionamiento interno de un pequeo microcontrolador. Se podr ver que el microcontrolador es una de las formas ms bsicas de un sistema con microprocesador. Aunque son mucho ms pequeos que los microprocesadores personales y los grandes ordenadores, se construyen microcontroladores con los mismos elementos bsicos. En el sentido ms simple, los microprocesadores producen un modelo especfico basado en unas entradas y unas salidas, con las instrucciones en un programa con microprocesador. Como la mayora de microprocesadores, los microcontroladores son simplemente ejecutores de instrucciones de propsito general. La estrella real de un sistema con microprocesador, es un programa de instrucciones que son proporcionadas por un programador. Este programa le dice al microprocesador que realice largas secuencias de acciones muy simples para lograr tareas tiles como las pensadas por el programador.

Vista global de un Sistema con MicroprocesadorLa Figura 1 proporciona una vista global de un sistema con microprocesador. Simplemente cambiando los tipos de dispositivos de entrada y de salida, ste diagrama de bloques podra ser el de un microprocesador personal, un ordenador o un simple un microcontrolador (MCU). Los dispositivos de entrada y de salida (E/S) mostrados en la figura son lo tpicos encontrados en un sistema con microprocesador.

Figura 1. Sistema tpico con Microprocesador

8

Entradas de un Sistema con MicroprocesadorLos dispositivos de entrada proporcionan informacin del mundo exterior al sistema con microprocesador. En un ordenador personal, el dispositivo de entrada ms comn es el teclado, igual que una mquina de escribir. Los sistemas con microprocesadores normalmente usan dispositivos de entrada mucho ms simples como interruptores o pequeos teclados, aunque los dispositivos de entrada ms exticos se encuentran en los sistemas basados en microprocesador. Un ejemplo de un dispositivo de entrada extico para un microprocesador es el sensor de oxgeno en un automvil que mide la eficacia de la combustin tomando muestras en el tubo de escape. La mayora de entradas del microprocesador pueden procesar slo seales de entrada digital, al mismo nivel de voltaje que el de la fuente de alimentacin. El nivel 0 V o tierra se le llama VSS y el nivel positivo de la fuente de alimentacin se le llama VDD y es tpicamente de 5 Vdc. Un nivel aproximado de 0 voltios indica una seal lgica 0 y un voltaje aproximadamente igual al nivel positivo de la fuente de alimentacin indica una seal lgica 1. Por supuesto, el mundo real est lleno de seales analgicas o seales que son de otros niveles de voltaje. Algunos dispositivos de entrada traducen los voltajes de seal de algn otro nivel a los niveles VDD y VSS, necesarios para el microprocesador. Otros dispositivos de entrada convierten las seales analgicas en seales digitales (a valores binarios 1 y 0) para que el microprocesador los pueda entender y manipular. Algunos microprocesadores incluyen circuitos convertidores analgicos/digitales en el mismo circuito integrado. Los transductores se pueden usar para traducir otras seales del mundo real a niveles de seal lgica que un microprocesador puede entender y manipular. Algunos ejemplos que incluyen transductores, como los sensores de temperatura, sensores de presin, detectores de nivel de luz y otros. Con estos transductores, casi cualquier propiedad fsica se puede usar como entrada a un sistema con microprocesador.

Salidas de un Sistema con MicroprocesadorSe usan dispositivos de salida para comunicar la informacin o acciones del sistema con microprocesador al mundo exterior. En un ordenador personal, el dispositivo de salida ms comn es la pantalla CRT(tubo de rayos catdicos). Los sistemas con microprocesador usan a menudo dispositivos de salida mucho ms simples como los LEDs, lmparas, o zumbadores. Circuitos convertidores (a veces construidos en el mismo circuito integrado microprocesador) pueden convertir seales digitales a niveles de voltaje analgicos. Del controlador en microcontrolador viene del hecho de que estos pequeos sistemas con microprocesador normalmente controlan algo en comparacin con un ordenador personal que normalmente procesa informacin. En el caso del ordenador personal, la mayora de las salidas es de informacin (cualquier informacin en una pantalla CRT o en el papel de la impresora). Por otro lado, en un sistema con microprocesador, la mayora de las salidas son seales de nivel lgico digital, que se usan para manejar LEDs o dispositivos elctricos como rels o motores.

Unidad Central de Proceso (CPU)La CPU (Central Processor Unit) es el centro de cada sistema microprocesador. El trabajo de la CPU es ejecutar obedientemente las instrucciones de un programa que le fue proporcionado por un programador. Un programa con microprocesador le dice a la CPU que lea (read) la informacin de las entradas y que la escriba (write) a la memoria de trabajo o que lea la informacin de la memoria de trabajo y la escriba a las salidas. Algunas instrucciones del programa involucran decisiones simples que causan al programa continuar con la siguiente instruccin o saltar a un nuevo lugar del programa. En un captulo posterior, se vern de cerca el juego de instrucciones disponibles para un microcontrolador en particular. En un ordenador personal, hay varios niveles de programas, empezando con el programa interno, que es el control ms bsico del funcionamiento del microprocesador. Otro nivel incluye programas de usuario que se cargan en la memoria del sistema cuando estn a punto de ser usados. Esta estructura es muy compleja y no sera un buen ejemplo para mostrar a un principiante cmo trabaja el microprocesador.

9

En un microcontrolador normalmente, solamente un programa en particular est trabajando para el control de una aplicacin. Por ejemplo, la CPU MC68HC05 slo reconoce 60 instrucciones diferentes, pero stas son representativas del juego de instrucciones de cualquier sistema con microprocesador. Este tipo de sistema con microprocesador es un buen modelo para aprender el fundamento de funcionamiento de un microprocesador, porque es posible saber lo que est pasando exactamente en cada paso de la ejecucin de un programa en la CPU.

Reloj (Clock)Salvo excepciones, los microprocesadores usan un pequeo oscilador del reloj (clock) para activar la CPU, para mover de un paso a la secuencia siguiente. En el captulo de arquitectura de un microprocesador, se puede ver que incluso las instrucciones simples de un microcontrolador estn compuestas de una serie de pasos an ms bsicos. Cada uno de estos pasos diminutos en el funcionamiento del microprocesador toma un ciclo del reloj de la CPU.

Memoria del MicroprocesadorSe usan varios tipos de memoria para los diferentes propsitos en un sistema con microprocesador. Los tipos principales de memoria encontrados en un microcontrolador son: Memorias para almacenar el Programa: ROM (Read Only Memory): memoria slo de lectura, este tipo de memoria se programa en fabrica y se llama Mscara. EPROM (Erasable Programmable Read Only Memory): memoria slo de lectura, programable elctricamente y se borra por luz ultravioleta a travs de una ventana en la parte superior del dispositivo. OTP (One Time Programmable): memoria slo de lectura, programable elctricamente una sola vez. FLASH: memoria programable y borrable elctricamente, por bloques. Estos tipos se usan principalmente para almacenar los programas y los datos permanentes que deben permanecer inalterados incluso cuando no hay ninguna alimentacin aplicada al microcontrolador. Memoria para almacenar Datos: RAM (Random Access read/write Memory): memoria de acceso a lectura o escritura aleatorio, se usa para el almacenamiento temporal de datos y el clculo intermedio de los resultados durante las operaciones. Este tipo de memoria pierde los datos cuando se queda sin alimentacin. EEPROM (Electrically Erasable Programmable Read Only Memory): memoria slo de lectura, programable y borrable elctricamente. La unidad ms pequea de una memoria, es de un solo bit, que puede guardar uno valor lgico 0 o 1. Estos bits se agrupan en conjuntos de ocho bits para hacer uno byte. Los microprocesadores ms grandes utilizan grupos de 16 o 32 bits, llamados palabras o word. El tamao de una palabra (word) puede ser diferente para cada microprocesador, pero un byte siempre es de ocho bits. Los ordenadores personales trabajan con programas muy grandes y con grandes cantidades de datos, para ello usan formas especiales de dispositivos de almacenamiento, llamados almacenamiento en masa, como los discos blandos, los discos duros, y los discos compactos. No es raro encontrar varios millones de bytes de memoria RAM en un ordenador personal, con discos duros con varios gigabytes o discos compactos muy similares a los usados para las grabaciones de msica con una capacidad de 640 millones de bytes de memoria de slo lectura. En comparacin, los sistemas con microcontrolador tpico tienen una memoria total entre 1,000 y 64,000 bytes.

Programa de un MicroprocesadorLa Figura 1 muestra el programa como una nube, porque se origina en la imaginacin del ingeniero o programador del microprocesador. Esto es comparable a un ingeniero elctrico que piensa en un nuevo circuito o un ingeniero mecnico que deduce un nuevo ensamblaje. Los componentes de un programa son las instrucciones del juego de instrucciones de la CPU. As como el diseador del circuito puede construir un circuito sumador con simple puertas AND, OR y NOT, un programador puede escribir un programa para sumar nmeros con simples instrucciones.

10

Los programas se guardan en la memoria de un microprocesador donde pueden ser ejecutados de modo secuencial por la CPU. En el captulo de programacin, se aprender a escribir programas y prepararlos para ser cargados en la memoria de un microprocesador.

El MicrocontroladorHasta ahora se han visto varias partes de un sistema con microprocesador y ya se est preparado para hablar sobre los microcontroladores. En la mitad superior de la Figura 2 se muestra un sistema con microprocesador genrico, con una parte adjunta de contorno punteado. Esta parte, es un microcontrolador y la mitad inferior de la figura es un diagrama de bloques que muestra su estructura interior con ms detalle. El cristal no se contiene dentro del microcontrolador, pero es una parte necesaria del circuito oscilador. En algunos casos, se puede substituir el cristal por un resonador cermico que es ms econmico o un an menos caro con un conjunto RC (resistencia-condensador). Un microcontrolador puede definirse como un sistema microprocesador completo, que incluye la CPU, la memoria, un oscilador del reloj, las E/S y otros perifricos en un solo circuito integrado. Cuando algunos de estos elementos como las E/S o la memoria no estn incluidos, al circuito integrado se le llama microprocesador. La CPU de un ordenador personal es un microprocesador.

Figura 2. Vista extendida de un Microcontrolador

11

ResumenUn microcontrolador es un sistema microprocesador completo, incluyendo la CPU, la memoria, el oscilador del reloj y las E/S en un solo circuito integrado. Partes de cualquier microprocesador Una unidad central de proceso o CPU Un Reloj de secuencia de la CPU Memorias para las instrucciones y los datos Entradas para poner la informacin al sistema Salidas para sacar la informacin del sistema Programa para hacer algo til con el microprocesador Tipos de Microprocesadores Aunque todos los microprocesadores comparten los mismos elementos bsicos e ideas, hay diferentes tipos de microprocesadores para diferentes propsitos. Para los grandes ordenadores se usan microprocesadores muy grandes, que se usan para procesar grandes informaciones. Para los ordenadores personales se usan microprocesadores cada vez ms grandes, para hacer desde las tareas ms pequeas como el procesador de texto, hasta el diseo asistido. Para el control de muchos aparatos se usan los microcontroladores de un slo circuito, que pueden ser desde muy pequeos en prestaciones (por ejemplo, el ratn de un ordenador personal) hasta controles industriales bastante complejos, debido a la alta integracin de los mismos.

12

Nmeros y Cdigos de un microprocesadorndiceIntroduccin Nmeros Binarios y Hexadecimales Cdigos ASCII Cdigos de trabajo del microprocesador Cdigos Mnemotcnicos de las instrucciones y Ensambladores Nmeros Octales Binario Codificado en Decimal Resumen

IntroduccinEste captulo discute los nmeros binarios, hexadecimales, octales y BCD que normalmente son usados por los microprocesadores. Los microprocesadores trabajan mejor con la informacin en una forma diferente que lo usan las personas, para resolver problemas. Los humanos tpicamente trabajamos con el sistema de numeracin en base 10 (decimal), probablemente porque tenemos 10 dedos. Los microprocesadores trabajan con el sistema de numeracin en base 2 (binario), porque esto permite representar toda la informacin por dos dgitos, que slo pueden ser 0 o 1. A su vez, un 1 o un 0 puede ser representado por la presencia o la ausencia de voltaje lgico en una lnea de seal o en los estados cerrado (on) o abierto (off) de un simple interruptor. Los microprocesadores tambin usan cdigos especiales para representar la informacin alfabtica y las instrucciones del microprocesador. Entendiendo estos cdigos ayudar a entender cmo los ordenadores pueden hacer tantas cosas, con las cadenas de dgitos que slo pueden ser 1 o 0.

Nmeros Binarios y HexadecimalesLos nmeros decimales (base 10), el peso de cada dgito es 10 veces ms grande que el dgito inmediato, el de su derecha. El dgito de ms a la derecha de un nmero entero decimal es el de la unidad, el dgito de la izquierda es el dgito de las decenas, y as sucesivamente. Los nmeros binarios (base 2), el peso de cada dgito es 2 veces ms grande que el dgito inmediato de su derecha. El dgito de ms a la derecha de un nmero entero binario es el de la unidad, el siguiente dgito a la izquierda es el dgito cuatro, el siguiente dgito es el ocho y as sucesivamente. Aunque los microprocesadores funcionan bastante cmodos con los nmeros binarios de 8, 16, o incluso 32 dgitos binarios, los humanos lo encuentran inoportuno trabajar con tantos dgitos en cada momento. El sistema de numeracin en base 16 (hexadecimal) ofrece un compromiso prctico. Un dgito hexadecimal se puede representar exactamente con cuatro dgitos binarios, as que un nmero binario de 8 bits puede ser expresado por dos dgitos en hexadecimal. La correspondencia entre un dgito hexadecimal y los cuatro dgitos binarios que representan, son bastante simples para los humanos. Los que trabajan con microprocesadores aprenden a traducir mentalmente entre los dos sistemas muy fcilmente. Los nmeros en hexadecimal (base 16), el peso de cada dgito es 16 veces ms grande que el dgito inmediato de su derecha. El dgito de ms a la derecha de un nmero entero hexadecimal es el de la unidad, el siguiente dgito a la izquierda es el dgito 16, y as sucesivamente. La Tabla 1 muestra la relacin entre los valores representados en decimal, binario y hexadecimal. Estos tres diferentes sistemas de numeracin son simplemente maneras diferentes de representar las mismas cantidades fsicas. Las letras desde la A hasta la F se usan para representar los valores hexadecimales correspondientes del 10 hasta el 15, porque cada uno de los dgitos hexadecimales puede representar 16 cantidades diferentes; considerando que, los nmeros de normalmente utilizados slo incluyen 10 nicos smbolos (del 0 al 9), se tuvieron que utilizar otros smbolos de un solo dgito para representar los valores hexadecimales, del 10 hasta 15, con las letras (A - F).

13

Decimal (base 10) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 .. 100 101 .. 255 1024 1025 .. 65.535

Binario (base 2) 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0001 0000 0001 0001 .. 0110 0100 0110 0101 .. 1111 1111 0100 0000 0000 0100 0000 0001 .. 1111 1111 1111 1111

Hexadecimal (base 16) 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 .. 64 65 .. FF 400 401 .. FFFF

Tabla 1. Equivalencias entre Decimal, Binario y Hexadecimal Para evitar cualquier confusin sobre si un nmero es hexadecimal o decimal, se pone el smbolo $ antes del nmero hexadecimal. Por ejemplo, 64 en decimal significa sesenta y cuatro y $64 en hexadecimal significa seis-cuatro, qu es equivalente a 100 en decimal. Algunos fabricantes de microprocesadores siguen a los valores hexadecimales con una H (tal como 64H). El sistema de numeracin Hexadecimal es una buena manera para expresar y discutir el proceso de la informacin numrica para los microprocesadores, porque mentalmente es fcil para las personas convertir entre los dgitos hexadecimales y los 4-bits binarios equivalentes. La anotacin hexadecimal es mucho ms compacta que en binario.

Cdigos ASCIILos microprocesadores deben manejar muchos tipos de informacin diferente de los nmeros. El texto (los caracteres alfanumricos) y las instrucciones se deben poner en un cdigo, de semejante manera, para que el microprocesador pueda entender esta informacin. El cdigo ms comn para la informacin de tipo texto, es el cdigo estndar para el intercambio de informacin americano (o ASCII). El cdigo ASCII establece una correlacin ampliamente aceptada entre los caracteres alfanumricos y los valores binarios especficos. Usando el cdigo ASCII $41, corresponde a la letra mayscula A, $20 corresponde a un carcter de espacio, etc. El cdigo ASCII traduce caracteres a cdigos binarios de 7-bits, pero en la prctica la informacin de los caracteres se lleva normalmente con 8-bits, poniendo el bits ms significativo igual a 0 (el de ms a la izquierda). Este cdigo ASCII permite, que equipos fabricados por varios fabricantes, puedan comunicarse porque todos usan este mismo cdigo. La Tabla 2 muestra la relacin entre los caracteres ASCII y el valor hexadecimal.

14

Hex $00 $01 $02 $03 $04 $05 $06 $07 $08 $09 $0A $0B $0C $0D $0E $0F $10 $11 $12 $13 $14 $15

ASCII NUL SOH STX ETX EOT ENQ ACK BEL (beep) BS (back sp) HT (tab) LF (linefeed) VT FF CR (return) SO SI DEL DC1 DC2 DC3 DC4 NAK

Hex $16 $17 $18 $19 $1A $1B $1C $1D $1E $1F $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $2A $2B

ASCII SYN ETB CAN EM SUB ESC (escape) FS GS RS US SP (space) ! # $ % & (apost.) ( ) * +

Hex $2C $2D $2E $2F $30 $31 $32 $33 $34 $35 $36 $37 $38 $39 $3 $3B $3C $3D $3E $3F $40 $41

ASCII , (coma) - (dash) . (period) / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A

Hex $42 $43 $44 $45 $46 $47 $48 $49 $4A $4B $4C $4D $4E $4F $50 $51 $52 $53 $54 $55 $56 $57

ASCII B C D E F G H I J K L M N O P Q R S T U V W

Hex $58 $59 $5A $5B $5C $5D $5E $5F $60 $61 $62 $63 $64 $65 $66 $67 $68 $69 $6A $6B $6C $6D

ASCII X Y Z [ \ ] ^ _ (under) ` a b c d e f g h i j k l m

Hex $6E $6F $70 $71 $72 $73 $74 $75 $76 $77 $78 $79 $7A $7B $7C $7D $7E $7F

ASCII N o p q r s t u v w x y z { } DEL (delete)

Tabla 2. Conversin de Hexadecimal a ASCII

Cdigo de trabajo del microprocesadorLos microprocesadores utilizan otro cdigo para dar las instrucciones a la CPU, llamado cdigo de trabajo o opcode. Cada opcode instruye a la CPU para ejecutar una sucesin muy especfica de pasos, que juntos logran un funcionamiento pretendido. Los microprocesadores de diferentes fabricantes usan diferentes juegos de opcodes porque estos opcodes son internamente alambrados en la lgica de la CPU. El juego de instrucciones para una CPU especfica, es el conjunto de todos los funcionamientos que la CPU sabe realizar. Los opcodes son una representacin del conjunto de instrucciones y los cdigo mnemotcnicos son otros. Aunque los opcodes difieren de un microprocesador a otro, todos los microprocesadores realizan los mismos tipos de tareas bsicas de maneras similares. Por ejemplo, la CPU MC68HC05 puede entender 62 instrucciones bsicas. Algunas de estas instrucciones bsicas tienen algunas ligeras variaciones, cada una requiere un opcode por separado. El juego de instrucciones del MC68HC05 est representado a travs de 210 nicas instrucciones opcodes. En otro captulo se muestra cmo la CPU ejecuta realmente las instrucciones, pero primero se necesitan entender unos conceptos ms bsicos.

Cdigos Mnemotcnicos de las Instrucciones y EnsambladoresUn opcode como $4C es entendido por la CPU, pero no significa mucho a un humano. Para resolver este problema, se usa un sistema de cdigo mnemotcnico equivalente a la instruccin. El opcode $4C corresponde al cdigo mnemotcnico INCA que significa incrementar el acumulador. Aunque en este libro se muestra la informacin que correlaciona las instrucciones mnemotcnicas y los opcodes que ellos representan, esta informacin raramente la usa un programador, porque el proceso de traduccin se maneja automticamente por un programa para el microprocesador llamado ensamblador (assembler). Un ensamblador es un programa que convierte un programa escrito en cdigo mnemotcnico, en una lista de cdigo mquina (opcodes y otra informacin) que puede ser usado por una CPU.

15

Un ingeniero primero desarrolla un conjunto de instrucciones para el microprocesador en forma de cdigo mnemotcnico, despus usa un ensamblador para traducir estas instrucciones en opcodes para que la CPU lo pueda entender. En otros captulos se vern las instrucciones, como escribir un programa y el programa ensamblador. Sin embargo, ahora solo hay que entender que las personas preparan instrucciones para una microprocesador en una forma de cdigo mnemotcnico, pero que el microprocesador entiende slo opcodes; as que, se requiere un paso, la traduccin de cambiar los mnemnicos a opcodes, que es la funcin del ensamblador.

Nmeros OctalesAntes de dejar los sistemas de nmeros y cdigos, se ven los dos cdigos adicionales de los que se puede haber odo hablar. El sistema Octal (base 8) se us para algn trabajo del microprocesador, pero raramente se usa hoy en da. La anotacin Octal usa los nmeros del 0 al 7, representados en tres dgitos binarios, lo mismo que en hexadecimal se representan en cuatro dgitos binarios. El sistema octal tiene la ventaja de usar los mismos smbolos de los nmeros decimales, a diferencia de los smbolos hexadecimales, que aaden de la A a la F. Los dos motivos que causaron el abandono del sistema octal en favor del hexadecimal fueron: En primer lugar, la mayora de microprocesadores usan palabras de 4, 8, 16, o 32 bits; estas palabras no se pueden agrupar en grupos de tres bits. Algunos de los primeros microprocesadores usaron palabras de 12-bits agrupados en tres bits cada uno. En segundo lugar el sistema octal no es tan compacto como el hexadecimal; por ejemplo, el valor en ASCII para la letra mayscula A es 10000012 (en binario), 4116 (en hexadecimal) y 1018 (en octal). Cuando un programador est hablando sobre el valor ASCII de la letra A, es ms fcil decir cuatro y uno que decir uno cero uno. La Tabla 3 muestra la equivalencia entre el sistema octal y el binario. La columna binario directo muestra la equivalencia dgito por dgito, con los dgitos de la columna octal en grupos de tres bits binarios. El bit de ms a la izquierda (el noveno) se muestra escrito en negrita. Este bit se desecha para hacer los deseados 8bits. La columna binario 8-bits tiene la misma informacin binaria que la columna binario directo, exceptuando que los bits se reagrupan en cuatro bits. Cada grupo de cuatro bits equivale a un dgito hexadecimal. Octal 000 001 002 003 004 005 006 007 010 011 012 013 014 015 016 017 101 125 252 377 Binario directo 000 000 000 000 000 001 000 000 010 000 000 011 000 000 100 000 000 101 000 000 110 000 000 111 000 001 000 000 001 001 000 001 010 000 001 011 000 001 100 000 001 101 000 001 110 000 001 111 001 000 001 001 010 101 010 101 010 011 111 111 Binario 8 bits 0000 0000 0000 0001 0000 0010 0000 0011 0000 0100 0000 0101 0000 0110 0000 0111 0000 1000 0000 1001 0000 1010 0000 1011 0000 1100 0000 1101 0000 1110 0000 1111 0100 0001 0101 0101 1010 1010 1111 1111 Hexadecimal $00 $01 $02 $03 $04 $05 $06 $07 $08 $09 $0A $0B $0C $0D $0E $0F $41 $55 $AA $FF

Tabla 3. Equivalencias entre Octal, Binario, y Hexadecimal Al traducir mentalmente los valores de octal a binario, el valor octal se representa con tres dgitos. Con cada dgito octal representado con grupos de tres bits binarios, hay un bit de ms, (3 dgitos x 3 bits = 9 bits). Entonces es fcil olvidarse de quitar el bit de ms y terminar con un bit extra (el bit noveno). Al traducir de hexadecimal a binario, es ms fcil porque cada dgito hexadecimal equivale exactamente a cuatro bits binarios. Dos dgitos hexadecimales exactamente iguales de ocho bits binarios en un byte.

16

BCD (Binario Codificado en Decimal)Binario codificado en decimal (BCD) es una anotacin hbrida usada para expresar valores decimales en forma binaria, Tabla 4. BCD usa cuatro bits binarios para representar cada dgito decimal. Cuatro dgitos binarios pueden expresar 16 diferentes cantidades fsicas, pero en este caso habr seis combinaciones con valor de bit que son considerados invlidos (especficamente, los valores hexadecimales valor A hasta la F). Los valores BCD se muestran tambin con el signo $ porque realmente son nmeros hexadecimales que representan cantidades decimales. Cuando el microprocesador hace que una operacin sume en BCD, realiza una suma binaria y entonces ajusta el resultado en la forma BCD. Por ejemplo, la suma BCD siguiente: 910 + 110 = 1010 El microprocesador suma 0000 10012 + 0000 00012 = 0000 10102 Pero 10102 es equivalente a A16 que no es un valor BCD vlido. Cuando el microprocesador termina el clculo, se realiza un chequeo para ver si el resultado todava es un valor BCD vlido. Si hubiera cualquier acarreo de un dgito BCD a otro o si hubiera cualquier cdigo invlido, se realizara una sucesin de pasos para corregir el resultado a la forma BCD apropiada. El binario 0000 10102 se corrige a 0001 00002 (10 en BCD) en este ejemplo. Decimal 0 1 2 3 4 5 6 7 8 9 BCD $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 Binario 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1110 1111 0001 0000 1001 1001 Hexadecimal $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $A $B $C $E $F $10 $99

Combinaciones BCD invlidas 10 99 $10 $99

Tabla 4. Equivalencia entre Decimal, BCD, Binario y hexadecimal En la mayora de casos, no es ineficaz el uso de la anotacin BCD en clculos con microprocesador. Es mejor cambiar de decimal a binario como informacin entera, el microprocesador hace todos los clculos en binario y cambia el resultado binario a BCD o a decimal, como se necesite para mostrarlo. Esto es cierto porque: Primero, no todos los microcontroladores son capaces de hacer clculos en BCD, porque necesitan un indicador de acarreo dgito a dgito que no est presente en todos los microprocesadores (aunque las MCU de Motorola tienen este indicador). Segundo, obliga al microprocesador emular la conducta humana que es menos eficaz que permitir al microprocesador trabajar en su sistema binario nativo.

17

ResumenLos microprocesadores tienen dos niveles lgicos (0 y 1) para trabajar con el sistema de numeracin binario. Probablemente porque las humanos tienen 10 dedos, se trabaja con el sistema decimal (base 10). Los nmeros hexadecimales usan 16 smbolos del 0 al 9 y de la A a la F. Cada dgito hexadecimal representa un grupo de cuatro dgitos binarios. El smbolo $ primero se usa como un valor hexadecimal y el smbolo H tambin como valor hexadecimal para distinguirlo de los nmeros decimales. ASCII es un cdigo ampliamente aceptado que permite representar la informacin alfanumrica en valores binarios. Cada instruccin o variacin de una instruccin tiene un nico opcode (valor binario) que la CPU reconoce como una peticin para realizar una instruccin especfica. Las CPUs de diferentes fabricantes tienen juegos diferentes de opcodes. Los programadores especifican las instrucciones con un cdigo mnemotcnico, como INCA. Un programa llamado ensamblador, traduce el cdigo de instrucciones mnemotcnicas en opcodes para que la CPU las pueda entender.

18

Elementos bsicos de los circuitos LgicosndiceIntroduccin Niveles lgicos Transistores CMOS Puertas simples Inversor NAND NOR Puertas de Transmisin, Buffers y Flip Flops Puertas de Transmisin Buffer de tres estados Half Flip Flop (HFF) Resumen

IntroduccinLos microprocesadores se componen de elementos digitales lgicos relativamente simples llamados Puertas, que son pequeos circuitos que pueden conectarse de varias maneras para manejar seales de niveles lgicos. Aunque esto libro no piensa proporcionar informacin detallada sobre el diseo con lgica, un poco de conocimiento de los elementos lgicos ms bsicos ayudarn a entender el funcionamiento interno de los microcontroladores. En este captulo se empieza con una vista sobre los requisitos de los niveles lgicos de voltaje. Tambin se muestran los transistores y las interconexiones de un microcontrolador CMOS tpico. Se explica un simple inversor, una puerta NAND y NOR. Finalmente, se describe una transmisin en una puerta, un buffer de tres estados y un Flip Flop. Virtualmente cualquier parte de un microcontrolador se puede explicar con estos pocos elementos de lgica simple.

Niveles lgicosAnteriormente, en la discusin de lo que es un microcontrolador, se explic que un nivel aproximado de 0 voltios indica que es una seal lgica 0 y que un voltaje positivo aproximadamente igual a la fuente de alimentacin indica que es una seal lgica 1. Para ser ms preciso, hay un nivel de voltaje por debajo del cual el fabricante del microcontrolador garantiza que una seal se reconocer como vlido, lgica 0. Igualmente, hay un nivel de voltaje por encima del cual el fabricante del microcontrolador garantiza que una seal se reconocer como vlido, lgica 1. Al disear un sistema con microcontrolador, se asegurar que todas las seales estn conforme a estos lmites especificados, incluso bajo las peores condiciones. La mayora de microcontroladores modernos usan una tecnologa llamada CMOS (Semiconductor del Metal-xido Complementario). Esto significa que los circuitos incluyen los dos tipos de transistores el N y el P. Los transistores se explicarn en mayor detalle despus de este captulo. En un circuito tpico CMOS, una entrada lgica 0 puede especificarse entre 0.0 voltios y 0.3 veces VDD. Si VDD es 5.0 voltios, esto traslada el rango de 0.0 a 1.5 voltios. Una entrada lgica 1 puede especificarse entre 0.7 veces la VDD hasta VDD. Si VDD es 5.0 voltios, esto traslada el rango de 3.5 a 5.0 voltios.

Transistores CMOSLa Figura 3 muestra los smbolos para un transistor CMOS tipo N y P. Las caractersticas exactas de estos transistores se puede determinar por su esquema fsico, tamao y forma. El propsito de este libro, es tratarlos como dispositivos conmutadores simples. El transistor tipo N en la Figura 3 tiene su terminal fuente [3] conectado a tierra. Para que un transistor tipo N conduzca, el voltaje de la puerta [2] debe ser ms alto que el voltaje de la fuente [3], por una cantidad 19

conocida como umbral. Se dice que este transistor tipo N conduce (entre los terminales [1] y [3]), cuando hay un voltaje lgico 1 en su puerta [2]. Cuando la puerta est en lgica 0, se dice que este transistor tipo N no conduce y acta como un interruptor abierto entre los terminales [1] y [3].

Figura 3. Transistores CMOS N y P El transistor tipo P en la Figura 3 tiene su terminal fuente [4] conectado a VDD. Para que un transistor tipo P conduzca, su voltaje de puerta [5] debe ser ms bajo que el voltaje de la fuente [4], por una cantidad conocida como umbral. El transistor tipo P se diferencia del tipo N con un pequeo circulo en la puerta [5]. Cuando hay un voltaje lgico 0 en la puerta [5] este transistor tipo P se dice que conduce y acta como un interruptor cerrado entre los terminales [4] y [6]. Cuando la puerta est en voltaje lgico 1, este transistor tipo P no conduce y acta como un interruptor abierto entre los terminales [4] y [6]. Es relativamente fcil integrar miles transistores del tipo P y N en un microcontrolador y conectarlos de varias maneras para realizar operaciones lgicas complejas. En los siguiente prrafos, se ven algunos de los circuitos lgicos ms bsicos que se encuentran en un microcontrolador.

Puertas SimplesLos tres tipos de puertas lgicas bsicas encontradas en un microcontrolador son el Inversor, la puerta NAND y la puerta NOR. Un diseador de lgica usa varias combinaciones de estas puertas bsicas para formar circuitos lgicos ms complejos, como los que suman dos nmeros binarios. Aunque que no se piensa en el libro ensear tcnicas de diseo con lgica, se describen estos circuitos para dar un mejor entendimiento de cmo trabaja un microcontrolador con informacin digital. Inversor La Figura 4 muestra el smbolo lgico de un Inversor, su Tabla de verdad y un circuito CMOS equivalente. Cuando un nivel de seal lgico (0 o 1) se presenta a la entrada [1] de un inversor, el nivel lgico opuesto aparece en su salida [2]. Entrada [1] 0 1 Salida [2] 1 0

Figura 4. Inversor CMOS Viendo el circuito CMOS equivalente a la derecha de la Figura 4 y la Tabla 5, se puede explicar lo siguiente: Cuando la entrada [1] est a un nivel lgico 0, el transistor tipo N [4] no conduce y el transistor tipo P [3] conduce, la salida [2] que los une, est a VDD (lgica 1). Cuando la entrada [1] est en nivel lgico 1, el transistor tipo P [3] no conduce y el transistor tipo N [4] conduce, conectando la salida [2] a tierra (lgica 0). Entrada [1] 0 1 Transistor [3] [4] On Off Off On Salida [2] Conectado a VDD (1) Conectado a tierra (0)

Tabla 5. Funcionamiento de una puerta Inversora

20

Puerta NAND La Figura 5 muestra el smbolo de una puerta lgica NAND, su Tabla de verdad y un circuito CMOS equivalente. Cuando ambas entradas [1] y [2] de la puerta NAND estn en niveles lgicos 1, la salida [3] estar a lgica 0. Si cualquiera de las entradas de la puerta NAND est en lgica 0, la salida estar a 1. Entrada [1] [2] 0 0 0 1 1 0 1 1 Salida [3] 1 1 1 0

Figura 5. Puerta NAND CMOS Viendo el circuito CMOS equivalente a la derecha de la Figura 5 y la Tabla 6, se puede explicar lo siguiente: Cuando ambas entradas [1] y [2] estn en lgica 1, ninguno de los dos de los transistores tipo P [6] y [4] no conducen y los transistores tipo N [5] y [7] conducen, para que la salida [3] est conectada a tierra (lgica 0). Cuando la entrada [1] est a lgica 0, el transistor tipo N [5] no conduce y desconecta la salida [3] de tierra, sin tener en cuenta la condicin del transistor tipo N [7]. Tambin, cuando la entrada [1] est a un nivel lgico 0, el transistor tipo P [4] conduce, conectando la salida [3] a VDD (lgica 1). Igualmente, cuando la entrada [2] est en nivel lgico 0, el transistor tipo N [7] no conduce, desconectando la salida [3] de tierra, sin tener en cuenta la condicin del transistor tipo N [5]. Tambin, cuando la entrada [2] est a un nivel lgico 0, el transistor tipo P [6] conduce, conectando la salida [3] a VDD (lgica 1). Entrada [1] [2] 0 0 0 1 1 0 1 1 Transistor Salida [3] [4] [5] [7] On Off Off VDD (1) On Off On VDD (1) Off On Off VDD (1) Off On On GND (0)

[6] On Off On Off

Tabla 6. Funcionamiento de la puerta NAND Aunque sta es una simple funcin lgica, muestra cmo los transistores CMOS pueden interconectarse para realizar la lgica Booleana con simples seales de nivel lgico. La lgica de Boole (llamada as, por el matemtico irlands que la formul) tiene 2 valores (0 y 1) basados en el sistema algebraico con formas matemticas y relaciones. Puerta NOR La Figura 6 muestra el smbolo lgico, la Tabla de verdad y un circuito CMOS equivalente. Cuando ninguna entrada [1] y [2] de una puerta NOR est a un nivel lgico 1, la salida [3] estar a un nivel lgico 1. Si cualquier entrada de la puerta NOR est a un nivel lgico 1, la salida estar a lgica 0. Entrada [1] [2] 0 0 0 1 1 0 1 1 Salida [3] 1 0 0 0

Figura 6. Puerta NOR CMOS Viendo el circuito CMOS equivalente a la derecha de la Figura 6 y la Tabla 7, se puede explicar lo siguiente: Cuando ambas entradas [1] y [2] estn a un nivel lgico 0, los transistores tipo N [5] y [7] no conducen y los transistores tipo P [4] y [6] conducen y la salida [3] queda conectada a VDD (lgica 1). Cuando la 21

entrada [1] est a un nivel lgico 1, el transistor tipo P [4] no conduce, desconectando la salida [3] de VDD sin tener en cuenta la condicin del transistor tipo P [6]. Tambin, cuando la entrada [1] est a un nivel lgico 1, el transistor tipo N [5] conduce, conectando la salida [3] a tierra (lgica 0). Igualmente, cuando la entrada [2] est a un nivel lgico 1, el transistor tipo P [6] no conduce, desconectando la salida [3] de VDD sin tener en cuenta la condicin del transistor tipo P [4]. Tambin, cuando la entrada [2] est a lgico 1, el transistor tipo N [7] conduce, conectando la salida [3] a tierra (lgica 0). Entrada [1] [2] 0 0 0 1 1 0 1 1 Transistor Salida [3] [5] [6] [7] Off On Off VDD (1) Off Off On GND (0) On On Off GND (0) On Off On GND (0)

[4] On On Off Off

Tabla 7. Tabla de Verdad de la puerta NOR

Puertas de Transmisin, Buffers y Flip-FlopsLos microcontroladores incluyen los tipos ms complejos de puertas lgicas y los elementos funcionales mostrados en la seccin anterior. En esta seccin, se estudian algunas de estas estructuras ms complejas, las dos estructuras primeras la puerta de transmisin y el Buffer de tres estados introduciendo la idea de seales de alta impedancia controladas lgicamente, la tercera Medio Flip-Flop introduce una estructura, que puede mantener una seal en la salida, an despus de que la seal de entrada haya cambiado. Los Flip-Flops son vitales para los microcontroladores, para realizar contadores y tareas secuenciales. Puerta de transmisin La Figura 7 muestra el smbolo lgico, la Tabla de verdad y un circuito CMOS equivalente. Cuando la entrada de control [3] est a un nivel lgico 1, se dice que la puerta de transmisin conduce y cualquier nivel lgico presente en la entrada [1] tambin estar en la salida [2]. Cuando la entrada de control [3] est a un nivel lgico 0, se dice que la puerta de transmisin no conduce y el nodo de salida [2] estar desconectado de todo (alta impedancia o Hi-Z). Control [3] 0 0 1 1 Entrada [1] 0 1 0 1 Salida [2] Hi-Z Hi-Z 0 1

Figura 7. Puerta de Transmisin CMOS Viendo el circuito CMOS equivalente a la derecha de la Figura 6 y la Tabla 7, se puede explicar lo siguiente: Cuando la entrada de control [3] est a un nivel lgico 0, la puerta del transistor tipo N [6] estar a lgico 0 y la puerta del transistor tipo P [5] estar a un nivel lgico 1 (VDD). No hay voltaje entre tierra y VDD, que haran conducir el transistor tipo P [5] o el transistor tipo N [6], as que no hay ninguna conduccin entre la entrada [1] y la salida [2]. Desde el nodo de salida [2] est eficazmente aislado de todo, entonces se dice que est en alta impedancia (Hi-Z). Cuando la entrada de control [3] est a un nivel lgico 1, se dice que la puerta de transmisin conduce y entonces tiene una conexin directa de la entrada [1] a la salida [2]. Si las dos entradas de control [3] y [1] estn a un nivel lgico 1, el transistor tipo P [5] conducir y conectar la entrada [1] y salida [2]. Aunque la puerta de transistor tipo N [6] est en nivel lgico 1, la fuente [1] tambin est al mismo voltaje, entonces el transistor [6] no conducir. Si la entrada de control [3] est a un nivel lgico 1 y la entrada [1] est a un nivel lgico 0, el transistor tipo N [6] conducir y conectar la entrada [1] y la salida [2]. Aunque la puerta del transistor tipo P [5] est a un nivel lgico 0, la fuente [1] tambin estar al mismo voltaje, entonces el transistor [5] no conducir. La puerta de transmisin mostrada en la Figura 7 a veces se llama interruptor analgico porque es capaz de dejar pasar seales intermedias entre los niveles lgicos legales.

22

Las puertas de transmisin pueden formar multiplexores de datos, como el mostrado en la Figura 8. Cuando la seal seleccionada [3] est a un nivel lgico 1, la puerta de transmisin [6] conducir y la puerta de transmisin [7] (debido al inversor [5]) no conducir. As que la salida [4] no tendr el mismo nivel lgico que la entrada [1] y las seales 1 de la entrada [2] no afectarn a la salida [4]. Cuando la seal seleccionada [3] est a un nivel lgico 0, la puerta de transmisin [7] conducir y la puerta de transmisin [6] no conducir. As que la salida [4] no tendr el mismo nivel lgico que la entrada [2] y las seales 1 en la entrada [1] no afectarn a la salida. Seleccin [3] 0 0 0 0 1 1 1 1 Entrada [1] 0 0 1 1 0 0 1 1 [2] 0 1 0 1 0 1 0 1 Salida [4] 0 1 0 1 0 0 1 1

Figura 8. Multiplexor de Datos 2:1 Seleccin 0 0 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 2 0 1 0 1 0 1 0 1 6 Off Off Off Off On On On On 7 On On On On Off Off Off Off 4 0 1 0 1 0 0 1 1

Tabla 8. Funcionamiento del Multiplexor de Datos Buffer de tres estados La Figura 9 muestra el smbolo lgico, un circuito CMOS equivalente y la Tabla de verdad para un Buffer de tres estados. Cuando la entrada de control [3] est a un nivel lgico 0, se dice que el Buffer no conduce y la salida [2] est en alta impedancia que asla el nodo. Cuando la entrada de control [3] est a un nivel lgico 1, se dice que el Buffer conduce y cualquier nivel lgico que est presente en la entrada [1] tambin estar en la salida [2]. Control [3] 0 0 1 1 Entrada [1] 0 1 0 1 Salida [2] Hi-Z Hi-Z 0 1

Figura 9. Buffer de Tres-estados Viendo el circuito CMOS equivalente a la derecha de la Figura 9 y la Tabla 9, se puede explicar lo siguiente: Cuando la entrada de control [3] est a un nivel lgico 0, la puerta del transistor tipo N [6] estar a un nivel lgico 0 y la puerta del transistor tipo P [5] a travs del inversor [9] estar a un nivel lgico 1 (VDD), entonces ambos transistores [5] y [6] no conducirn. El nodo de salida [2] quedar aislado del todo, se dice que est en alta impedancia. Cuando la entrada de control [3] est a un nivel lgico 1, la puerta del transistor tipo N [6] estar a un nivel lgico 1 y la puerta del transistor tipo P [5] estar a un nivel lgico 0. Si la entrada del Buffer [1] est a un 23

nivel lgico 0, la salida del inversor [4] estar a un nivel lgico 1 y har conducir el transistor tipo N [8] y dejar de conducir el transistor tipo P [7]. Con la entrada de control [3] a un nivel lgico 1 y la entrada [1] a un nivel lgico 0, la salida del Buffer [2] estar conectada a tierra a travs de los transistores tipo N [6] y [8] qu estarn en conduccin. Cuando la entrada de control [3] est a un nivel lgico 1, la puerta del transistor tipo N [6] estar a un nivel lgico 1 y la puerta del transistor tipo P [5] estar a un nivel lgico 0. Si la entrada del Buffer [1] est a un nivel lgico 1, la salida del inversor [4] estar a un nivel lgico 0, haciendo conducir el transistor tipo P [7] y dejar de conducir el transistor tipo N [8]. Con la entrada de control [3] y la entrada [1], ambas a un nivel lgico 1, la salida del Buffer [2] se conectar a VDD a travs de los transistores tipo P [7] y [5], que estarn en conduccin. Control Entrada Nodo [3] [1] [4] [9] 0 0 1 1 0 1 0 1 1 0 1 0 1 1 0 0 Salida [2] Hi-Z Hi-Z GND (0) On On On Off VDD (1) Transistor [6] [7] [8] Off Off On Off On Off On Off On

[5] Off Off On

Tabla 9. Funcionamiento del Buffer Medio Flip Flop (HFF) La Figura 10 muestra el smbolo lgico y un circuito CMOS equivalente de un medio Flip-Flop (HFF). Cuando la entrada de reloj [2] est a un nivel lgico 1, la puerta de transmisin [9] conduce y la puerta de transmisin [8] no conduce. Se dice que el medio Flip-Flop es transparente, porque la seal de entrada [1] pasa directamente a las salidas Q [3] y Q negada [4]. Cuando el reloj [2] est a un nivel lgico 0, la puerta de transmisin [8] conduce y la puerta de transmisin [9] no conduce. En este estado, el medio Flip-Flop se dice que est enclavado (latched). La puerta de transmisin [8], el inversor [6] y el inversor [7] forman un anillo estable y las salidas Q [3] y Q negada [4] permanecen al mismo nivel lgico que cuando el reloj cambi de 1 a 0.

Figura 10. Medio Flip Flop

24

ResumenAunque se piensa a menudo que los niveles lgicos son 0 voltios o 5 voltios, estos son realmente rangos de voltaje garantizados por el fabricante de la MCU. Para una MCU especfica que trabaja con VDD = 5.0 V, un nivel lgico 0 puede ser de 0.0 a 1.5 V y un nivel lgico 1 puede ser de 3.5 a 5.0 V. Siempre hay que referirse a las hojas de datos para cada MCU para obtener los voltajes lgicos 0 y 1. Las MCU CMOS se componen de miles de transistores tipo N y P. Un transistor tipo N conduce (conduce de la fuente hasta el drenador) cuando su puerta est a un nivel lgico 1 y su fuente est a un nivel lgico 0. Un transistor P conduce cuando su fuente est a un nivel lgico 1 y su puerta est a un nivel lgico 0. Los transistores N y P pueden conectarse de varias maneras para realizar un trabajo lgico. Hay tres tipos de puertas simples: los Inversores, las puertas NAND y las puertas NOR. La salida de un inversor siempre tiene un nivel lgico opuesto a su nivel de entrada. La salida de una puerta NAND est en nivel lgico 0 cuando todas sus entradas estn en nivel lgico 1. La salida de una puerta NOR est a un nivel lgico 0 cuando cualquiera o todas sus entradas estn a un nivel lgico 1. La salida de una puerta de transmisin o un Buffer de tres estados puede tener nivel lgico 0, lgico 1 o alta impedancia. Un salida tiene alta impedancia cuando parece no estar conectada a nada (un circuito abierto). Un medio Flip-Flop (HFF) tiene una condicin transparente y una condicin de enclavamiento (latched). En la condicin de transparente (con la entrada de reloj igual a un nivel lgico 1), la salida Q es siempre igual al nivel de la lgica presentada a la entrada. En la condicin de enclavamiento (la entrada de reloj igual a un nivel lgico 0), la salida mantiene el nivel lgico que fue presente cuando el Flip-Flop estaba en su ltimo lugar en la condicin de transparente. Los cambios en el nivel lgico de entrada, mientras el Flip-Flop est enclavado, no afectan al nivel lgico de salida.

25

Memoria y Entradas/Salidas ParalelasndiceIntroduccin Analoga de una Memoria con unas Casillas Cmo ve la Memoria el Microprocesador Kilobytes, Megabytes y Gigabytes Tipos de Memoria Memorias Voltiles RAM Memorias No-Voltiles ROM, EPROM, EEPROM, OTP, FLASH Entradas/Salidas como un tipo de Memoria Estados internos y Registros de control Mapa de memoria La Memoria como un Perifrico Resumen

IntroduccinAntes de ver el funcionamiento de la CPU se puede discutir en detalle algunos conocimientos conceptuales que requiere la memoria del microcontrolador. En muchas clases de inicio a la programacin, la memoria se presenta como algo similar a unas casillas donde se pueden almacenar mensajes y otras informaciones. Las casillas en que aqu se van a referir son como los buzones de un gran edificio. Es una buena analoga, pero necesita un poco ms de detalle para explicar los funcionamientos internos de una CPU.

Analoga de una Memoria con unas CasillasLa idea de que cualquier tipo de memoria sirve para guardar informacin, es cierta, pero no hay ningn punto que diga como se guarda dicha informacin y no se tiene de una manera fiable como se puede recuperar dicha informacin cuando se necesita. La serie de buzones de un edificio puede usarse como un tipo de almacenamiento de memoria. Se puede poner informacin en un buzn numerado y cuando se quiere recuperar dicha informacin, se puede ir al buzn con esa direccin y recuperarla. A continuacin, se puede llevar de manera anloga para explicar simplemente cmo ve la memoria un microcontrolador de 8-bits para que se pueda ser ms especfico. En una CPU de 8-bits, cada casilla (o buzn) puede ser un contenedor de un conjunto de ocho interruptores (on/off). En una casilla real, no se le puede poner ms informacin escribiendo ms pequeo, ni tampoco hay ninguna casilla vaca (son ocho interruptores y son On o Off). Los contenidos de una posicin de memoria pueden ser desconocidos o indefinidos a un momento dado, as mismo, los interruptores en las casillas pueden estar en un estado desconocido hasta que sean definidos por primera vez. Los ocho interruptores estarn en una fila, donde cada interruptor representa un solo dgito binario (bit). Un 1 binario corresponde a un interruptor cerrado (On) y un 0 binario corresponde a un interruptor que est abierto (Off). Cada casilla (posicin de memoria) tiene una nica direccin para que la informacin pueda guardarse y recuperarse fiablemente. En un edificio, las direcciones de los buzones pueden ser del 100 al 175 para el primer piso, del 200 al 275 para el segundo piso, etc. stos son nmeros decimales que tienen significando para las personas. Anteriormente se dijo que las microcontroladores trabajan con el sistema numrico binario y un microcontrolador con cuatro lneas de direccin puede identificar 16 direcciones. Este microcontrolador identifica las direcciones de las 16 posiciones de memoria (buzones) con el valor hexadecimal de $0 a $F. Los microcontroladores MC68HC05 ms pequeos, tienen 10 lneas de direccin que permiten direccionar 1024 nicas posiciones de memoria. En comparacin, el microcontrolador MC68HC11 de 8-bits tiene 16 lneas de direccin que pueden direccionar 65,536 nicas posiciones de memoria.

26

Cmo ve la Memoria el MicroprocesadorUna CPU de 8-bits con 10 lneas de direccin ve la memoria como una fila continua de 1024 valores de 8-bits. La primera posicin de memoria tiene la direccin 00 0000 00002 y la ltima posicin tiene la direccin 11 1111 11112. Estos 10-bits de direcciones normalmente se expresan como dos nmeros de 8-bits, esto se expresa a su vez por cuatro dgitos hexadecimales. En la anotacin hexadecimal, estas direcciones van de $0000 a $03FF. El microcontrolador especifica qu posicin de memoria se est accediendo (leer desde o escribir a) ponindose una nica combinacin de 1 y 0 en las 10 lneas de direccin. La intencin para leer la posicin o escribir en la posicin se hace poniendo un 1 (lectura) o un 0 (escritura) en una lnea llamada read/write (R/W). La informacin 'de' o 'para' la posicin de memoria se lleva con ocho lneas de datos. En cualquier posicin de memoria de un microcontrolador se puede 'escribir a' o se puede 'leer de'. No todos los tipos de memoria se pueden escribir, pero es trabajo del programador saber esto, no el microcontrolador. Si un programador ordena errneamente al microcontrolador escribir en una memoria de slo lectura, el microcontrolador lo intentar.

Kilobytes, Megabytes y GigabytesLa unidad ms pequea de memoria de un microcontrolador es de un solo bit que puede guardar un valor 0 o 1. Estos bits se agrupan en conjuntos de ocho bits, para hacer un byte. Los microcontroladores ms grandes se agrupan en grupos ms extensos de 16 o 32 bits, para hacer una unidad llamada palabra o word. El tamao de una palabra puede ser diferente para diferentes microcontroladores. En el mundo decimal, se expresan a veces nmeros muy pequeos o muy grandes, incluyendo un prefijo como mili, kilo, etc., antes de la unidad de medida. En el mundo binario, se acostumbra a utilizar prefijos similares para describir grandes cantidades de memoria. En el sistema decimal, el prefijo kilo significa 1000 (o 3 10 10 ). En el sistema binario, la potencia del nmero 2 que ms se acerca a 100010 es 2 = 102410. Cuando se dice kilobytes (Kbytes) son mltiplos de 102410 bytes y aunque esta terminologa cientfica no es del todo exacta, a travs de los aos de uso se ha quedado como normal. 20 30 Un megabyte es 2 o 1,048,57610 bytes. Un gigabyte es 2 o 1,073,741,82410 bytes. Un microcontrolador personal con 32 lneas de direccin, tericamente puede direccionar 4 gigabytes (4,294,967,29610) de memoria. Los microcontroladores pequeos discutidos en este libro tienen desde 512 bytes hasta 16 kilobytes de memoria.

Tipos de MemoriaLos microcontroladores utilizan varios tipos de informacin que requiere almacenarla en diferentes tipos de memoria. Las instrucciones que controlan el funcionamiento de los microcontroladores se guardan en una memoria no-voltil para que el sistema no tenga que ser reprogramado despus de que se deje de alimentar. Para trabajar con las variables y los resultados intermedios, es necesario guardarse en una memoria que pueda escribirse rpidamente y fcilmente durante el funcionamiento del sistema. No es importante conservar este tipo de informacin cuando no hay alimentacin, por lo que puede usarse una memoria voltil. Estos tipos de memorias se les puede modificar su contenido escribiendo y slo se pueden leer por la CPU del microcontrolador. Otra informacin sobre las memorias, los datos de entrada son ledos por la CPU y los datos de salida son escritos por la CPU. Las entradas/salidas E/S (I/O input/output) y los registros de control son tambin una forma de memoria del microcontrolador, pero son diferentes a los otros tipos de memoria, porque la informacin puede ser detectada y/o cambiada por otra cosa diferente de la CPU.

Memorias VoltilesRAM: Memoria de Acceso Aleatorio (Random Access Memory) La RAM es una forma de memoria voltil que puede ser leda o escrita por la CPU. Como su nombre implica, se puede acceder a las posiciones de la RAM en cualquier orden. Esta es el tipo de memoria ms comn en un microcontrolador. La RAM requiere una cantidad relativamente grande de rea de silicio del circuito integrado y debido a esto el costo es alto, por esto, normalmente las cantidades de RAM incluidas en los microcontroladores suelen ser pequeas. 27

Memorias No-VoltilesROM: Memoria de slo Lectura (Read-Only Memory) La ROM consigue su informacin durante el proceso industrial del circuito integrado. La informacin debe ser proporcionada por el cliente antes de integrar el circuito, que una vez fabricado contendr esta informacin. Cuando se ha terminado el microcontrolador, esta informacin puede ser leda por la CPU pero no puede cambiarse. La ROM est considerada como una memoria no-voltil porque la informacin no cambia si se deja de alimentarla. La ROM es el tipo ms simple, ms pequea y ms barata de memoria no-voltil. PROM: Memoria Programable de slo lectura (Programmable ROM) La PROM es similar a la ROM, slo que puede se programa despus de fabricar el circuito integrado. EPROM: Memoria Elctricamente Programable (borrable por UV) La EPROM puede ser borrada exponindola a una fuente de luz ultravioleta. Los microcontroladores con EPROM tienen una pequea ventana de cuarzo que permite al circuito integrado ser expuesto a la luz ultravioleta para borrarse. El nmero de veces que puede borrarse y reprogramarse una EPROM se limita a unos cientos ciclos y depende del dispositivo en particular. Para programar la informacin en una memoria EPROM se usa un procedimiento especial. La mayora de microcontroladores con EPROM usan un voltaje adicional tpico de +12 Vdc, durante la programacin de la EPROM. La CPU no puede escribir informacin en una posicin de la EPROM tal como se hace para escribir en una posicin de la RAM. Algunos microcontroladores tienen internamente un circuito de programacin de la EPROM, para que la CPU del microcontrolador pueda programar las posiciones de memoria de la EPROM. Cuando la EPROM se est programando, no se conectan los buses de direcciones y de datos tal como se hara en una memoria normal. De manera anloga a las casillas, esto sera quitar el mueble entero de soporte de los buzones y tomndolo como un almacn donde las cajas se llenaran con informacin. Mientras los buzones estn programndose, no se puede acceder a los buzones del edificio. Algunos microcontroladores con EPROM (no el MC68HC705J1A) tienen un modo especial de funcionamiento que los hace parecer una memoria EPROM normal de la industria. Estos dispositivos pueden programarse con un programador de propsito general de EPROM. OTP: Memoria EPROM programable uno sola vez Cuando un microcontrolador con EPROM se encapsula con plstico opaco, se le llama un microcontrolador de programable una sola vez o OTP. Como que la luz ultravioleta no puede atravesar el encapsulado, la memoria no puede borrarse. El silicio dentro de una OTP es idntico a uno encapsulado con una ventana de cuarzo. El encapsulado en plstico es mucho ms barato que el encapsulado en cermico con una ventana de cuarzo. Las MCU con OTP son ideales para aplicaciones de alto volumen. EEPROM: Memoria Programable y Borrable elctricamente Las EEPROM se pueden borrar elctricamente por los comandos de un microcontrolador. Para programar un nuevo valor en una posicin, se debe borrar primero dicha posicin y entonces realizar una serie de pasos de programacin. Esto es algo ms complicado que cambiar una posicin de la RAM a la que simplemente puede escribirse un nuevo valor por la CPU. La ventaja de la EEPROM es que es una memoria no-voltil. La EEPROM no pierde sus contenidos cuando se deja de alimentarla. La diferencia con la Memoria RAM es el nmero de veces que se puede borrar y reprogramar una posicin de EEPROM que est limitada, tpicamente a 10,000 ciclos. El nmero de veces que se puede leer una posicin de EEPROM es ilimitado. FLASH: Memoria Programable y Borrable elctricamente Las memorias Flash se pueden borrar y programar elctricamente (tpicamente a 10.000 ciclos de programacin/borrado). Ocupan menor rea de silicio dentro de un circuito integrado.

E/S como un tipo de MemoriaEl estado y el control de las Entradas/Salidas, es un tipo de posicin de memoria que permite al sistema microcontrolador conseguir la informacin a o del mundo exterior. Este tipo de posicin de memoria es inusual porque la informacin puede detectarse y/o puede cambiarse por otra cosa diferente a la CPU. Los tipos ms simples de posiciones de memoria son los puertos de entrada y salida. En una MCU de 8bits, un simple puerto de entrada consiste en ocho pins que pueden ser ledos por la CPU. Un simple puerto de salida consiste en ocho pins que la CPU puede controlar (escribir a). En la prctica, una posicin de un simple puerto de salida normalmente se lleva a cabo con ocho bsculas y ocho caminos de realimentacin, que permiten a la CPU leer lo que se escribi previamente en la direccin de dicho puerto de salida. 28

La Figura 11 muestra los circuitos equivalentes de un bit de RAM, un bit de un puerto de entrada y un bit de un puerto de salida tpico que tienen la capacidad de almacenar la lectura anterior. En una MCU real, estos circuitos se repiten ocho veces para hacer una sola posicin de 8-bits de RAM, puerto de entrada o puerto de salida. El medio flip-flop (HFF), Figura 11, es transparente a la entrada. Cuando la seal de reloj est en estado alto, los datos pasan libremente de la entrada D a la salida Q y 1. Cuando la entrada de reloj est en estado bajo, los datos se almacenan en las salidas Q y 1.

Figura 11. Memoria y Circuitera de E/S Cuando la CPU guarda un valor en la direccin que corresponde el puerto de salida en la Figura 11 (c), se activa la seal WRITE para almacenar el dato de la lnea del bus de datos en el medio flip-flop [4]. La salida de esta bascula, la cual tiene un buffer [5], aparece como un nivel digital en el terminal de salida. Cuando la CPU lee la direccin de este puerto de salida, se activa la seal READ para habilitar el multiplexor [6]. Este multiplexor acopla los datos de salida del medio flip-flop hacia la lnea bus de datos.

Estados internos y Registros de controlLos estados internos y los registros de control son simplemente posiciones de memoria. En lugar de detectar y controlar los pines externos, el estado y los registros de control detectan los niveles de seal lgicos internos (indicadores). Mirando la Figura 11 y comparando el bit de una RAM con el puerto de salida. La nica diferencia es que el bit de salida tiene un buffer para conectar el medio flip-flop a un pin externo. En el caso de un bit de control interno, la salida del buffer se conecta a alguna seal de control interno en lugar de a un pin externo. Un bit de estado interno est como un bit de puerto de entrada excepto que la seal que es detectada durante una lectura, es un seal interna en lugar de un pin externo. 29

La familia de microcontroladores MC68HC05 incluyen pines de E/S paralelos. La direccin de cada terminal es programable por un software accesible por un bit de control. La Figura 12 muestra la lgica para un pin de E/S bidireccional que incluye un latch en el puerto de salida y un bit de control de direccin de datos. Un pin del puerto se configura como una salida si su correspondiente bit DDR (registro de direccin de datos) se pone a 1. Un pin se configura como una entrada si su correspondiente bit DDR se pone a 0. Un reset o power on, ponen a 0 todos los bits DDR y configura todos los pines del puerto como entradas. Los bits DDR son capaces de ser escritos o ledos por el procesador.

Figura 12. Puerto de E/S con Control de Direccin de Datos

Mapa de memoriaPuesto que hay ms de mil posiciones de memoria en un sistema MCU, es importante saber de alguna manera por donde se ha pasado. Un mapa de memoria es una representacin grfica del espacio total de la memoria de la MCU. La Figura 14 es un mapa de memoria tpico que muestra los recursos de la memoria del MC68HC705J1A. A lo largo de la columna izquierda de la Figura 14 se muestran las direcciones, con los valores de 4dgitos hexadecimales empezando por arriba con $0000 y aumentando hasta $07FF en la parte inferior. $0000 corresponde a la primera posicin de memoria (seleccionada cuando la CPU tiene todas las lneas del bus interno de direcciones a 0). $07FF corresponde a la ltima posicin de memoria seleccionada (cuando la CPU tiene todas las 11 lneas del bus interno de direcciones a 1). La columna siguiente, dentro de rectngulos, se identifican los tipos de memorias (RAM, EPROM, registros de E/S, etc. , que residen en una rea particular de memoria). Cada rectngulo puede interpretarse como una fila de 2048 casillas (posiciones de memoria) y cada una de estas contiene ocho bits de datos como lo muestra la Figura 13.

Figura 13. Detalle expandido de una posicin de memoria

30

Algunas reas, como los registros de E/S, necesitan ser mostradas en ms detalle porque es importante saber los nombres de cada posicin individual. A las primeras 256 posiciones de memoria ($0000$00FF) se puede acceder por el microcontrolador de un modo especial llamado modo de direccionamiento directo. Los modos de direccionamiento se describen en mayor detalle en el Juego de Instrucciones del MC68HC05. En el modo de direccionamiento directo, la CPU asume que los dos dgitos hexadecimales superiores de la direccin son 0; as, en la instruccin slo se necesita dar explcitamente los dos dgitos de la parte baja de la direccin. Los registros internos de E/S y los 64 bytes de RAM se localizan en el rea de memoria $0000$00FF. En el mapa de memoria de la Figura 14, la expansin del rea de memoria de E/S identifica cada posicin del registro con los dos dgitos de la parte baja de su direccin en lugar de los 4-dgitos completos de la direccin. Por ejemplo, los valores de los 2dgitos hexadecimales $00 aparecen a la derecha del registro de datos del puerto A, qu realmente se localiza en la direccin $0000 del mapa de memoria.

Figura 14. Mapa de Memoria Tpico

La Memoria como un PerifricoLas memorias pueden tener una forma de perifrico. Los usos de los diferentes tipos de memoria fueron discutidos anteriormente, pero no fue considerada la circuitera lgica que se requiere para soportar stas memorias. Las memorias ROM y RAM son circuitos directos, no requieren ningn soporte lgico que la de seleccin de direccin, para distinguir una posicin de otra. Esta circuitera lgica de seleccin est contenida en el mismo circuito de la propia memoria. Las memorias EPROM (PROM borrable) y EEPROM (PROM elctricamente borrable) requieren una lgica de soporte para la programacin (y de borrado en el caso de la EEPROM). Por ejemplo, la circuitera lgica de soporte, de los perifricos en el MC68HC705J1A, contiene internamente un programador de PROM en la MCU. Un registro de control incluye unos bits de control para seleccionar entre los modos de programacin y de lectura, para habilitar el alto voltaje alto de alimentacin requerido para la programacin.

31

ResumenSe puede pensar que una memoria del microcontrolador es como una serie de buzones, pero un microcontrolador ve la memoria como una serie valores de 8-bits. n Si un microcontrolador tiene n lneas de direccin, nicamente puede direccionar 2 posiciones de 11 memoria. Un microcontrolador con 11 lneas de direccin pueden direccionar 2 , o 204810 posiciones. NOTA: Un kilobyte (escrito 1 Kbyte) es igual a 102410 bytes. Tipos de Memoria = RAM Memoria de acceso aleatorio, puede leerse o puede escribirse por una CPU. Los contenidos son guardados mientras se le aplica alimentacin. = ROM Memoria de slo lectura, puede leerse pero no puede modificarse. Los contenidos deben determinarse antes de que sea fabricado el circuito i