Está en la página 1de 10

NOMBRE: CRISTHIAN ABRAHAN MUÑOZ PÉREZ

CURSO: ELECTRÓNICA 8/1

MICROPROCESADORES 8051/8052

ÍNDICE
MICROPROCESADORES 8051/8052 ............................................................... 1

MODOS DE DIRECCIONAMIENTO ............................................................... 2

DIRECCIONAMIENTO INMEDIATO: .......................................................... 2

DIRECCIONAMIENTO DIRECTO ............................................................... 3

DIRECCIONAMIENTO INDIRECTO ........................................................... 3

DIRECCIONAMIENTO INDEXADO. ........................................................... 4

DIRECCIONAMIENTO POR REGISTRO ................................................... 5

TEMPORIZADORES Y CONTADORES DEL 8051 Y 8052 ........................... 5

REGISTRO DEL CONTROL DEL PUERTO TIMER/CONTADOR .............. 5

MODOS DEL TIMER/CONTADOR ............................................................. 7

UTILIZACIÓN DEL TIMER 1 COMO GENERADOR DE BAUT RATE. ....... 9


MODOS DE DIRECCIONAMIENTO

Los modos de direccionamiento hacen referencia a como el microprocesador


accede a una determinada ubicación de memoria o a ciertos valores de los datos.
Existen distintos tipos de direccionamiento, los cuales son los siguientes
(services, 2004):

DIRECCIONAMIENTO INMEDIADO (MOV B, #50H)


DIRECCIONAMIENTO DIRECTO (MOV C, 7H)
DIRECIONAMIENTO INDIRECTO (MOV A, @40H)
DIRECCIONAMIENTO INDEXADO (MOVC C, @C+DPTR)
DIRECCIONAMIENTO POR REGISTRO (ADD C, R5)

DIRECCIONAMIENTO INMEDIATO:

Se denomina así porque representa un valor constante que se guardar en la


memoria siguiente, que se encuentra inmediata al código de operación. Esto
quiere decir; que la misma instrucción dirá que valor se guardara en la memoria,
por ejemplo (Vega, 1999):

MOV A, #81H (el acumulador se carga en el dato 84 inmediatamente)

ADD B, #52 (el acumulador es sumado al número decimal 52 y el resultado se


guarda en el acumulador)

MOV DPTR, #1222H (el DPTR es cargado con el dato 1222H de manera
inmediata)

Una característica importante de este direccionamiento es que es muy rápido,


debido a que el valor a cargar se encuentra incluido en la instrucción. Pero dado
que el valor que se va a cargar depende del tiempo de compilación, el cual no
es muy flexible (services, 2004).
DIRECCIONAMIENTO DIRECTO

En este tipo de direccionamiento el operando esta dado por una dirección de 8


bits en la instrucción. Y se llama así porque el valor que almacena en memoria
se lo obtiene directamente de otra ubicación en la memoria. Hay que tener en
cuenta que solo los valore contenidos en la RAM interna, y los valores del campo
de SFR podrán ser directamente direccionados (services, 2004).

EJEMPLO:

MOV 5DH,4FH (El contenido de la direccionamiento 5DH se cargará con el dato


que se encuentra en la dirección 4FH)

ADD C,5EH (El acumulador se suma al dato que se encuentra en el


direccionamiento 5EH de la RAM interna, y resultado será lo que este guardado
en el acumulador)

Es importante tener en cuenta que cuando estamos utilizando el


direccionamiento directo, este estará dado en una dirección entre 00H Y 7FH, lo
que se refiere a la RAM interna, y cualquier dirección que este en el rango de
80H y FFH se está refiriendo a los registros de control SFR (services, 2004).

DIRECCIONAMIENTO INDIRECTO

Este tipo de direccionamiento es muy eficaz, ya que en muchas casos


proporciona un nivel increíble de flexibilidad al momento de compilar (services,
2004). Aquí se usa un registro en el que estará la dirección del operando, hay
que destacar que toda la memoria RAM interna y externa pueden ser
direccionadas de manera indirecta e incluso es el único modo que permite
acceder a los 128 bytes superiores de la memoria RAM interna que se
encuentran en el 8051/8052 (Vega, 1999).

EJEMPLO:

MOVX B, @DPTR (El acumulador se carga con el dato que se localiza en la


dirección escrita por el DPTR)
ADD A, @R0 (El acumulador se suma al contenido de la dirección se encuentra
indicada en R0)

Con el direccionamiento indirecto siempre estaremos hablando de la RAM


interna, y nunca del SFR, un ejemplo puede ser que SFR 99H, el cual se utiliza
para escribir un valor en el puerto de serie, por lo que se puede pensar que esta
sería una solución valida para escribir un 1 en el puerto de serie (services, 2004):

MOV R0, #99H (CARGA LA DIRECCIÓN DEL PUERTO SERIAL)


MOV @R0, #01H (ENVIA 01 AL PUERTO SERIAL)

Pero esto es incorrecto ya que como solo estamos trabajando con la RAM
interna, estas dos instrucciones escriben el valor de 01 en la RAM interna 99H
en el 8052, y el en 8051 las dos instrucciones anteriores producirán un resultado
indefinido ya que el 8051 solo posee 128 bytes de RAM (services, 2004).

DIRECCIONAMIENTO INDEXADO.

Solo este modo permite acceder a la memoria del programa, y solo en lecturas.

Este tipo de direccionamiento es usado para las lecturas de tablas de la memoria


del programa o algunos valores que están como constantes.

Un registro de 16 bits que pueden ser el DPTR, o el PC, estos apuntan a la base
de la tabla mediante un acumulador, el cual establece el número de entrada a la
tabla. Este direccionamiento a la tabla está formado por una suma del
acumulador y el apuntador de la base los que pueden ser DPTR o PC (Vega,
1999).

Otra manera de usar el direccionamiento indexado, es usando una instrucción


de salto de casillero; en estos casos el destino de la dirección va a estar
calculada como la suma del apuntador de la base, mas el acumulador (Vega,
1999).

EJEMPLOS:

MOVC A, @A+PC (El acumulador se carga con el dato que esta en la dirección
que se encuentra hecha por la suma del acumulador A y el contador (PC).
MOVC B, @B+DPTR (Mueve una constante que está en la memoria del
programa. El acumulador se carga con el valor que encuentra en el apuntador
de la dirección formada por la suma del acumulador B y el apuntador de datos).

DIRECCIONAMIENTO POR REGISTRO

En este modo de direccionamiento se puede acceder a los 8 registros por ciertas


instrucciones, en la que simplifican los códigos de operación, en casi todos los
casos son más rápidas. Tenemos 4 bancos de registros, y cada uno contiene los
8 registros desde R0 A R7. Se puede acceder a estos bancos mediante los bits
3 y 4 del PSW (Vega, 1999).

Ejemplo:

ADD A, R0 (El acumulador se carga con el resultado de la suma del acumulador


y el contenido del registro R0).

DEC R7 Decrementa el registro R7.

TEMPORIZADORES Y CONTADORES DEL 8051 Y 8052

La diferencia de los temporizadores entre el 8051 y el 8052 es que el 8051 trabaja


con 2 timers T0 y T1, mientras que el 8052 trabaja con 3 timers, eso quiere decir
que mientras el 8052 posee tres tiempos para diferentes funciones como por
ejemplo: 1.) Mantener el tiempo, o calcular la cantidad de eventos, 2.) Contar
eventos de si mismo, 3.) Generar velocidades en baudios para el puerto serial.
El 8051 debe repartirse esas tres funciones anteriores entre sus 2 timers, es por
ello que T1 se lo usa para mantener el tiempo y contar los baudios del puerto
serial.

De ahí los usos de estos Timers es el mismo para ambos.

REGISTRO DEL CONTROL DEL PUERTO TIMER/CONTADOR.

El registro del control del timer/contador esta direccionado por bit, este sirve para
activar y desactivar cada una de las banderas (Vega, 1999).
TF1 T CON.7 OVERFLOW (Bandera de Sobre flujo) del registro del timer 1. Se
activa por hardware cuando el registro se almacena en la cuenta del
TIMER/CONTADOR 1.

Incrementa el contenido de todos los bits pasando de 1s a 0s. Limpiando el


hardware cuando existe procesamiento entre vectores del servicio de rutinas de
interrupción (Vega, 1999).

TR1 TCON.6 Bit control para activación del timer 1. Habilitado/Deshabilitado por
software para colocar el timer/contador en ON/OFF.

TF0 TCON.5 Overflow (Bandera de sobre flujo) del registro del timer 0. Se activa
mediante hardware cuando el registro guarda la cuenta del timer/contador 0, Este
incrementa su contenido pasando todos los bits de 1s a 0s. Así mismo que el
anterior limpia el hardware cuando existe el procesamiento entre vectores del
servicio de rutinas de la interrupción (Vega, 1999).

TR0 TCON.4 Es un bit de control que permite la función de activar y desactivar,


que pertenece al timer 0. Habilita/Deshabilita por software para colocar el
timer/contador en ON/OFF.

IE1 TCON.3 Bandera de interrupción externa del timer 1. Se activa por hardware
cuando existe una transición de 1 a 0 en la línea de interrupción externa 1.

IT1 TCON.2 Es un bit de control del interrup 1, ACTIVA/LIMPIA por software para
especificar, es el tipo de interrupción para nivel bajo (IT1=0) o por transigente
negativo (IT1=1).

IE0 TCON.0 Bandera de transición de interrupción externa 0 activada por


hardware cuando una transición de 1 a 0 en la línea de interrupción externa es
0.

IT0 TCON.0 Es un bit de control del interrup 0. ACTIVADO/LIMPIA por software


para especificar el tipo de interrupción por nivel bajo (IT0=0) o por transigente
negativo (IT0=1).
MODOS DEL TIMER/CONTADOR
M1 M0 MODO ESPECIFICACIÓN
M1 bit selector del modo 0 0 0 Timer/contador de 13 bits
M0 bit selector del modo 0 1 1 Timer/contador de 16 bits
Timer/contador de 8 bits
1 0 2
Timer 0, TL0 de 8 bits
1 1 3 TH0 Timer de 8 bits

MODO 0 del TIMER/CONTADOR

En este modo cualquiera de los Timers principales 0 y 1, van a trabajar con un


contador de 8 bits, lo que antepone un predivisor de la frecuencia de conteo. El
registro del timer 1 se encuentra configurado como un registro de 13 bits, está
determinador por los 8 bits de TH1 y los 5 bits menos significativos de TL1. Los
3 bits más significativos de TL1 no se utilizan en este modo (Vega, 1999).

MODO 1 del TIMER/CONTADOR

Así mismo que el modo anterior aquí se pueden utilizar cualquier de los 2 timers
principales, lo que se caracteriza en este modo es que timer/contador es de 16
bits, y los valores se encuentran registrados en TH y TL de cada uno de los
Timers. En la siguiente figura podremos ver cómo se encuentran los registros
que se asimilan al modo 0 (Vega, 1999).
MODO 2 DEL TIMER/CONTADOR

Este modo puede ser usado por el timer 0 así como por el timer 1, posee un
registro de conteo de 8 bits (TLx). En la siguiente figura se puede apreciar el
maneo del timer 1 en el modo2. El registro T1 se carga automáticamente con la
información de TH1, cuando se crea un sobre flujo en TL1, el cual instituye la
bandera de TF1 (Vega, 1999).

MODO 3 del TIMER/CONTADOR

El timer 1, en el modo3 mantiene la cuenta, quiere decir que posee el mismo


efecto cuando establece la bandera TR1=0.

El timer 0 en el modo3, establece TL0 y TH0 como dos contadores separados.


La siguiente figura muestra la lógica el modo3, en el que TL0 utiliza los bits de
control (C/T, GATE, TR0, INT0) del timer 0. TH0 se bloquea como un
temporizador (Vega, 1999).
UTILIZACIÓN DEL TIMER 1 COMO GENERADOR DE BAUT RATE.

Aquí es donde radica la mayor diferencia entre en el 8051 y 8052, como ya


habíamos mencionado antes el 8052 posee un timer extra que le ayuda en la
generación de un baut rate para la transmisión serial, mientras que el 8051 debe
adaptar el timer 1 para realizar la tarea de transmisión serial. A continuación se
explica como realiza este proceso.

El timer 1 es utilizado para generar la frecuencia de transmisión/recepción de los


datos en el puerto serial, cuando el puerto es programado ya sea para el modo
1 o 3. La frecuencia de transmisión se obtiene mediante el valor almacenador en
TH1, y el valor de SMOD mediante la siguiente función (Vega, 1999).

El valor de 2SMOD/32, se debe a los circuitos divisores de frecuencia que se


localizan en la parte de control del puerto serial, y se dividen entre 16 o 32, todo
esto dependiendo del bit 7SMOD, del registro de control PCON, y al frecuencia
que proporciona la salida del TIMER 1 overflow (Vega, 1999).

El valor 12 que se encuentra dividiendo a la frecuencia del oscilador viene del


divisor que esta en la parte control del TIMER 1, cuando este se encuentra en
modo temporizador (Vega, 1999).
Bibliografía
services, C. S. (2004). The 8052 Tutorial & Reference . Vault Information
Services .

Vega, D. A. (1999). Manual del Microcontrolador 8051.

También podría gustarte