Bancos de registros y asignación de memoria de pila en el microcontrolador 8051

El conjunto de registros de propósito general (R0-R7) se denomina banco de registros, que acepta un byte de datos. El registro de banco es una parte de la memoria RAM en los microcontroladores integrados, y se utiliza para almacenar las instrucciones del programa. Cada microcontrolador consta de varios bancos de memoria, y cada registro de banco consta de una dirección única para reconocer la ubicación de almacenamiento.


Bancos de registro en el 8051

Registro de bancos en el 8051

El microcontrolador 8051 consta de cuatro bancos de registros, como el Banco0, el Banco1, el Banco2 y el Banco3, que se seleccionan mediante el registro PSW (Palabra de Estado del Programa). Estos bancos de registros están presentes en la memoria RAM interna del microcontrolador 8051, y se utilizan para procesar los datos cuando se programa el microcontrolador.

Conmutación de los bancos de registros

Por defecto, el microcontrolador 8051 se enciende con el banco de registros 0; y, utilizando la Palabra de Estado del Programa (PSW), podemos cambiar a otros bancos. Los dos bits de la PSW se utilizan para cambiar entre los bancos de registros. Se accede a estos dos bits mediante las instrucciones direccionables SETB y CLR.

En función de las posibles combinaciones de RS1 y RS0 de PSW, el banco de registros se cambia en consecuencia, es decir, si RS1 y RS0 son 0, se selecciona el Banco 0. Del mismo modo, los bancos 1, 2 y 3 se seleccionan según los valores de RS1 y RS0.

Asignación de memoria de pila en el microcontrolador 8051

La pila es un área de memoria de acceso aleatorio (RAM) asignada para mantener temporalmente todos los parámetros de las variables. La pila también se encarga de recordar el orden en que se llama a una función para que pueda ser devuelta correctamente. Cada vez que se llama a una función, los parámetros y las variables locales asociadas a ella se añaden a la pila (PUSH). Cuando la función regresa, los parámetros y las variables se eliminan («POP») de la pila. Por eso el tamaño de la pila de un programa cambia continuamente mientras se ejecuta el programa.

Lee:  Cómo encontrar la resistencia equivalente en un circuito complejo | matlab

El registro utilizado para acceder a la pila se denomina registro de puntero de pila. El puntero de la pila es un pequeño registro que se utiliza para apuntar a la pila. Cuando introducimos algo en la memoria de la pila, el puntero de la pila aumenta.

Asignación de la memoria de la pila en el microcontrolador 8051
Asignación de la memoria de la pila en el microcontrolador 8051

Ejemplo

Cuando un microcontrolador 8051 se enciende, el valor del puntero de la pila es 07, por defecto, como se muestra en la figura anterior. Si realizamos la operación «PUSH», la dirección del puntero de la pila aumentará y se desplazará a otro registro. Para evitar este problema, antes de iniciar el programa, tenemos que asignar una dirección diferente al puntero de la pila.

Operación PUSH

La operación ‘PUSH’ se utiliza para tomar los valores de cualquier registro y almacenarlos en la dirección inicial del puntero de la pila, es decir, 00h mediante la operación ‘PUSH’. Y, para el siguiente ‘PUSH’, incrementa +1, y almacena el valor en la siguiente dirección del puntero de la pila, es decir, 01h.

Operación PUSH de la pila
Operación PUSH de la pila

La operación PUSH significa (First in First out)

Ejemplo: WAP en lenguaje ensamblador para la operación PUSH

0000h
MOV 08h, #21h
MOV 09h, #56h
PUSH 00h
PUSH 01h
FIN

Operación POP

Se utiliza para colocar los valores de la dirección máxima del puntero de la pila en la dirección de cualquier otro registro. Si volvemos a utilizar este ‘POP’, entonces se decrementa en 1, y el valor almacenado en cualquier registro se da como ‘POP’.

Operación POP en la pila
Operación POP en la pila

La operación POP significa «Último en entrar, primero en salir».

000H
MOV 00H, #12H
MOV 01H, #32H
POP 1FH
POP 0EH
FIN

Registros del microcontrolador 8051

Si realizamos cualquier operación, ya sea una suma o una resta, estas operaciones no pueden realizarse directamente en la memoria, y por tanto, se realizan utilizando los registros. Hay diferentes tipos de registros en el microcontrolador 8051.

Estos registros se clasifican en dos tipos en función de sus operaciones:

– Registros de propósito general

– Registros de funciones especiales

Lee:  Control de alimentación de CA: cómo controlar una fuente de alimentación de CA: aplicaciones

Registros de propósito general

Como ya hemos dicho antes en este artículo, hay cuatro registros de banco diferentes y cada banco tiene 8 registros de 8 bits direccionables, y sólo se puede acceder a un registro de banco a la vez. Pero, cambiando el número del registro del banco en el registro de banderas, podemos acceder a otros registros del banco, que se han discutido anteriormente en este artículo junto con el concepto de interrupción en el 8051.

Registros de funciones especiales

Los registros de función especial, que incluyen el Acumulador, el Registro B, el Puntero de datos, el PCON, el PSW, etc., están diseñados para un propósito predeterminado durante la fabricación con la dirección 80H a FFH, y esta área no se puede utilizar para el propósito de almacenamiento de datos o programas. Estos registros se pueden implementar mediante registros de dirección de bits y de dirección de bytes.

Tipos de registros de función especial

El 8051 consta de cuatro registros de función especial relacionados con la entrada/salida, en los que hay un total de 32 líneas de E/S. Los registros de función especial controlan los valores leídos de las líneas de E/S y los registros de función especial que controlan el funcionamiento del 8051. Los registros de funciones especiales auxiliares no están conectados directamente al 8051, pero, de hecho, sin estos registros, el 8051 no puede funcionar correctamente. A continuación se explica el conjunto de registros del 8051.

Conjunto de registros del microcontrolador 8051

El establecimiento de un valor constante fijo en el registro se denomina conjunto de registros. Los valores se establecen en los registros mediante el conjunto de instrucciones. El 8051 sigue las instrucciones CISC con arquitectura «Harvard». CISC significa conjunto de instrucciones complejas. Los diferentes tipos de instrucciones del microcontrolador 8051 son

  1. Instrucciones aritméticas
  2. Instrucciones condicionales
  3. Instrucciones de llamada y salto
  4. Instrucciones de bucle
  5. Instrucciones lógicas
  6. Instrucciones de lingotes de oro

1. Instrucciones aritméticas

Las instrucciones aritméticas realizan varias operaciones básicas como

  • Suma
  • Sustracción
  • Multiplicación
  • División
Instrucciones aritméticas en el microcontrolador 8051
Instrucciones aritméticas en el microcontrolador 8051

Ejemplos:

a. Suma:

Org 0000h
MOV R0, #03H // mover el valor 3 es el registro R0//
MOV A, #05H // mueve el valor 5 en el acumulador A//
Suma A, 00H // el valor ‘5’ del acumulador con 0 y lo almacena en el acumulador//
FIN

Lee:  Qué es el Gaussímetro : Funcionamiento y sus aplicaciones

b. La sustracción:

Org 0000h
MOV R0, #03H // mover el valor 3 es el registro R0//
MOV A, #05H // mueve el valor 5 en el acumulador A//
SUBB A, 03H // A=5-3 el valor final es 2 almacenado en el Acumulador A //
FIN

C. Multiplicación:

Org 0000h
MOV R0, #03H // mover el valor 3 es el registro R0//
MOV A, #05H // mueve el valor 5 en el acumulador A//
MUL A, 03H // A=5*3 el valor final es 15, almacenado en el Acumulador A //
FIN

D. División:

Org 0000h
MOV R0, #03H // mover el valor 3 es el registro R0//
MOV A, #15H // mueve el valor 5 en el acumulador A//
DIV A, 03H // A=15/3 el valor final es 5 almacenado en el Acumulador A //
FIN

2. Instrucciones condicionales

La CPU puede ejecutar las instrucciones en función de la condición comprobando el estado de un solo bit o el estado de un byte, lo que se denomina instrucciones condicionales, como por ejemplo

Para comprobar el estado de un solo bit en un registro direccionable por bits

JB- salta si está por debajo

JNB- salta si no está por encima

Para comprobar el estado del bit de arrastre

JC- saltar si la bandera de acarreo

JNC – saltar si no hay acarreo

Para comprobar que el estado del acumulador es 0 o 1

JZ- salto si bandera cero

JNZ- saltar si no es cero

Esto es todo sobre el conjunto de registros en el microcontrolador 8051 y su asignación de memoria de pila. Esperamos que este artículo te haya dado algunas ideas esenciales sobre el tema junto con algunos programas muy interesantes que acompañan a cada tema. También puedes escribirnos para pedir ayuda en la codificación del microcontrolador y también sobre los últimos proyectos sobre el microcontrolador.

Javired
Javired

Deja una respuesta

Tu dirección de correo electrónico no será publicada.