He estado estudiando el microcontrolador 8032
. Se menciona que 8032
no tiene ROM interna. Ahora hay algunas preguntas que tengo
-
¿Necesitamos una ROM externa para ¿ejecutar programas necesariamente? ¿No podemos usar la RAM interna de 256 bytes?
-
Supongamos que estoy usando el microcontrolador 8032 con una ROM externa
2732
y también usando un pestillo para almacenar la dirección (orden inferior) del puerto P0. (que puede transferir direcciones / datos). Ahora, después de habilitar EA y conectar el PSEN ¿cómo 8032 ejecuta el programa? ¿Qué sucede si enciendo el sistema? (¿Cómo ejecuta las instrucciones el contador de programa del microcontrolador 8032? ¿Desde qué dirección de memoria externa debe leerse el programa?
Tengo lea estos manuales: Intel 8032H Keil , Atmel 80C32E .
Respuesta
Si observa un circuito típico 80 (C) 32 a continuación (de aquí ):
Puede ver que el 8032 habla con EPROM, RAM y EEPROM externas a través de un bus: datos de 8 bits y dirección de 16 bits. Este último está bloqueado y, por lo tanto, demultiplexado con el HCT573. Había algunos chips con el bloqueo integrado diseñados para usarse con el 8031/8032, pero la configuración anterior era la más común, usando baja chips de memoria estándar de coste. También hay un poco de » lógica » para decodificar las direcciones y te las señales adecuadas para las memorias (el HCT138 y el quad NAND).
Es vital que la lógica del pegamento esté diseñada de manera que la EPROM resida en la dirección 0 porque después de un reinicio, la ejecución siempre comienza por el 8032 obteniendo el primer byte de la instrucción de esa dirección. Esta es una función del hardware en el 8032 y no se puede cambiar. Normalmente, la instrucción es una instrucción LJMP de 3 bytes que salta al principio del programa. A eso lo llamamos » RESET VECTOR «. Otros vectores ocupan los bytes inmediatamente arriba del vector de reinicio, para la rutina del servicio de interrupción externa y la rutina del servicio de interrupción del temporizador.
En esos días, la EPROM sería programada (escrita en) por un programador separado fuera del circuito y luego típicamente enchufado a un enchufe. Sin programación en circuito en esos días. La memoria RAM y EEPROM podrían ser escritas por el micro, pero el programa tendría que cargarse en la EPROM antes de que eso fuera posible.
Comentarios
Respuesta
No, no puede usar la RAM interna para contener el código. El 8051/8032 usa una arquitectura Harvard, lo que significa que tiene una espacios de memoria para código y datos. Las instrucciones se obtienen del espacio de código, pero la RAM reside en el espacio de datos.
Ahora, después de habilitar EA y conectar el PSEN, ¿cómo ¿8032 ejecuta el programa?
El 8032 obtiene instrucciones del espacio de código. Dado que EA está confirmado, estas búsquedas (lecturas de memoria) aparecen en el bus de memoria externa , con PSEN
afirmado. Cuando PSEN
NO se afirma en una operación de lectura de memoria externa, es una lectura de espacio de datos.
¿Qué sucede si enciendo el sistema?
El 8032 comienza a obtener instrucciones del espacio de código dirección 0.
¿Cómo ejecuta las instrucciones el contador de programa del microcontrolador 8032?
El El contador de programa es simplemente responsable de mantener la dirección de la siguiente instrucción que se ejecutará. Otras partes de la CPU ejecutan las instrucciones.
¿Desde qué dirección de memoria externa se debe leer el programa?
Dirección 0.
Si desea utilizar interrupciones en su programa, hay otras direcciones en la memoria con poco espacio de código que están reservadas para ellas, por lo que el código que ejecutar al reiniciar eventualmente tendrá que «saltar» esas direcciones reservadas.
Comentarios
- Esta es la respuesta a la primera pregunta. Lo haré +1. ¿Podría desarrollar la segunda parte de la pregunta? Esa parte no puedo ‘ obtener ninguna pista.
- Ver la edición anterior.
Responder
El 8032, que es una variante del 8052, no tiene ROM interna para el almacenamiento de programas. En su lugar, se debe usar una ROM / EPROM / EEPROM externa para contener el programa.
Se usan dos puertos para acceder a la memoria externa: el puerto 0 (líneas P0.0-P0.7) emite el 8 bajo bits de una dirección de 16 bits y 64 K, y también sirven como bus de datos de lectura / escritura de 8 bits después de que la dirección haya sido bloqueada por la memoria externa.
P2 (líneas P2.0-P2.7 ) se utilizan para emitir los 8 bits altos de la dirección 64K de 16 bits.
Aunque el 8032 tiene 256 bytes de RAM interna, esto se puede ampliar agregando un chip de RAM en el bus de direcciones externas también .
La línea de dirección externa \ $ \ mathsf {\ small \ overline {\ text {EA}}} \ $ se mantiene baja para indicar si se está haciendo un acceso a la memoria externa del programa, de lo contrario externo Se asume RAM.
Para ejecutar código desde la memoria externa, la dirección del contador del programa se envía a las líneas de datos del Puerto 0 y del Puerto 2; luego, durante el ciclo de lectura, los bytes recuperados de la ROM en la lectura en el puerto 0 y ejecutados por el procesador.
Solo se obtiene una instrucción a la vez.
\ $ \ mathsf {\ small \ overline {\ text {PSEN}}} \ $ es una luz estroboscópica utilizada durante el acceso a la memoria del programa externo.
Comentarios
- .: ¿Pero cómo ejecuta el programa que reside en la memoria externa? Mire, no entiendo cómo funcionará la PC cuando el programa esté en la memoria externa. Quiero decir que en cada ciclo m / c obtiene un número de bytes. Luego, después de obtenerlo, el programa se ejecuta inmediatamente o todo el programa se recupera de una vez > si ese es el caso, ¿dónde se almacenará?
- .: Entonces, inicialmente
PC=0000h
. ¿Comienza a buscar bytes en cada ciclo m / cy luego lo ejecuta? Entonces en la ROM siempre debemos grabar el programa desde la dirección0000h
de lo contrario no podríamos ejecutarlo correctamente. - @learner. Correcto. Por lo general, habrá un salto en la dirección al inicio » real » del código.
- .: I hará +1 en tu respuesta. Pero si el programa se ejecuta instrucción por instrucción, ¿cómo se gestionará la referencia directa como esta?
L1:JNZ L2 .. L2:....
. - La instrucción JNZ (y otras instrucciones de salto y bifurcación) cargan la dirección de destino del salto en el contador del programa, por lo que el procesador buscará la siguiente instrucción de esa dirección, en lugar de la instrucción inmediatamente después del salto.
glue logic
? ¿Parece queLJMP
se moverá al principio del programa? Pero aquí el programa está en la memoria externa. ¿Aquí se utiliza este tipo de instrucción? Quiero decir, simples, las instrucciones se obtienen de la memoria externa y se colocan enIR
, se decodifican y ejecutan. ¿Dónde está el caso deLJMP
aquí?