Cómo ve la Memoria el Microprocesador
Una CPU de 8-bits con 10 líneas de dirección ve la memoria como una fila continua de 1024 valores de
8-bits. La primera posición de memoria tiene la dirección 00 0000 0000 2 y la última posición tiene la dirección
11 1111 1111 2 . Estos 10-bits de direcciones normalmente se expresan como dos números de 8-bits, esto se
expresa a su vez por cuatro dígitos hexadecimales. En la anotación hexadecimal, estas direcciones van de $0000
a $03FF.
El microcontrolador especifica qué posición de memoria se está accediendo (leer desde o escribir a)
poniéndose una única combinación de 1 y 0 en las 10 líneas de dirección. La intención para leer la posición o
escribir en la posición se hace poniendo un 1 (lectura) o un 0 (escritura) en una línea llamada read/write (R/W).
La información 'de' o 'para' la posición de memoria se lleva con ocho líneas de datos. En cualquier posición 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
erróneamente al microcontrolador escribir en una memoria de sólo lectura, el microcontrolador lo intentará.
Kilobytes, Megabytes y Gigabytes
La unidad más pequeña 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 más
grandes se agrupan en grupos más extensos de 16 o 32 bits, para hacer una unidad llamada palabra o word. El
tamaño de una palabra puede ser diferente para diferentes microcontroladores.
En el mundo decimal, se expresan a veces números muy pequeños 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
). En el sistema binario, la potencia del número 2 que más se acerca a 1000 10 es 2
dice kilobytes (Kbytes) son múltiplos de 1024 10 bytes y aunque esta terminología científica no es del todo
exacta, a través de los años de uso se ha quedado como normal.
Un megabyte es 2
microcontrolador personal con 32 líneas de dirección, teóricamente puede direccionar 4 gigabytes
(4,294,967,296 10 ) de memoria. Los microcontroladores pequeños discutidos en este libro tienen desde 512 bytes
hasta 16 kilobytes de memoria.
Tipos de Memoria
Los microcontroladores utilizan varios tipos de información que requiere almacenarla en diferentes
tipos de memoria. Las instrucciones que controlan el funcionamiento de los microcontroladores se guardan en
una memoria no-volátil para que el sistema no tenga que ser reprogramado después de que se deje de alimentar.
Para trabajar con las variables y los resultados intermedios, es necesario guardarse en una memoria que pueda
escribirse rápidamente y fácilmente durante el funcionamiento del sistema. No es importante conservar este tipo
de información cuando no hay alimentación, por lo que puede usarse una memoria volátil. Estos tipos de
memorias se les puede modificar su contenido escribiendo y sólo se pueden leer por la CPU del
microcontrolador.
Otra información sobre las memorias, los datos de entrada son leídos 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 también una
forma de memoria del microcontrolador, pero son diferentes a los otros tipos de memoria, porque la información
puede ser detectada y/o cambiada por otra cosa diferente de la CPU.
Memorias Volátiles
RAM: Memoria de Acceso Aleatorio (Random Access Memory)
La RAM es una forma de memoria volátil que puede ser leída 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 más común
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 pequeñas.
20
o 1,048,576 10 bytes. Un gigabyte es 2
30
27
10
= 1024 10 . Cuando se
o 1,073,741,824 10 bytes. Un