Arquitectura del Microcontrolador 8051: Mapa de Memoria y Temporizadores

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 3,81 KB

Mapa de Memoria del Microcontrolador 8051

El microcontrolador 8051, al utilizar una arquitectura Harvard, divide su memoria en dos espacios: memoria de datos y memoria de código. A continuación, se detalla el acceso a cada parte del mapa de memoria.

Tipos de Memoria y Formas de Acceso

La memoria de código se divide en un bloque interno y otro externo. La señal !EA (External Access) determina cuál se utiliza: !EA = 0 para memoria externa y !EA = 1 para interna. Se puede acceder a la memoria de código con la instrucción MOVC.

La memoria de datos es más compleja, con bloques internos y externos. La memoria externa se accede con instrucciones MOVX. La memoria interna se subdivide en:

  • Datos (DATA/IDATA): Almacena variables y datos de programa.
  • Registros de Funciones Especiales (SFR): Controlan periféricos y funciones especiales.

Existen cinco tipos de memoria según su forma de acceso:

  • XDATA: Memoria externa, accesible con MOVX (ej. MOVX A, 80H).
  • BDATA: Espacio direccionable bit a bit. BDATA 0x00 a 0x7F corresponde a DATA 0x20 a 0x2F. BDATA 0x80 en adelante pertenece a SFR.
  • SFR: Accesible mediante direccionamiento directo (ej. MOV A, 80H).
  • IDATA: Accesible mediante direccionamiento indirecto (ej. MOV A, @R0).
  • CODE: Memoria de código, accesible con MOVC.

Direcciones 80H

Existen cinco direcciones 80H en el mapa de memoria del 8051, cada una correspondiente a un tipo de memoria diferente. Hasta la posición 80H, la memoria de datos normales se accede con direccionamiento directo o indirecto. A partir de esa posición, se usa direccionamiento directo para SFR e indirecto para datos normales. Algunos registros SFR son accesibles bit a bit mediante instrucciones de manipulación de bits.

Temporizadores de Salida Comparada y PWM

Temporizador de Salida Comparada

Los temporizadores de salida comparada generan interrupciones cuando el contador del sistema alcanza un valor predefinido en un registro. Existen dos tipos:

Salida Comparada Manual

Un comparador verifica la igualdad entre el contador y el Registro de Salida Comparada (RSC). Al cumplirse, se complementa el estado de un pin, permitiendo generar ondas. El algoritmo es:

  1. Leer RSC.
  2. Sumar RSC + T1 (un valor de tiempo).
  3. Escribir el resultado en RSC.

Repitiendo el algoritmo con diferentes valores (T1, T2, etc.), se controla el tiempo que el pin permanece en cada estado. Un posible problema es que no haya tiempo suficiente para cambiar el registro antes de la conmutación.

Salida Comparada Automática

Similar al manual, pero la suma se realiza por hardware mediante un sumador, añadiendo el valor de T1 al RSC. Si no se comprueba T1, se genera una señal cuadrada, ya que el tiempo entre conmutaciones es constante.

Modulación por Ancho de Pulso (PWM)

Se utiliza un biestable R/S. El contador aumenta hasta igualar el valor del registro PWM, poniendo el biestable a 1. Al desbordarse el contador, el biestable se pone a 0. Esto genera una señal donde:

  • TL: Tiempo hasta alcanzar el valor PWM.
  • TH: Tiempo hasta el desbordamiento.

La tensión efectiva se calcula en función de estos tiempos.

Un reloj lento puede generar un periodo PWM (TPWM) demasiado largo, causando ruido en actuadores como motores. Una solución es añadir un comparador que compare el contador con un registro TPWM. Al cumplirse la igualdad, se ponen a 0 el contador y el biestable, permitiendo controlar TPWM independientemente de la velocidad del reloj.

Entradas relacionadas: