Hadwere 8051
Enviado por ismaelferreyra • 18 de Febrero de 2014 • 9.212 Palabras (37 Páginas) • 414 Visitas
MICROCONTROLADORES BASADOS EN EL CPU 80C51
DESCRIPCION GENERAL
El microcontrolador original de 8 bits con cpu 80C51 fue fabricado por Intel. Es obvio que la paténtenle tiene algo así como una caducidad, por lo que una vez pasado el periodo de producción exclusiva del microcontrolador por parte de Intel de acuerdo a la protección de patentes, se liberó su fabricación y otras compañías tales como Phillips y Atmel crearon nuevos microcontroladores de 8 bits con el cpu del 80C51.
Pines del 8031
Del lado izquierdo, se muestra la distribución de pines del más básico de los microcontroladores basados en el 80C51: el 80C31. El que se muestra es la versión en empaque DIP, aunque existen versiones para montaje superficial.
Cada nuevo fabricante de estos microcontroladores le ha ido agregando características adicionales tales como memoria EPROM interna, o más puertos seriales, o convertidores A/D, cosas que obviamente el microcontrolador original no tiene.
Una de las características mas atractivas sea quizás que el conjunto de instrucciones es bastante reducido y muy parecido a la programación de los microprocesadores Intel x86. Esto es, las instrucciones e incluso los modos de direccionamiento son muy similares por lo que personas que acostumbran programar en lenguaje ensamblador para x86 no tienen mucha complicación para programar estos microcontroladores.
En la actualidad, el 8031, para entrar en materia, es un microcontrolador muy versátil para aplicaciones de control no tan especializado dado su bajo costo y facilidad de programación. Es por eso que puede tomarse como un dispositivo con el cual puede aprenderse lenguaje ensamblador y comprender de manera más sencilla como funciona un microcontrolador para después adentrarse al manejo de microprocesadores.
Esperando que este material sea de ayuda, se describirá en primera instancia el hardware que constituye al microcontrolador; posteriormente se describirán el conjunto de instrucciones y finalmente se expondrán ejercicios de programación básica en ensamblador.
ORGANIZACIÓN DE MEMORIA
Toda la familia 8051 tiene separados los espacios de memoria de programa y memoria de datos como se muestra en las figuras 1 y 2. La separación lógica de ambos tipos de memoria permite que la memoria de datos pueda ser accesada con un direccionamiento de 8 bits con lo cual se puede almacenar y manipular fácilmente. Sin embargo, también se pueden generar direcciones de 16 bits utilizando el registro DPTR.
La memoria de programa (ROM, EPROM, etc...) únicamente puede ser leída, como cualquier ROM. Se pueden tener hasta 64KB de programa de memoria. En el 8051, los 4KB más bajos de memoria de programa son internos (on-chip). En las versiones sin ROM, toda la memoria de programa es externa. El pulso que permite la lectura de memoria de programa externa es (program store enable).
La memoria de datos (RAM) ocupa direccionamiento separado de la memoria de programa. En el 8051, los 128 bytes más bajos de memoria de datos son internos (on-chip). Se puede direccionar hasta 64KB de memoria de datos externa (RAM). El CPU genera señales de lectura y escritura ( ) durante los accesos de memoria RAM externa.
Figura 1.- Diagrama a bloques del 8051
Figura 2.- estructura de memoria del 80C51
Las memorias de programa o datos externas pueden ser combinadas si así se desea al aplicar las señales RD y PSEN a las entradas de una compuerta AND y usar la salida de esta compuerta como pulso de lectura para memoria de programa/datos externa.
MEMORIA DE PROGRAMA
Figura 3.- parte mas baja de la memoria de programa
En la figura 3 se muestra la parte baja de la memoria de programa.
Después de un reset, el CPU comienza su ejecución de la localidad 0000H. Como se muestra en la figura 3, cada interrupción tiene una localidad de memoria fija dentro de la memoria de programa.
Cuando ocurre una interrupción, entonces el CPU brinca a la localidad de memoria de programa correspondiente al inicio de dicha interrupción en donde a su vez, debe haber una instrucción de salto a la rutina de servicio a la interrupción.
Por ejemplo, la interrupción externa 0 tiene asignada la localidad de memoria de programa 0003H como inicio de dicha interrupción; si se va a utilizar esta interrupción, entonces en la dirección 0003H de la memoria de programa debe iniciar la rutina de servicio a dicha interrupción; muchas de las veces, como las rutinas son grandes, en la localidad 0003H se encuentra una instrucción de salto que redirecciona el flujo de programa al lugar en donde se encuadra como tal la rutina de servicio a la interrupción.
A partir de la dirección inicial reservada para cada interrupción se disponen de 8 bytes de distancia hasta la próxima dirección de inicio de otra interrupción. Entonces los inicios de interrupciones están espaciados entre sí 8 bytes.
Cabe señalar que si no se utiliza alguno de los espacios de memoria de programa reservados para el manejo de las interrupciones, éstos se pueden utilizar como memoria de programa de propósito general.
Los 4Kb mas bajos de la memoria de programa pueden residir dentro del microcontrolador o fuera de el. Esta selección se hace vía hardware al poner a uno o cero el pin . Si este pin está a cero, entonces se le indica al CPU que tiene que general las señales necesarias para leer el programa desde una memoria ROM externa; Si este pin está a uno, entonces se le indica al CPU que el programa está dentro de el y no tiene que generar las señales de control para un acceso externo a memoria de programa. En las versiones sin ROM interna siempre se debe poner a cero este para que el programa se pueda leer desde una memoria ROM externa como es el caso del 8031.
Una vez seleccionado el lugar desde donde el CPU debe ejecutar el programa y suponiendo que el programa está en una memoria externa, es necesario conocer el proceso que el CPU sigue para poder leer el programa. En la figura 4 se muestra como debe realizarse la interfaz entre el microcontrolador y la memoria ROM externa para ejecutar el programa desde ésta última.
Figura 4.- conexión externa del μP con una memoria ROM externa
Cuando el CPU debe leer una instrucción desde la memoria, ejecuta una seria de operaciones antes de leer la instrucción. Este proceso se describe a continuación:
a) Se genera el byte bajo de la dirección a través
...