Programacion del Microcontrolador II

Anuncio
El Microcontrolador 8051
CAP 4
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.
_________________________________________________________________________
ITMAR, Mazatlán
36
Ing. Rufino J. Domínguez Arellano
El Microcontrolador 8051
CAP 4
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:
SALTA:
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
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.
_________________________________________________________________________
ITMAR, Mazatlán
37
Ing. Rufino J. Domínguez Arellano
El Microcontrolador 8051
CAP 4
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
AJMP
AJMP
AJMP
AJMP
SALTO0
SALTO1
SALTO2
SALTO3
SALTO4
_________________________________________________________________________
ITMAR, Mazatlán
38
Ing. Rufino J. Domínguez Arellano
El Microcontrolador 8051
CAP 4
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:
LAZO:
MOV CONTADOR, #10
---------------------------------------------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.
_________________________________________________________________________
ITMAR, Mazatlán
39
Ing. Rufino J. Domínguez Arellano
El Microcontrolador 8051
CAP 4
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.
LAZO:
MOV A, P0
---------------------------------------------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’.
_________________________________________________________________________
ITMAR, Mazatlán
40
Ing. Rufino J. Domínguez Arellano
El Microcontrolador 8051
CAP 4
4.3 “SET” DE INSTRUCCIONES DE LA FAMILIA 8051.
_________________________________________________________________________
ITMAR, Mazatlán
41
Ing. Rufino J. Domínguez Arellano
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
Descargar