Análisis de la estructura de memoria del microcontrolador at89s52
El programa escrito por el diseñador se almacena en la memoria de programa del microprocesador.
at89s52 tiene un espacio de direccionamiento de memoria de programa de 64 kb, que se utiliza para almacenar programas de usuario, datos, tablas y otra información. La estructura de la memoria del programa se muestra en la Figura 1.
Figura 1 La estructura de la memoria del programa at89s52
La memoria del programa dentro y fuera del chip del at89s52 está en un espacio lógico unificado, con direcciones de 0000h a ffffh, y un rango máximo de 64k bytes. Cuando el pin está atado alto, la ejecución del programa comienza desde la memoria del programa en el chip 0000h, es decir, accediendo a la memoria en el chip. Cuando el valor de la PC excede la capacidad de la memoria del chip, el programa se transferirá automáticamente al espacio de memoria del programa fuera del chip para su ejecución. Cuando este pin está bajo, el sistema forzará la ejecución de todos los programas almacenados en la memoria de programas fuera del chip a partir de las 0000 h.
2. Memoria de datos
at89s52 tiene 256 bytes de memoria de datos en el chip. La dirección es 00h~ffh. Las 256 unidades**** se dividen en dos partes. Entre ellos, la unidad de dirección 00h~7fh (***128 bytes) es la memoria de datos del usuario. Los 128 bytes superiores se superponen con los registros de funciones especiales, lo que significa que los 128 bytes superiores tienen la misma dirección que los registros de funciones especiales y están físicamente separados.
Las 32 unidades en 00h~1fh**** se dividen uniformemente en 4 bloques. Cada bloque contiene 8 registros de 8 bits, todos denominados r0~r7. Estos registros se denominan registros de propósito general. Los registros en estos cuatro bloques se denominan r0 ~ r7 respectivamente, y se pueden seleccionar cuatro conjuntos de registros de propósito general usando los bits 3 y 4 (rs0 y rs1) de psw.
La unidad 20h-2fh de la memoria de datos interna es un área direccionable por bits. Puede ser direccionada por bytes como una unidad general, o sus bits pueden ser direccionados por la dirección del área direccionable por bits. es como se muestra en la Tabla 1. Como se muestra
Tabla 1 tabla de direcciones del área de direccionamiento de bits de ram
3 Dirección de entrada de la rutina de servicio de interrupción
En el programa. área de memoria, Se guarda un segmento de la dirección de entrada del programa de servicio de interrupción para el programa de servicio de interrupción: un grupo de unidades especiales es 0003h-0032h. Cada unidad tiene su propio propósito. Están divididas en 6 segmentos, cada segmento tiene 8 bytes. y están reservados exclusivamente para usos del programa de servicios de interrupción, denominado área de vector de interrupción. at89s52**** tiene 8 fuentes de interrupción y 6 vectores de interrupción, sus definiciones se muestran en la Tabla 2 a continuación.
Los registros de funciones especiales son un conjunto de registros con propósitos especiales, también llamados registros de propósitos especiales. Son esencialmente unidades en chip con funciones especiales, que reflejan el estado de funcionamiento del microcontrolador. registros de funciones especiales y controlados.
La dirección interna alta 128 (80 ~ ffh) del microcontrolador At89s52 está asignada al registro de función especial. Este espacio de direcciones se superpone completamente con la dirección superior de 128 bytes de la memoria de datos interna del chip, pero los dos son completamente independientes en el hardware físico y el método de direccionamiento se utiliza para distinguir este espacio de direcciones completamente superpuesto. Cuando se accede a este espacio de direcciones mediante direccionamiento directo, se accede a los registros de funciones especiales; cuando se accede a este espacio de direcciones mediante direccionamiento indirecto, se accede a la memoria de datos.
El at89s52 tiene 32 registros de funciones especiales distribuidos discretamente en las direcciones de ram interna 80h a ffh. Las funciones de estos registros están específicamente definidas y su estructura no puede ser modificada por el usuario.
5. Algunas cosas a tener en cuenta
(1) Superposición de direcciones
A todas las memorias del microcontrolador se les debe asignar una dirección y el rango de direcciones direccionables es 64kb, la memoria de datos y la memoria de programa ocupan la misma dirección.
Las direcciones bajas de 4 kb dentro y fuera del chip de la memoria del programa 0000h~0ffffh se superponen completamente, pero usamos pines para distinguirlas: =0, seleccione fuera del chip, =1, seleccione en el chip, por lo que se distinguen completamente.
En la memoria de datos, las direcciones de las 256 unidades de 0000h a 00ffh dentro y fuera del chip se superponen completamente, y el acceso a los datos dentro y fuera del chip se distingue por diferentes instrucciones: la instrucción mov accede la memoria de datos en el chip y la instrucción movx accede a la memoria de datos fuera del chip.
(2) La diferencia entre la memoria de programa (rom) y la memoria de datos (ram)
Existen diferencias estrictas en el uso entre la memoria de programa (rom) y la memoria de datos (ram). La memoria solo se puede colocar en instrucciones del programa y tablas constantes, y solo se puede acceder a los datos a la memoria del programa mediante la instrucción movc. La memoria de datos almacena datos y las instrucciones de operación dentro y fuera del chip se operan mediante mov y movx respectivamente.
(3) División de área del espacio de direcciones de bits
Los 128 bits de 20h a 2fh en la memoria RAM del chip y las direcciones de bits en sfr, estas unidades de direccionamiento de bits e instrucciones de bits sets Constituye un sistema procesador de bits
.