SlideShare una empresa de Scribd logo
El Microcontrolador 8051                                                                       CAP 3


                                                                                   CAPITULO 3


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

3.1. INTRODUCCION

Todos los modelos de la familia 51 ejecutan el mismo conjunto de instrucciones.
Estas instrucciones están optimizadas para el control de aplicaciones en 8 bits.
Están provistas de una buena variedad de modos de direccionamiento para
acceder a la memoria RAM de datos internos del microcontrolador, facilitando
operaciones del tipo byte sobre una pequeña estructura de datos. Permiten la
manipulación directa de control y procesamiento booleano de estructuras de datos
del tamafio de un bit.

En esta breve introducción se estudiarán los modos de direccionamiento y el juego
de instrucciones agrupadas por especialidades de esta manera:

   • Instrucciones aritméticas.
   • Instrucciones lógicas.
   • Instrucciones para la transferencia de datos en:
     a) RAM interna.
     b) RAM externa.
   • Instrucciones para el tratamiento de tablas.
   • Instrucciones booleanas.
   • Instrucciones de salto.


3.2. MODOS DE DIRECCIONAMIENTO

   • Direccionamiento directo
El operando se especifica en la instrucción por un campo de dirección de 8 bits.
Sólo la RAM interna de datos (primeros 128 bytes) y la zona de SFR se pueden
direccionar de esta forma.

Ejemplo:

       ADD A,3BH ;         es decir, suma (ADD) el contenido del acumulador con el contenido
                           de la posición de memoria (38):
                                   A ← (A) + (38)


       Nota: Un registro o número entre paréntesis se refiere al contenido. Asi:
                (A) es el contenido del acumulador.
                (38) es el contenido de la posición de memoria 38.

_________________________________________________________________________
ITMAR Mazatlán                      24       Ing. Rufino J. Domínguez Arellano
El Microcontrolador 8051                                                       CAP 3


   • Direccionamiento indirecto
La instrucción especifica un registro que contiene la dirección del operando. Tanto
la memoria RAM interna (256 bytes/128 bytes) como la externa se pueden
direccionar indirectamente.

Los registros para direccionar sobre el mapa de 8 bits pueden ser el R0 y R1 del
banco de registros seleccionado, o el Stack Pointer. El registro para direccionar
sobre 16 bits sólo puede ser el Puntero de Datos (Data Pointer = DPTR).

Ejemplo:

      ADD A,@R0          ; Así, si (RO)=38H la operación será:
                            A ← (A) + (38)
                           Igual que en el ejemplo anterior-
      (@) es el identificador del direccionamiento indirecto.



   • Direccionamiento por registro
Los Microcontroladores 8052/8051, como se ha visto, contiene cuatro bancos de
registros seleccionados por los bits 3 y 4 del PSW, y cada banco de registros tiene
ocho registros del R0 al R7 (véase Apartado 2.5). El propio código de operación
de la instrucción especifica con qué registro se opera; es decir, cuando la
instrucción es ejecutada se accede a uno de los 8 registros del banco
seleccionado.


Ejemplos:

      MOV Rn,A         ; operación: (Rn) ← (A)

      MOV Rn, #dato ; operación: (Rn) ← #dato



   • Direccionamiento implícito
Algunas instrucciones especifican, implícitamente, el registro sobre el que van a
operar, como el acumulador, el puntero de datos, etc. No necesitan especificar el
operando porque está implícito en el código de operación.

Ejemplos:
      INC A            ; Incrementa el contenido del acumulador: A ← (A) + 1


      INC DPTR         ; Incrementa puntero de datos: DPTR ← (DPTR) + 1




_________________________________________________________________________
ITMAR Mazatlán                      25       Ing. Rufino J. Domínguez Arellano
El Microcontrolador 8051                                                               CAP 3


   • Direccionamiento inmediato
Al código de operación le sigue una constante en la memoria de programas.

Ejemplo:

      MOV A, #255    ; Carga en el acumulador el número decimal 255. Generalmente se expresan ;
                     ; en hexadecimal:
      MOV A, #FFH
                    ; o en binario:
      MOV A, #11111111B



   • Direccionamiento indexado
Este direccionamiento sólo es posible en la memoria de programas y sólo permite
la lectura. Es utilizado para la lectura de tablas. Un registro base de 16 bits (el
DPTR o el contador de programa) apunta a la base de la tabla y el contenido del
acumulador es el offset que permite acceder a la lectura de esa posición de la
tabla. Es decir, la dirección de la tabla que se va a acceder está formada por la
suma del acumulador y el puntero base.

Se puede utilizar otro tipo de direccionamiento indexado en las instrucciones de
salto. En este caso la dirección de destino del salto se calcula como la suma del
puntero base y el dato del acumulador.



3.3. CICLO DE INSTRUCCION

La ejecución de un ciclo de instrucción comienza en el estado 1 del ciclo máquina,
cuando el código de operación es almacenado en el Registro de Instrucción. (Para
comprender este apartado tener a la vista la Figura 3.1 y la Tabla 4.5, Set de
Instrucciones.)

Como norma general, una instrucción requiere de uno q más ciclos máquina, en
función de:

      a) El código de operación

       Por ejemplo, la instrucción INC A (Figura 3.1 A) tiene 1 byte de instrucción y
requiere 1 ciclo máquina, la instrucción INC DPTR, también, de 1 byte de
instrucción requiere de 2 ciclos máquina (Figura 3.1 C) y la instrucción MUL AB
requiere de 4 ciclos máquina para su total ejecución y ocupa 1 byte en la memoria.

      b) El número de bytes


_________________________________________________________________________
ITMAR Mazatlán                      26       Ing. Rufino J. Domínguez Arellano
El Microcontrolador 8051                                                    CAP 3

       Por ejemplo, la instrucción MOV A, #data tiene 2 bytes de instrucción y
requiere de 1 ciclo máquina (Figura 3.1 B). En cambio la instrucción MOV direct, #
data al constar de 3 bytes necesita de 2 ciclos máquina. Esto no ocurre siempre,
es decir, a más bytes más ciclos máquina, como puede verse en la Figura 3.1 B
correspondiente a la instrucción MOV A, #data y en la Figura 3.1 D MOVX A,@Ri,
la primera instrucción tiene 2 bytes y la segunda sólo 1. en cambio la primera
requiere 1 ciclo máquina y la segunda 2.

Ante la imposibilidad de establecer una norma o regla que facilite el conocimiento
del número de bytes y ciclo de instrucción se ha editado la Tabla 4.5 con el set
completo de instrucciones. Cabe destacar, también, en la Figura 3.1, que en cada
ciclo máquina se producen 2 accesos a la memoria, el primero, si es comienzo de
ciclo de instrucción, siempre leerá el código de operación, el segundo, que
normalmente se descarta, se utiliza para leer el segundo byte, operando de la
instrucción, como ocurre en la Figura 3.1 B.



3.4. TIPOS DE INSTRUCCIONES

El set de instrucciones del 8052/8051 se puede dividir según las especialidades:

   •   Instrucciones aritméticas.
   •   Instrucciones lógicas.
   •   Instrucciones de transferencia de datos.
   •   Instrucciones booleanas
   •   Instrucciones de salto.

Las instrucciones aritméticas, lógicas, de transferencia y de salto son comunes a
la mayoría de microprocesadores. Los microcontroladores tienen un área especial
de aplicación, que es el área del control de procesos; en este campo las
operaciones están orientadas, muy a menudo, al bit. Los microcontroladores leen,
procesan, escriben e intercambian información con los sistemas exteriores, en
formato «bit a bit> o «palabra a palabra». Un procesador booleano con un set de
instrucciones booleanas muy completo se encarga de realizar este tipo de
operaciones, que, como ya hemos dicho, están «orientadas al bit>. Esta
particularidad, así como su inmunidad al ruido eléctrico, le hacen valioso en el
mundo del control de procesos industriales




_________________________________________________________________________
ITMAR Mazatlán                      27       Ing. Rufino J. Domínguez Arellano
El Microcontrolador 8051                                                   CAP 3




3.5. INSTRUCIONES ARITMETICAS.

En la tabla 3.2, se muestra el menú de las instrucciones aritméticas del 8051. Se
indican en la tabla los diferentes modos de direccionamiento que se pueden usar
en cada caso y los indicadores de estado que son afectados. Los tiempos de
ejecución que se indican en la tabla están evaluados sobre una frecuencia de relo
de 12 MHz.




_________________________________________________________________________
ITMAR Mazatlán                      28       Ing. Rufino J. Domínguez Arellano
El Microcontrolador 8051                                                    CAP 3




La instrucciónb MUL AB multiplica el contenido del acumulador con el dato situado
en B y el producto, de 16 bits, aparece en los registros B:A (sobrescribe los
operandos)

La instrucción DIVAB divide el contenido del acumulador con el dato del registro B,
apareciendo el resultado en A (el cociente) y B ( el residuo).


3.6 INSTRUCCIONES LOGICAS.


La tabla 3.3 muestra la lista de operaciones lógicas, modos de direccionamiento
disponibles e indicadores de estado. Observe que en este grupo se incluyen las
instrucciones de rotación a la izquierda y a la derecha.




_________________________________________________________________________
ITMAR Mazatlán                      29       Ing. Rufino J. Domínguez Arellano
El Microcontrolador 8051                                                    CAP 3




3.7. INSTRUCCIONES DE TRANSFERENCIA DE DATOS

Se consideran tres modalidades, según la transferencia se realice sobre:
   • La RAM interna.
   • La RAM externa.
   • La memoria de programa para el tratamiento de tablas. .


3.7.1. Transferencia de datos sobre la RAM interna

En la Tabla 3.4 se muestra la tabla de instrucciones disponibles para mover datos
dentro de los espacios de memoria RAM interna, considerando los distintos
direccionamientos para cada una de las instrucciones.

   •   La instrucción MOV <dest>, <src> permite transferir datos entre alguna de
       las dos RAM interna o el espacio de localización del SFR (referencia Figura
       2.8). Este tipo de instrucción permite la transferencia sin afectar el
       acumulador.



_________________________________________________________________________
ITMAR Mazatlán                      30       Ing. Rufino J. Domínguez Arellano
El Microcontrolador 8051                                                             CAP 3




Ejemplo:

                     ; Antes de ejecutar la instrucción:
                     ; (3A) = 35H ; (3D) = 78H
MOV3AH,3DH ..
                     ; Despues de ejecutarla:
                     ; (3A) = 78H ; (3D) = 78H



   •   La instrucción MOV DPTR, #data 16, permite transferir datos de 16 bits
       para inicializar el DPTR (Data Poimer = puntero de datos) en el tratamiento
       de tablas en la memoria de programas o para acceder a los datos de la
       memoria externa.

   •   La instrucción PUSH <src> actúa incrementando el SP (Stack Pointer =
       puntero de la pila) y copiando el dato dentro de la pila. La instrucción POP
       <dest> actúa decrementando el SP y reponiendo el dato en su registro. La
       pila está situada dentro de la RAM interna, por defecto en el banco de
       registros 1 (véase Figura 2.11 ), pero puede posicionarse en el área SCRA
       TCH PAD, como se ha indicado en el capítulo anterior.

En resumen. éstas son las operaciones que realiza la unidad de control del
microcontrolador:


                       PUSH <src>                          POP <dest>
                 ----------------------------     --------------------------------

                   (SP) ← (SP) + 1                         <dest> ← ((SP))
                   ((SP)) ← <src>                           (SP) ← (SP) -1



_________________________________________________________________________
ITMAR Mazatlán                      31       Ing. Rufino J. Domínguez Arellano
El Microcontrolador 8051                                                    CAP 3


   •   La instrucción XCH A, <byte>, intercambia los datos del acumulador y del
       byte direccionado. La instrucción XCHD A, @Ri es similar a la anterior, pero
       sólo implica en el intercambio el nibble bajo; es una instrucción
       especializada en la manipulación de datos en el código BCD.

Ejemplos:
                    ; Antes de ejecutar la instrucción:
                    ; (A) = 37H y (2D) = 23H
XCH A, 2DH
                    ; Después de ejecutarla:
                    ; (A) = 23H y (2D) = 37H

                    ; Antes de ejecutar la instrucción:
                    ; (RO) = 2DH y (2D) = 37H y (A) = 23H
XCHD A, @R0
                    ; Después de ejecutarla:
                    ; (A) =27H y (2D) = 33H



3.7.2. Transferencia de datos sobre la RAM externa

La Tabla 3.5 muestra la lista de instrucciones sobre transferencia de datos que
acceden a la memoria de datos. Sólo se puede utilizar el direccionamiento
indirecto con este grupo de instrucciones.




Conviene observar que para este tipo de accesos siempre interviene el
acumulador como registro fuente o destino.


El usuario debe escoger entre el tipo de instrucción MOVX A, @Ri o MOVX @Ri,A
(siendo Ri, bien el registro R0 o R1 del banco de registros seleccionado),
direccionando con 8 bits, o bien utilizar un direccionamiento de 16 bits, usando el

_________________________________________________________________________
ITMAR Mazatlán                      32       Ing. Rufino J. Domínguez Arellano
El Microcontrolador 8051                                                                   CAP 3

registro DPTR (MOVX A,@DPTR o MOVX @DPTR,A) y tener que sacrificar el
Puerto 2, cuando sólo se va a utilizar un pequeño espacio de memoria RAM.
Existe una solución intermedia que permite direccionar sólo unos pocos Kbytes de
RAM externa, pero obteniendo algunas líneas hábiles del Puerto 2 como entradas
y salidas (E/S). Esta es la solución que se mostró en la Figura 2.7 del Capítulo 2.
De todas formas la solución adecuada debe ser función de las características que
necesita la aplicación, suponiendo, en principio, que la implementación de la
misma sobre la elección de los Microcontroladores 8052/8051 sea la correcta.


Las líneas de control de lectura y escritura, RD y WR (pines 16 y 17), sólo son
utilizadas cuando se ejecutan las instrucciones MOVX; si no se va a utilizar
memoria RAM externa, es obvio que se ganarán unas líneas extras de E/S (Figura
2.7).



Ejemplo: Estudiar la secuencia de instrucciones.

MOVX A, @Rl
MOVX@RO,A




Nota: Este ejemplo se podría realizar con el Microcontrolador 8052, en el espacio de memoria
      RAM interna Que se solapa con el área SFR. Si se refiere al Microcontrolador 8051,
      debería ser implementada esta operación, obligatoriamente. en el espacio de memoria
      externa. Naturalmente, si utiliza la memoria interna, las instrucciones que debe utilizar son
      MOV A., @R1 y MOV @R0, A.



¿Qué sucedería si se tuvieran que implementar estas instrucciones en la zona de
memoria por encima de la dirección 2000H? Es decir:



_________________________________________________________________________
ITMAR Mazatlán                      33       Ing. Rufino J. Domínguez Arellano
El Microcontrolador 8051                                                    CAP 3

                           sustituida
                    85H      → 2085H
                    F3H      → 20F3H

Se llegaría a la conclusión de que no se podrían procesar estas instrucciones,
contando que los registros R0 y R1 no pueden direccionar por encima de la
posición de memoria FFH. Pero aquí es donde entran en juego las instrucciones
MOVX con el DPTR como operando. La sustitución, en el caso de tener que
operar en el espacio de memoria comprendido entre 0000H y FFFFH, sería:


                       sustituida
         MOVX A, @Ri       →        MOVX A, @DPTR
         MOVX @Ri, A       →        MOVX @DPTR, A

Recuérdese que en la Tabla 3.4 hay una instrucción que es:

      MOV DPTR, #data16

Con la que se podría acceder a todo el mapa de memoria.



3.7.3. Memoria de programas para el tratamiento de tablas


La Tabla 3.6 muestra las dos instrucciones disponibles para la lectura de tablas en
la memoria de programa (independientemente del algoritmo que pueda crear el
usuario con otras instrucciones). Obsérvese que las tablas sólo pueden ser leídas
y no actualizadas. El nemónico es MOVC (Mover Constante).

Si la tabla accede a la memoria de programa externa, recordar que esta lectura es
autorizada por la señal de control PSEN (pin 29). Obsérvese la Figura 2.5 del
capítulo anterior .




_________________________________________________________________________
ITMAR Mazatlán                      34       Ing. Rufino J. Domínguez Arellano
El Microcontrolador 8051                                                   CAP 3



La primera instrucción de la tabla permite la lectura en tablas con accesos no
superiores a 256. El acceso deseado es cargado en el acumulador, y el Data
Pointer (DPTR) establece el puntero de comienzo de la tabla. La lectura es
cargada dentro del registro acumulador.

      MOVC A, @A+DPTR      ; A ← ((A) + (DPTR))

La segunda instrucción es similar a la primera, salvo que es el Pogram Counter
(PC) el que actúa como indicador de la dirección base de la tabla.

                           ; PC ← (PC) + 1
      MOVC A, @A+PC        ; A ← ((A) + (PC))



Se presenta esta instrucción dentro de una subrutina, estando la tabla de
información después de la instrucción de retorno de la subrutina (RET).


Ejemplo:      Se trata de demostrar el funcionamiento sobre una tabla de 4 datos.
A la izquierda aparece el mapa de memoria del programa.




_________________________________________________________________________
ITMAR Mazatlán                      35       Ing. Rufino J. Domínguez Arellano

Más contenido relacionado

PPTX
Modos de direccionamiento
PPTX
introduccion a la programacion de los microcontroladores motorola-freescale
PPT
Microcontrolador
PDF
Modos de Direccionamiento
PDF
Formatos de instrucción
PPT
Cm Sesion No 2
PPTX
Registros de control y estados de la CPU
PDF
ENSAMBLADOR PIC 8086
Modos de direccionamiento
introduccion a la programacion de los microcontroladores motorola-freescale
Microcontrolador
Modos de Direccionamiento
Formatos de instrucción
Cm Sesion No 2
Registros de control y estados de la CPU
ENSAMBLADOR PIC 8086

La actualidad más candente (15)

PPTX
Modos de direccionamiento y formatos
PPTX
Casos de estudio de cpu reales
DOCX
Microprocesadores
PPTX
Ciclos de instrucciones 8085
PPTX
Modos de Direccionamiento del Procesador
PPT
Procesador
PPTX
Registros del cpu!
PDF
Registro de estado finalizado
PDF
Esamblador8086
PPTX
Arquitectura x86_ Registros
DOCX
Definición de registro de procesador
DOCX
Modos de Direccionamiento del Procesador (IEEE)
PPTX
Emsamblador
PDF
7842803 capitulo2-arquitectura-del-a tmega32-espanol
PDF
Lenguaje ensamblador del microprocesador
Modos de direccionamiento y formatos
Casos de estudio de cpu reales
Microprocesadores
Ciclos de instrucciones 8085
Modos de Direccionamiento del Procesador
Procesador
Registros del cpu!
Registro de estado finalizado
Esamblador8086
Arquitectura x86_ Registros
Definición de registro de procesador
Modos de Direccionamiento del Procesador (IEEE)
Emsamblador
7842803 capitulo2-arquitectura-del-a tmega32-espanol
Lenguaje ensamblador del microprocesador
Publicidad

Similar a 3 programacion (20)

PPTX
INTRODUCCION A LA PROGRAMACION DE LOS MICROCONTROLADORES MOTOROLA-FREESCALE
PPTX
Indexado con desplazamiento
DOC
Práctica #2 parcial #2 registros del banco
PDF
Ejercicios Ordenador_zuz (1).pdf
PDF
Instrucciones del-8085 eiee
PDF
Logica de automatizacion de procesos
DOCX
Diseño de una computadora básica
DOC
Introducción pic 16 f 84 universidad de la marina mercante
PPTX
Microprocesadores
 
PPTX
upc algoritmos 02
 
PPTX
Microprocesadores
 
PDF
ELECTIVA 3 - MICROPROCESADORES
PDF
Curso de microcontrolador MCS51
PPTX
CAPACIDAD DE LA UNIDAD DE PROCESAMIENTO
DOC
Apuntes del pic 16f84
PPSX
Yeimir rincon 20%
PPT
Niple diapopsitiva
PPT
Niple diapopsitiva
PPT
Niple diapopsitiva
INTRODUCCION A LA PROGRAMACION DE LOS MICROCONTROLADORES MOTOROLA-FREESCALE
Indexado con desplazamiento
Práctica #2 parcial #2 registros del banco
Ejercicios Ordenador_zuz (1).pdf
Instrucciones del-8085 eiee
Logica de automatizacion de procesos
Diseño de una computadora básica
Introducción pic 16 f 84 universidad de la marina mercante
Microprocesadores
 
upc algoritmos 02
 
Microprocesadores
 
ELECTIVA 3 - MICROPROCESADORES
Curso de microcontrolador MCS51
CAPACIDAD DE LA UNIDAD DE PROCESAMIENTO
Apuntes del pic 16f84
Yeimir rincon 20%
Niple diapopsitiva
Niple diapopsitiva
Niple diapopsitiva
Publicidad

3 programacion

  • 1. El Microcontrolador 8051 CAP 3 CAPITULO 3 Programación de los Microcontroladores 8052/8051 (I) 3.1. INTRODUCCION Todos los modelos de la familia 51 ejecutan el mismo conjunto de instrucciones. Estas instrucciones están optimizadas para el control de aplicaciones en 8 bits. Están provistas de una buena variedad de modos de direccionamiento para acceder a la memoria RAM de datos internos del microcontrolador, facilitando operaciones del tipo byte sobre una pequeña estructura de datos. Permiten la manipulación directa de control y procesamiento booleano de estructuras de datos del tamafio de un bit. En esta breve introducción se estudiarán los modos de direccionamiento y el juego de instrucciones agrupadas por especialidades de esta manera: • Instrucciones aritméticas. • Instrucciones lógicas. • Instrucciones para la transferencia de datos en: a) RAM interna. b) RAM externa. • Instrucciones para el tratamiento de tablas. • Instrucciones booleanas. • Instrucciones de salto. 3.2. MODOS DE DIRECCIONAMIENTO • Direccionamiento directo El operando se especifica en la instrucción por un campo de dirección de 8 bits. Sólo la RAM interna de datos (primeros 128 bytes) y la zona de SFR se pueden direccionar de esta forma. Ejemplo: ADD A,3BH ; es decir, suma (ADD) el contenido del acumulador con el contenido de la posición de memoria (38): A ← (A) + (38) Nota: Un registro o número entre paréntesis se refiere al contenido. Asi: (A) es el contenido del acumulador. (38) es el contenido de la posición de memoria 38. _________________________________________________________________________ ITMAR Mazatlán 24 Ing. Rufino J. Domínguez Arellano
  • 2. El Microcontrolador 8051 CAP 3 • Direccionamiento indirecto La instrucción especifica un registro que contiene la dirección del operando. Tanto la memoria RAM interna (256 bytes/128 bytes) como la externa se pueden direccionar indirectamente. Los registros para direccionar sobre el mapa de 8 bits pueden ser el R0 y R1 del banco de registros seleccionado, o el Stack Pointer. El registro para direccionar sobre 16 bits sólo puede ser el Puntero de Datos (Data Pointer = DPTR). Ejemplo: ADD A,@R0 ; Así, si (RO)=38H la operación será: A ← (A) + (38) Igual que en el ejemplo anterior- (@) es el identificador del direccionamiento indirecto. • Direccionamiento por registro Los Microcontroladores 8052/8051, como se ha visto, contiene cuatro bancos de registros seleccionados por los bits 3 y 4 del PSW, y cada banco de registros tiene ocho registros del R0 al R7 (véase Apartado 2.5). El propio código de operación de la instrucción especifica con qué registro se opera; es decir, cuando la instrucción es ejecutada se accede a uno de los 8 registros del banco seleccionado. Ejemplos: MOV Rn,A ; operación: (Rn) ← (A) MOV Rn, #dato ; operación: (Rn) ← #dato • Direccionamiento implícito Algunas instrucciones especifican, implícitamente, el registro sobre el que van a operar, como el acumulador, el puntero de datos, etc. No necesitan especificar el operando porque está implícito en el código de operación. Ejemplos: INC A ; Incrementa el contenido del acumulador: A ← (A) + 1 INC DPTR ; Incrementa puntero de datos: DPTR ← (DPTR) + 1 _________________________________________________________________________ ITMAR Mazatlán 25 Ing. Rufino J. Domínguez Arellano
  • 3. El Microcontrolador 8051 CAP 3 • Direccionamiento inmediato Al código de operación le sigue una constante en la memoria de programas. Ejemplo: MOV A, #255 ; Carga en el acumulador el número decimal 255. Generalmente se expresan ; ; en hexadecimal: MOV A, #FFH ; o en binario: MOV A, #11111111B • Direccionamiento indexado Este direccionamiento sólo es posible en la memoria de programas y sólo permite la lectura. Es utilizado para la lectura de tablas. Un registro base de 16 bits (el DPTR o el contador de programa) apunta a la base de la tabla y el contenido del acumulador es el offset que permite acceder a la lectura de esa posición de la tabla. Es decir, la dirección de la tabla que se va a acceder está formada por la suma del acumulador y el puntero base. Se puede utilizar otro tipo de direccionamiento indexado en las instrucciones de salto. En este caso la dirección de destino del salto se calcula como la suma del puntero base y el dato del acumulador. 3.3. CICLO DE INSTRUCCION La ejecución de un ciclo de instrucción comienza en el estado 1 del ciclo máquina, cuando el código de operación es almacenado en el Registro de Instrucción. (Para comprender este apartado tener a la vista la Figura 3.1 y la Tabla 4.5, Set de Instrucciones.) Como norma general, una instrucción requiere de uno q más ciclos máquina, en función de: a) El código de operación Por ejemplo, la instrucción INC A (Figura 3.1 A) tiene 1 byte de instrucción y requiere 1 ciclo máquina, la instrucción INC DPTR, también, de 1 byte de instrucción requiere de 2 ciclos máquina (Figura 3.1 C) y la instrucción MUL AB requiere de 4 ciclos máquina para su total ejecución y ocupa 1 byte en la memoria. b) El número de bytes _________________________________________________________________________ ITMAR Mazatlán 26 Ing. Rufino J. Domínguez Arellano
  • 4. El Microcontrolador 8051 CAP 3 Por ejemplo, la instrucción MOV A, #data tiene 2 bytes de instrucción y requiere de 1 ciclo máquina (Figura 3.1 B). En cambio la instrucción MOV direct, # data al constar de 3 bytes necesita de 2 ciclos máquina. Esto no ocurre siempre, es decir, a más bytes más ciclos máquina, como puede verse en la Figura 3.1 B correspondiente a la instrucción MOV A, #data y en la Figura 3.1 D MOVX A,@Ri, la primera instrucción tiene 2 bytes y la segunda sólo 1. en cambio la primera requiere 1 ciclo máquina y la segunda 2. Ante la imposibilidad de establecer una norma o regla que facilite el conocimiento del número de bytes y ciclo de instrucción se ha editado la Tabla 4.5 con el set completo de instrucciones. Cabe destacar, también, en la Figura 3.1, que en cada ciclo máquina se producen 2 accesos a la memoria, el primero, si es comienzo de ciclo de instrucción, siempre leerá el código de operación, el segundo, que normalmente se descarta, se utiliza para leer el segundo byte, operando de la instrucción, como ocurre en la Figura 3.1 B. 3.4. TIPOS DE INSTRUCCIONES El set de instrucciones del 8052/8051 se puede dividir según las especialidades: • Instrucciones aritméticas. • Instrucciones lógicas. • Instrucciones de transferencia de datos. • Instrucciones booleanas • Instrucciones de salto. Las instrucciones aritméticas, lógicas, de transferencia y de salto son comunes a la mayoría de microprocesadores. Los microcontroladores tienen un área especial de aplicación, que es el área del control de procesos; en este campo las operaciones están orientadas, muy a menudo, al bit. Los microcontroladores leen, procesan, escriben e intercambian información con los sistemas exteriores, en formato «bit a bit> o «palabra a palabra». Un procesador booleano con un set de instrucciones booleanas muy completo se encarga de realizar este tipo de operaciones, que, como ya hemos dicho, están «orientadas al bit>. Esta particularidad, así como su inmunidad al ruido eléctrico, le hacen valioso en el mundo del control de procesos industriales _________________________________________________________________________ ITMAR Mazatlán 27 Ing. Rufino J. Domínguez Arellano
  • 5. El Microcontrolador 8051 CAP 3 3.5. INSTRUCIONES ARITMETICAS. En la tabla 3.2, se muestra el menú de las instrucciones aritméticas del 8051. Se indican en la tabla los diferentes modos de direccionamiento que se pueden usar en cada caso y los indicadores de estado que son afectados. Los tiempos de ejecución que se indican en la tabla están evaluados sobre una frecuencia de relo de 12 MHz. _________________________________________________________________________ ITMAR Mazatlán 28 Ing. Rufino J. Domínguez Arellano
  • 6. El Microcontrolador 8051 CAP 3 La instrucciónb MUL AB multiplica el contenido del acumulador con el dato situado en B y el producto, de 16 bits, aparece en los registros B:A (sobrescribe los operandos) La instrucción DIVAB divide el contenido del acumulador con el dato del registro B, apareciendo el resultado en A (el cociente) y B ( el residuo). 3.6 INSTRUCCIONES LOGICAS. La tabla 3.3 muestra la lista de operaciones lógicas, modos de direccionamiento disponibles e indicadores de estado. Observe que en este grupo se incluyen las instrucciones de rotación a la izquierda y a la derecha. _________________________________________________________________________ ITMAR Mazatlán 29 Ing. Rufino J. Domínguez Arellano
  • 7. El Microcontrolador 8051 CAP 3 3.7. INSTRUCCIONES DE TRANSFERENCIA DE DATOS Se consideran tres modalidades, según la transferencia se realice sobre: • La RAM interna. • La RAM externa. • La memoria de programa para el tratamiento de tablas. . 3.7.1. Transferencia de datos sobre la RAM interna En la Tabla 3.4 se muestra la tabla de instrucciones disponibles para mover datos dentro de los espacios de memoria RAM interna, considerando los distintos direccionamientos para cada una de las instrucciones. • La instrucción MOV <dest>, <src> permite transferir datos entre alguna de las dos RAM interna o el espacio de localización del SFR (referencia Figura 2.8). Este tipo de instrucción permite la transferencia sin afectar el acumulador. _________________________________________________________________________ ITMAR Mazatlán 30 Ing. Rufino J. Domínguez Arellano
  • 8. El Microcontrolador 8051 CAP 3 Ejemplo: ; Antes de ejecutar la instrucción: ; (3A) = 35H ; (3D) = 78H MOV3AH,3DH .. ; Despues de ejecutarla: ; (3A) = 78H ; (3D) = 78H • La instrucción MOV DPTR, #data 16, permite transferir datos de 16 bits para inicializar el DPTR (Data Poimer = puntero de datos) en el tratamiento de tablas en la memoria de programas o para acceder a los datos de la memoria externa. • La instrucción PUSH <src> actúa incrementando el SP (Stack Pointer = puntero de la pila) y copiando el dato dentro de la pila. La instrucción POP <dest> actúa decrementando el SP y reponiendo el dato en su registro. La pila está situada dentro de la RAM interna, por defecto en el banco de registros 1 (véase Figura 2.11 ), pero puede posicionarse en el área SCRA TCH PAD, como se ha indicado en el capítulo anterior. En resumen. éstas son las operaciones que realiza la unidad de control del microcontrolador: PUSH <src> POP <dest> ---------------------------- -------------------------------- (SP) ← (SP) + 1 <dest> ← ((SP)) ((SP)) ← <src> (SP) ← (SP) -1 _________________________________________________________________________ ITMAR Mazatlán 31 Ing. Rufino J. Domínguez Arellano
  • 9. El Microcontrolador 8051 CAP 3 • La instrucción XCH A, <byte>, intercambia los datos del acumulador y del byte direccionado. La instrucción XCHD A, @Ri es similar a la anterior, pero sólo implica en el intercambio el nibble bajo; es una instrucción especializada en la manipulación de datos en el código BCD. Ejemplos: ; Antes de ejecutar la instrucción: ; (A) = 37H y (2D) = 23H XCH A, 2DH ; Después de ejecutarla: ; (A) = 23H y (2D) = 37H ; Antes de ejecutar la instrucción: ; (RO) = 2DH y (2D) = 37H y (A) = 23H XCHD A, @R0 ; Después de ejecutarla: ; (A) =27H y (2D) = 33H 3.7.2. Transferencia de datos sobre la RAM externa La Tabla 3.5 muestra la lista de instrucciones sobre transferencia de datos que acceden a la memoria de datos. Sólo se puede utilizar el direccionamiento indirecto con este grupo de instrucciones. Conviene observar que para este tipo de accesos siempre interviene el acumulador como registro fuente o destino. El usuario debe escoger entre el tipo de instrucción MOVX A, @Ri o MOVX @Ri,A (siendo Ri, bien el registro R0 o R1 del banco de registros seleccionado), direccionando con 8 bits, o bien utilizar un direccionamiento de 16 bits, usando el _________________________________________________________________________ ITMAR Mazatlán 32 Ing. Rufino J. Domínguez Arellano
  • 10. El Microcontrolador 8051 CAP 3 registro DPTR (MOVX A,@DPTR o MOVX @DPTR,A) y tener que sacrificar el Puerto 2, cuando sólo se va a utilizar un pequeño espacio de memoria RAM. Existe una solución intermedia que permite direccionar sólo unos pocos Kbytes de RAM externa, pero obteniendo algunas líneas hábiles del Puerto 2 como entradas y salidas (E/S). Esta es la solución que se mostró en la Figura 2.7 del Capítulo 2. De todas formas la solución adecuada debe ser función de las características que necesita la aplicación, suponiendo, en principio, que la implementación de la misma sobre la elección de los Microcontroladores 8052/8051 sea la correcta. Las líneas de control de lectura y escritura, RD y WR (pines 16 y 17), sólo son utilizadas cuando se ejecutan las instrucciones MOVX; si no se va a utilizar memoria RAM externa, es obvio que se ganarán unas líneas extras de E/S (Figura 2.7). Ejemplo: Estudiar la secuencia de instrucciones. MOVX A, @Rl MOVX@RO,A Nota: Este ejemplo se podría realizar con el Microcontrolador 8052, en el espacio de memoria RAM interna Que se solapa con el área SFR. Si se refiere al Microcontrolador 8051, debería ser implementada esta operación, obligatoriamente. en el espacio de memoria externa. Naturalmente, si utiliza la memoria interna, las instrucciones que debe utilizar son MOV A., @R1 y MOV @R0, A. ¿Qué sucedería si se tuvieran que implementar estas instrucciones en la zona de memoria por encima de la dirección 2000H? Es decir: _________________________________________________________________________ ITMAR Mazatlán 33 Ing. Rufino J. Domínguez Arellano
  • 11. El Microcontrolador 8051 CAP 3 sustituida 85H → 2085H F3H → 20F3H Se llegaría a la conclusión de que no se podrían procesar estas instrucciones, contando que los registros R0 y R1 no pueden direccionar por encima de la posición de memoria FFH. Pero aquí es donde entran en juego las instrucciones MOVX con el DPTR como operando. La sustitución, en el caso de tener que operar en el espacio de memoria comprendido entre 0000H y FFFFH, sería: sustituida MOVX A, @Ri → MOVX A, @DPTR MOVX @Ri, A → MOVX @DPTR, A Recuérdese que en la Tabla 3.4 hay una instrucción que es: MOV DPTR, #data16 Con la que se podría acceder a todo el mapa de memoria. 3.7.3. Memoria de programas para el tratamiento de tablas La Tabla 3.6 muestra las dos instrucciones disponibles para la lectura de tablas en la memoria de programa (independientemente del algoritmo que pueda crear el usuario con otras instrucciones). Obsérvese que las tablas sólo pueden ser leídas y no actualizadas. El nemónico es MOVC (Mover Constante). Si la tabla accede a la memoria de programa externa, recordar que esta lectura es autorizada por la señal de control PSEN (pin 29). Obsérvese la Figura 2.5 del capítulo anterior . _________________________________________________________________________ ITMAR Mazatlán 34 Ing. Rufino J. Domínguez Arellano
  • 12. El Microcontrolador 8051 CAP 3 La primera instrucción de la tabla permite la lectura en tablas con accesos no superiores a 256. El acceso deseado es cargado en el acumulador, y el Data Pointer (DPTR) establece el puntero de comienzo de la tabla. La lectura es cargada dentro del registro acumulador. MOVC A, @A+DPTR ; A ← ((A) + (DPTR)) La segunda instrucción es similar a la primera, salvo que es el Pogram Counter (PC) el que actúa como indicador de la dirección base de la tabla. ; PC ← (PC) + 1 MOVC A, @A+PC ; A ← ((A) + (PC)) Se presenta esta instrucción dentro de una subrutina, estando la tabla de información después de la instrucción de retorno de la subrutina (RET). Ejemplo: Se trata de demostrar el funcionamiento sobre una tabla de 4 datos. A la izquierda aparece el mapa de memoria del programa. _________________________________________________________________________ ITMAR Mazatlán 35 Ing. Rufino J. Domínguez Arellano