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