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
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.
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.
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.
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'.
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
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
- Instrucciones aritméticas
- Instrucciones condicionales
- Instrucciones de llamada y salto
- Instrucciones de bucle
- Instrucciones lógicas
- 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
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
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.
Si quieres conocer otros artículos parecidos a Bancos de registros y asignación de memoria de pila en el microcontrolador 8051 puedes visitar la categoría Generalidades.
Deja una respuesta
¡Más Contenido!