You are on page 1of 11

El Microcontrolador 8051 CAP 4

_________________________________________________________________________
ITMAR, Mazatlán 36 Ing. Rufino J. Domínguez Arellano
CAPITULO 4


Programación de los Microcontroladores 8052/8051 (II)

4.1. INSTRUCCIONES BOOLEANAS.

La familia de microcontroladores 8051 incluye un procesador booleano. Esto es,
un procesador especializado en manipular bits. Existen dos áreas dxe memoria
que permiten el acceso “bit a bit”; una corresponde al segmentote RAM interna
entre las direcciones 20H a 2FH, en total 128 bits, y la otra corresponde a la
primera columna de SFR señalada en la tabla 2.2. Esto es de gran utilidad ya que
permite el verificar el estado de bits particulares de este grupo de registros.

La tabla 4.2 muestra el conjunto de instrucciones que permiten la manipulación de
bits.






El Microcontrolador 8051 CAP 4
_________________________________________________________________________
ITMAR, Mazatlán 37 Ing. Rufino J. Domínguez Arellano
Ejemplos:

A) Poner el Acarreo a 1 si el bit 0 del puerto P1 es ‘1’, el bit 7 del acumulador es ‘1’
y la bandera OV = 0.

MOV C, P1.0 ; Carga el acarreo (C) con P1.0

ANL C, A.7 ; Operación AND entre el acarreo (C) y A.7

ANL C, /OV ; Operación AND entre el acarreo (C) y el
; complemento de OV

B) Efectuar la operación XOR entre los bits P0.0 y P1.1, dejando el resultado en
P2.7.

La instrucción XOR no existe en la familia 8051. Se debe implementar por algoritmo:

MOV C, P0.0 ; Cargo P0.0 al acarreo.

JNB P1.1, SALTA ; Si P1.1 = 0, C tiene el resultado correcto, y entonces
; salta. Si P1.1 = 1 hay que complementar C.
CPL C

SALTA: MOV P2.7, C

4.2. INSTRUCCIONES DE SALTO.

Existen dos tipos de salto: los incondicionales y los condicionales. Ahora se
detalla cada uno.

4.2.1. Instrucciones de salto incondicional.

La tabla 4.3 muestra la lista resumida de saltos incondicionales.


El Microcontrolador 8051 CAP 4
_________________________________________________________________________
ITMAR, Mazatlán 38 Ing. Rufino J. Domínguez Arellano
SJMP rel (Short Jump). La dirección destino del salto viene dada por un
«offset relativo», igual que en las instrucciones de salto booleanas. La instrucción
tiene dos bytes, correspondientes al código de operación y al byte de offset
relativo. El rango del salto está limitado a -128 y+ 127 bytes relativos al primer byte
siguiente a la instrucción de salto.

PC ← (PC) + 2
PC ← (PC) + rel

LJMP addr16 (Long Jump). La dirección destino del salto viene dada
por una constante de 16 bits. La instrucción está formada por 3 bytes. 1 byte para
el código de operación y 2 para la dirección del salto. Por tanto, la dirección de
destino está ubicada dentro del área de los 64K de la memoria de programa.


PC ← addr16


AJMP addr11 (4bsolute Jump). La dirección destino del salto viene dada
por una constante de 11 bits. La instrucción tiene 2 bytes, uno para el código de
operación que también contiene en si misma 3 de los 11 bits de direcciones, y otro
byte que contiene los 8 bits bajos de la dirección de destino. Por tanto, el destino
del salto tiene que estar comprendido dentro del bloque de los 2 KB referenciado
respecto a la siguiente instrucción a la del salto.

PC ← (PC) + 2
(PC.10-0) ← dirección de la página

JMP @A + DPTR Se trata de una instrucción de salto indirecto. Suma el
acumulador con los 16 bits del puntero de datos DPTR y carga el resultado en PC.
Esta será la dirección para el siguiente ciclo fetch.

Ejemplo: Se trata de establecer cinco caminos de ramificación del programa,
dependiendo de que el acumulador tome valores entre 0 y 4:

MOV DPTR, #TABLA_DE SALTO ; Cargo direccion de tabla.

MOV A, VALOR ; Valor entre 0 y 4

RL A ; Multiplico por 2.

JMP @A + DPTR ; Se realiza el salto.

- - -

TABLA_DE SALTO: AJMP SALTO0
AJMP SALTO1
AJMP SALTO2
AJMP SALTO3
AJMP SALTO4
El Microcontrolador 8051 CAP 4
_________________________________________________________________________
ITMAR, Mazatlán 39 Ing. Rufino J. Domínguez Arellano
4.2.2. Instrucciones de salto condicional.

La tabla 4.4 muestra la lista de instrucciones de salto condicional. Estas
instrucciones permiten al microcontrolador tomar decisiones en base a
condiciones que resulten en el momento de ejecución del programa. En todos los
casos, el salto es relativo, lo que significa que la dirección destino debe localizarse
dentro de los -128 y +127 bytes a partir de la siguiente instrucción a la del salto
condicional.


JZ y JNZ. Salta si es cero y salta si no es cero, respectivamente. En este
procesador, puesto que no existe un indicador de CERO (como en otros micros),
se examina directamente el registro acumulador.


DJNZ Decrementa el byte indicado y salta si el resultado NO es cero. Útil
para implementar bucles:

MOV CONTADOR, #10
LAZO: ----------------
----------------
----------------
DJNZ CONTADOR, LAZO

CJNE Compara y salta si no son iguales. Se puede comparar A con un
byte, que puede ser con direccionamiento indirecto, directo, por registro o
inmediato. O bien se puede comparar un byte con una constante.






El Microcontrolador 8051 CAP 4
_________________________________________________________________________
ITMAR, Mazatlán 40 Ing. Rufino J. Domínguez Arellano
Ejemplos:

A) Ejecutar las instrucciones de un lazo hasta que la lectura de un periférico en P0
coincida con la localidad de memoria 7FH.

MOV A, P0
LAZO: ----------------
----------------
----------------
CJNE A, 7F, LAZO

B) Implementar las comparaciones “mayor que” y “menor que”.

Si de los dos bytes del campo de operandos, el primero es menos que el segundo,
entonces el acarreo (C) se pone a ‘1’. Si el primer byte es mayor o igual que el segundo, el
acarreo toma el valor ‘0’.



















El Microcontrolador 8051 CAP 4
_________________________________________________________________________
ITMAR, Mazatlán 41 Ing. Rufino J. Domínguez Arellano

4.3 “SET” DE INSTRUCCIONES DE LA FAMILIA 8051.

El Microcontrolador 8051 CAP 4
_________________________________________________________________________
ITMAR, Mazatlán 42 Ing. Rufino J. Domínguez Arellano
















El Microcontrolador 8051 CAP 4
_________________________________________________________________________
ITMAR, Mazatlán 43 Ing. Rufino J. Domínguez Arellano







El Microcontrolador 8051 CAP 4
_________________________________________________________________________
ITMAR, Mazatlán 44 Ing. Rufino J. Domínguez Arellano






El Microcontrolador 8051 CAP 4
_________________________________________________________________________
ITMAR, Mazatlán 45 Ing. Rufino J. Domínguez Arellano
























El Microcontrolador 8051 CAP 4
_________________________________________________________________________
ITMAR, Mazatlán 46 Ing. Rufino J. Domínguez Arellano