SlideShare una empresa de Scribd logo
1 de 6
Electrónica III

                                        Guía de Práctica N° 1


TEMA: El sistema de desarrollo y el lenguaje ensamblador

                              Objetivos:
                              Generales: Comprender la programación básica del microcontrolador 8051,
                              su sistema de desarrollo y el uso de un lenguaje ensamblador para la
                              realización de programas en bajo nivel.
                              Particulares: Comprender el funcionamiento del microcontrolador PLC935
                              de Philips y el entorno de desarrollo KeilµVision para la realización de
                              programas en bajo nivel
Introducción
        El desarrollo de un sistema basado en microcontrolador implica: el diseño y montaje de un
hardware, y el diseño y depuración del software correspondiente. Las primeras pruebas y depuraciones
del diseño de ambos bloques (hard y soft) se realizan en sistemas de desarrollos. Estos sistemas poseen un
Entorno de Desarrollo Integrado (IDE, por sus siglas en inglés) que corre en una PC, el cual se comunica
con un circuito externo que posee el mismo microcontrolador que utilizamos en nuestro diseño hardware.
Por lo general, estos sistemas de desarrollo permiten la edición, el ensamblado, ejecución, depuración y
simulación de los programas y su posterior grabación en el microcontrolador. Permiten asismismo la
emulación del funcionamiento del software en el hardware provisto por el sistema de desarrollo.
       En estas clases de práctica emplearemos sistemas o kits de desarrollo que utilizan el IDE Keil
µVision3, el cual se comunica a través del puerto serie con la placa MCB900 con el microcontrolador
89LPC935 y que se muestra a continuación:




                         Keil
    Placa para el
                         µVision
    P89LPC935            3




    Esquema del sistema de desarrollo
                                                                 Placa MCB 900
        El lenguaje ensamblador (assembler) es una ayuda en las tareas de codificación en bajo nivel ya
que, además de contener los nemónicos de las instrucciones, presenta ciertas ventajas que evitan el trabajo
de manipular el código hexadecimal, como por ejemplo símbolos e identificadores que referencian a datos
o posiciones de memoria. Los nemónicos son abreviaturas de los nombres o descripciones de las
instrucciones que se utilizan como ayuda a la memoria del diseñador. Así también se encuentran las
pseudoinstrucciones o directivas que facilitan la codificación de algoritmos. Las directivas no son
instrucciones del microcontrolador por lo que no generan código ejecutable, pero pertenecen al software
ensamblador.
        El programa codificado en lenguaje ensamblador se denomina programa fuente y requiere de su
traducción a código máquina o programa objeto, proceso que se denomina ensamblado, para correr en un
microcontrolador o en un sistema de emulación.

       PROGRAMA FUENTE                       ensamblado                 PROGRAMA OBJETO
       ( Nemónicos y directivas)                 Guía 1                  ( Código de máquina)        1 de 6
Electrónica III




     El IDE Keil µVision3 utiliza el macro assembler Ax51 para ensamblar programas para la familia de
los microcontroladores 8051. Trabaja asociado a otros dos programas: el Lx51 que vincula (o “linkea”)
distintos modulos de un proyecto asignando direcciones absolutas; y el OHx51 que genera el código
objeto en formato Intel.
     Para generar el código de máquina para el microcontrolador P89LPC935 ( versión de la empresa Philips
del µC 8051 de Intel), es necesario contar con una PC con sistema operativo Windows 98 o superior con el
Keil µVision3, en el cual se ejecutan dos aplicaciones interactivas entre sí que posibilitan:
    Aplicación 1: edición, ensamblado y grabación del micro
    Aplicación 2: ejecución, depuración y simulación del programa
Para crear una aplicación en Keil µVision3 es necesario seguir los siguientes pasos:
    a)   Ejecutar el entorno Keil µVision3
    b) Desplegar la ventana Project y crear un nuevo proyecto seleccionando Create New Project , dentro de
         un directorio creado para contener todos los archivos de nuestro proyecto.                          Ejemplo:
         demoguia1.uv2 dentro del directorio  GUIA1
    c)   Seleccionar la CPU para el dispositivo P89LPC935 y NO habilitar el copiado y adicion del código
         del LPC900 Startup.
    d) Configure el proyecto de manera que al ensamblar el progama fuente se genere un archivo con
         extensión HEX (el código objeto). Esto se realiza seleccionando la opción Options for target ´Target 1´
         en la ventana Project y en la pestaña Output seleccionar el box Create HEX file
    e) En la pantalla se desplegará la aplicación 1 en donde se podrán identificar las siguientes ventanas:
                              Menú
                                  desplega                           Depuración
                                  ble

         Botones de
         ensamblado




             Grabación del
                micro
                                                                                        Ventana de edición




                                                                                    Ventana de salida

    f)   Despliegue la opción de menú File y cree un nuevo archivo. Edite en la ventana de edición un
         programa en lenguaje asembler respetando los campos de edición: etiquetas, codigos de operación
         y operandos. Recuerde que las líneas con comentarios se indican con “;” o con “//”. A modo de
         ejemplo tipee el siguiente código fuente:

                   NAME           PROGRAMA_DEMOSTRACION

                   MOV R3,#OPER
                                                    Guía 1                                                     2 de 6
Electrónica III

               MOV R5,#01H
SALTO:         MOV A,R3
               ADD A,R5
               MOV R3,A
               JNC SALTO
ACA:           SJMP ACA

OPER           EQU 0FEH

               END

  g) Guarde el archivo con una extensión A51. Ejemplo: demoguia1.A51.
  h) Presione el clic contrario del mouse sobre “Source Group 1” de la ventana izquierda y adicione el
       archivo demoguia1.A51 al grupo.
  i)   Ensamble el programa fuente presionando el botón build target en la parte superior izquierda de la
       pantalla del Keil µVision3..Con esta acción se han creado el código objeto demoguia1.hex y los
       archivos : demoguia1.lst, demoguia1.obj,demoguia1.M51, etc.
  j)   Observe que en la ventana de salida se visualizarán mensajes del ensamblador y los errores de
       sintaxis detectados.
  k) Para realizar una primera depuración de la lógica de programación se puede presionar el botón de
       Depuración indicado en la figura anterior o seleccionar el inicio de la sesión en el menú Debug del
       desplegable superior.
       Al activar la depuración del programa, se desplega la pantalla de la aplicación 2.
  l)   En esta pantalla se puede observar una nueva barra de herramientas en la zona superior y otras
       dos ventanas, aparte de la de salida, en la zona inferior de la pantalla. En una de ellas se podrá
       observar la evolución de los registros, variables que utilizamos en nuestro programa y el uso de la
       pila o stack (Watches Window) En la otra se podrán visualizar las distintas zonas de memoria
       (Memory Window). También podrán seleccionarse otras ventanas de inspección que nos ayudarán en
       la depuración de nuestro programa: el analizador lógico (Logic Analyzer Window). y el analizador de
       perfomance (Perfomance Analyzer Window). Esto se realiza presionando el botón correspondiente en el
       submenú mencionado.
  m) Configure las ventanas de depuración que desee utilizar. En nuestro caso ejemplo
       inspeccionaremos el contador de programa, los registros r3, r5, el acumulador y las banderas;
       observando su evolución en la ventana Workspace que se puede abrir a la izquierda de la pantalla.
       También podremos observar la evolución de otras variables locales, presionando F2 en la
       ventana rotulada Watches y colocando el nombre del registro o variable.
  n) Para ejecutar el programa paso a paso presione F11. Al hacerlo puede observar el efecto que la
       ejecución del programa tiene sobre los registros, variables y memoria seleccionada, y evaluar de
       esta manera el desempeño del mismo.
  o) Para ejecutar por completo el programa presione el botón correspondiente en el submenú o la
       opción Run en el menú Debug




                                                Guía 1                                              3 de 6
Electrónica III

                Perfomance Analyzer               Logic Analyzer




     Project
    Workspace




                                      Watches Window                             Memory Window
     Output Window

      Pantalla de la aplicación 2: ejecución, depuración y simulación del programa


ACTIVIDADES PRESENCIALES:
                Respecto del programa demostración: investigue y responda:
           a. ¿qué hace el programa demostración presentado anteriormente?
           b. explique paso a paso la función de cada instrucción dentro del programa e identifique los
              modos de direccionamiento de cada una
           c. identifique las directivas del ensamblador empleadas y describa sus funciones
           d.    con qué instrucción podría reemplazarse el incremento al dato en R3?
           e.    Investigue alternativas a la escritura de la instrucción SJMP
   2. Tipee, ensamble y simule el siguiente programa:

                NAME             PROGRAMA_DEMOSTRACION_2

                MOV R3,#CANT
                MOV DPTR,#TABLA
                MOV R5,#0FFH
                MOV R4,#00
  SALTO:        MOV A,R5
                INC A
                MOV R5,A
                MOVC A,@A+DPTR
                ADD A,R4
                MOV R4,A
                DEC R3
                                                 Guía 1                                             4 de 6
Electrónica III

                MOV A,R3
                JNZ SALTO
  QUEDO:        SJMP QUEDO
  TABLA:        DB     1,2,3,4,5,6,7,8,9,10
  CANT          EQU    0AH
                END
           a. Identifique y corrija los errores surgieron al ensamblar el programa fuente
           b.   Cual es la función de la directiva DB? Cuál es el valor de la etiqueta TABLA?
           c. ¿qué hace el programa demostración presentado anteriormente?
           d. Explique paso a paso la función de cada instrucción dentro del programa e identifique
              los modos de direccionamiento de cada una
           e. Identifique las directivas del ensamblador empleadas y describa sus funciones
           f.   Inspeccione el mapa de memoria y verifique la ubicación de la tabla.
           g. Por qué instrucción podría reemplazar las siguientes líneas de código:
                     DEC R3
                     MOV A,R3
                     JNZ SALTO
   3. Edite, ensamble y simule 2 de los ejercicios que se proponen a continuación y el resto resuélvalos
      en papel.


EJERCICIOS:
  1. Escribir el dato FAH en todas las posiciones de memoria RAM entre 30H y 7FH. Investigue y
      responda: por qué se eligieron estas posiciones de memoria?
  2. Sumar el contenido de las direcciones de memoria 51H y 52H, almacenar el resultado en la 53H.
      Investigue y responda: qué contienen las direcciones de memoria de programa a partir de la
      0000H? Que tipo de direccionamiento utilizó?
  3. Escribir un programa que reste el contenido del par de registros R3 y R4 del dato ubicado en las
      posiciones de memoria 38H y la siguiente. Almacenar el resultado en R5 y R6. El valor del carry
      colocarlo en el bit 2 de la dirección 20H. Investigue y responda: por qué se eligió esta posición de
      memoria para almacenar el carry? Qué contienen las direcciones de memoria RAM: 04H, 05H,
      06H y 07H?
  4. Buscar el primer dato=FFH existente en el bloque de datos de la memoria RAM direccionada
      desde la 30H hasta la 40H. Almacenar la dirección donde se lo encontró en el registro R3.
      Investigue y responda: qué registro empleó como puntero de datos? Por qué?
  5. Trasladar 30 datos ubicados a partir de la posición de memoria RAM 30H y colocarlos a partir
      de la 50H. Utilice los registros R0 y R1. Investigue y responda: por qué se sugiere utilizar estos
      registros como punteros? Que tipo de direccionamiento utilizó?
  6. Realizar un programa que tome un bloque de datos de 64 bytes ubicados a partir de la dirección
      de RAM 30H y los escriba a partir de la misma dirección pero en orden invertido.
  7. Escribir un programa que coloque en cero las cuatro bits de mayor peso (nible superior) de las
      posiciones de memoria de RAM desde 30H hasta la posición 70H.
  8. Escribir un programa que parta el byte almacenado en la dirección de RAM 30H en dos nibles y
      los almacene en las 31H y 32H de tal manera que los 4 bits más significativos de éstas últimas
      sean cero.


                                               Guía 1                                               5 de 6
Electrónica III

   9. Realizar un programa que sume cuatro números ubicados en posiciones de memoria de RAM
       sucesivas a partir de la 30H y almacene el resultado en la quinta posición consecutiva. Si se
       necesita usar otro byte para el resultado almacenarlo en la sexta posición.
   10. Realizar un programa que reste dos vectores de diez elementos de datos de un byte ubicados todos
       en posiciones consecutivas a partir de la 30H. Almacene el resultado en otro vector a
       continuación de los vectores anteriores. (suponer todos los vectores de datos ubicados en la zona
       de RAM de direccionamiento indirecto) Utilizar punteros de distintos bancos de registro.
   11. Escribir un programa que multiplique los datos almacenados en las direcciones de RAM 30H y
       31H. Almacene el resultado en las siguientes posiciones de memoria.
   12. Escribir un programa que divida el dato almacenado en las dirección 30H por el que está en la
       dirección 31H. Almacene el resultado en las siguientes posiciones de memoria.
   13. En 3 posiciones consecutivas de memoria RAM están almacenados 3 datos. Guardar el mayor de
       ellos en la siguiente posición de memoria libre.
   14. Realizar un programa que tome un dato de la posición de memoria 40H, lo convierta a BCD y lo
       almacene en las tres posiciones anteriores de manera que las unidades queden en la dir 3FH..
   15. Realizar un programa cuya función sea demorar 1, 10 o 100 mseg.
   16. Realice un programa que incremente un contador BCD de 0 a 100. Le cuenta se debe incrementar
       cada 1 ms y el estado actual del contador se debe almacenar en las direcciones 20H, 21H y 22H.
       El programa debe utilizar dos subrutinas: Retardo y BIN-BCD.
   17. Escribir un programa que calcule el máximo de un bloque de 40 datos ubicados a partir de la
       dirección 30H.
   18. Ordenar de mayor a menor un bloque de 40 datos ubicados a partir de la dirección 30H.
   19. Realizar un programa que copie los datos de una tabla de 10 datos que reside en la memoria de
       código, a una zona de RAM ubicada a partir de la dirección 30H. Utilice las directivas DB y DS.
   20. Realizar un programa que transfiera 30 datos ubicados en memoria de código hacia la posición
       38H en delante de memoria RAM, con un intervalo de 100 mseg. entre dato y dato.
   21. Realizar una programa que convierta a BCD números binarios de 8 bits, no mayores que 255, y
       que se encuentran almacenados en posiciones de memoria sucesivas a partir de la dirección 30H.
       Almacene los 3 dígitos BCD en 2 posiciones de memoria sucesivas a partir de la dirección 31H.
   22. Realizar un programa que sume o reste números positivos de 32 bits de magnitud según sea
       R3=FFh (suma) y si R2=00 (resta). Si el resultado es negativo, colocar R4=FFh.
Bibliografía
 Keil Software. “Macro Assembler and Utilities Macro Assembler, Linker/Locator, Library Manager,
    and Object-HEX Converterfor 8051, Extended 8051, and 251 Microcontrollers” User’s Guide2.2001
 Odant B. “Microcontroladores 8051 y 8052” Ed- Paraninfo.1995
 Philips Semiconductor – P89LPC933/ 934/ 935/ 936 User Manual
 José Matas Alcalá y Rafael Ramón Ramos Lara. Microcontroladores MCS-51 y MCS-251.
 Kenneth L. Short. Microprocesadores y lógica programada.
 José Angulo. Microprocesadores. Curso sobre aplicaciones en sistemas industriales.




                                                 Guía 1                                           6 de 6

Más contenido relacionado

La actualidad más candente

Tecnicas avanzadas de programacion en lenguaje c++ (manual)
Tecnicas avanzadas de programacion en lenguaje c++ (manual)Tecnicas avanzadas de programacion en lenguaje c++ (manual)
Tecnicas avanzadas de programacion en lenguaje c++ (manual)
Ignacio Reyes
 
Manual 1 de lenguaje c
Manual 1 de lenguaje cManual 1 de lenguaje c
Manual 1 de lenguaje c
gechenique
 
2.1 estructura general de un programa en c
2.1 estructura general de un programa en c2.1 estructura general de un programa en c
2.1 estructura general de un programa en c
SNPP
 

La actualidad más candente (15)

Unidad 2 curso c
Unidad 2 curso cUnidad 2 curso c
Unidad 2 curso c
 
Programacion
Programacion Programacion
Programacion
 
2.2. algoritmos definicion - metodología - ejemplos ing comp
2.2. algoritmos  definicion - metodología - ejemplos ing comp2.2. algoritmos  definicion - metodología - ejemplos ing comp
2.2. algoritmos definicion - metodología - ejemplos ing comp
 
2.1. algoritmos primera parte ing comp
2.1. algoritmos primera parte ing comp2.1. algoritmos primera parte ing comp
2.1. algoritmos primera parte ing comp
 
Tecnicas avanzadas de programacion en lenguaje c++ (manual)
Tecnicas avanzadas de programacion en lenguaje c++ (manual)Tecnicas avanzadas de programacion en lenguaje c++ (manual)
Tecnicas avanzadas de programacion en lenguaje c++ (manual)
 
Seti6 ocw
Seti6 ocwSeti6 ocw
Seti6 ocw
 
Manual 1 de lenguaje c
Manual 1 de lenguaje cManual 1 de lenguaje c
Manual 1 de lenguaje c
 
Uso básico de MPLAB
Uso básico de MPLABUso básico de MPLAB
Uso básico de MPLAB
 
2.1 estructura general de un programa en c
2.1 estructura general de un programa en c2.1 estructura general de un programa en c
2.1 estructura general de un programa en c
 
Presentacion
PresentacionPresentacion
Presentacion
 
P1
P1P1
P1
 
0000261 programacion estructurada
0000261 programacion estructurada0000261 programacion estructurada
0000261 programacion estructurada
 
P01.Desarrollo de aplicaciones con mplab
P01.Desarrollo de aplicaciones con mplabP01.Desarrollo de aplicaciones con mplab
P01.Desarrollo de aplicaciones con mplab
 
Cristian david castro
Cristian david castroCristian david castro
Cristian david castro
 
Presentacion Programacion
Presentacion ProgramacionPresentacion Programacion
Presentacion Programacion
 

Similar a Guia practica 1.0 2011

Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]
Jalil Segura
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]
Jalil Segura
 
Unidad Iii Generalidades Sobre Algoritmos
Unidad Iii Generalidades Sobre AlgoritmosUnidad Iii Generalidades Sobre Algoritmos
Unidad Iii Generalidades Sobre Algoritmos
marthaill10
 
PASOS PARA TRABAJAR CON UN PROGRAMA EN KEIL μVision
PASOS PARA TRABAJAR CON UN PROGRAMA EN KEIL μVisionPASOS PARA TRABAJAR CON UN PROGRAMA EN KEIL μVision
PASOS PARA TRABAJAR CON UN PROGRAMA EN KEIL μVision
Ruderocker Billy
 
Introducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptxIntroducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptx
DavidGarca147527
 

Similar a Guia practica 1.0 2011 (20)

Electonica de potencia, diodos de rectificacion
Electonica de potencia, diodos de rectificacionElectonica de potencia, diodos de rectificacion
Electonica de potencia, diodos de rectificacion
 
P1_Programación en MPLAB X IDE V5_20(1).pdf
P1_Programación en MPLAB X IDE V5_20(1).pdfP1_Programación en MPLAB X IDE V5_20(1).pdf
P1_Programación en MPLAB X IDE V5_20(1).pdf
 
P1_Programación en MPLAB X IDE V5_20(1).pdf
P1_Programación en MPLAB X IDE V5_20(1).pdfP1_Programación en MPLAB X IDE V5_20(1).pdf
P1_Programación en MPLAB X IDE V5_20(1).pdf
 
Laboratorio 2 arquitectura de computadores
Laboratorio 2 arquitectura de computadoresLaboratorio 2 arquitectura de computadores
Laboratorio 2 arquitectura de computadores
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]
 
LENGUAJE DE PROGRAMACION C++ INTRODUCCION
LENGUAJE DE PROGRAMACION C++ INTRODUCCIONLENGUAJE DE PROGRAMACION C++ INTRODUCCION
LENGUAJE DE PROGRAMACION C++ INTRODUCCION
 
Unidad Iii Generalidades Sobre Algoritmos
Unidad Iii Generalidades Sobre AlgoritmosUnidad Iii Generalidades Sobre Algoritmos
Unidad Iii Generalidades Sobre Algoritmos
 
2do parcial c
2do parcial c2do parcial c
2do parcial c
 
PASOS PARA TRABAJAR CON UN PROGRAMA EN KEIL μVision
PASOS PARA TRABAJAR CON UN PROGRAMA EN KEIL μVisionPASOS PARA TRABAJAR CON UN PROGRAMA EN KEIL μVision
PASOS PARA TRABAJAR CON UN PROGRAMA EN KEIL μVision
 
Curso basico de pic 16 f877
Curso basico de pic 16 f877Curso basico de pic 16 f877
Curso basico de pic 16 f877
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Introducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptxIntroducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptx
 
Jhovany
JhovanyJhovany
Jhovany
 
Jhovany
JhovanyJhovany
Jhovany
 
U2 Etapas programación -Diseño de Productos Electrónicos con Microcontroladores
U2 Etapas programación -Diseño de Productos Electrónicos con MicrocontroladoresU2 Etapas programación -Diseño de Productos Electrónicos con Microcontroladores
U2 Etapas programación -Diseño de Productos Electrónicos con Microcontroladores
 
37975756-Guia-de-C
37975756-Guia-de-C37975756-Guia-de-C
37975756-Guia-de-C
 
PROGRAMACION DE LOS PIC 2021-1.pdf
PROGRAMACION DE LOS  PIC 2021-1.pdfPROGRAMACION DE LOS  PIC 2021-1.pdf
PROGRAMACION DE LOS PIC 2021-1.pdf
 
T 25
T 25T 25
T 25
 
T 25
T 25T 25
T 25
 

Último

Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
jlorentemartos
 

Último (20)

1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!
 
Linea del tiempo - Filosofos Cristianos.docx
Linea del tiempo - Filosofos Cristianos.docxLinea del tiempo - Filosofos Cristianos.docx
Linea del tiempo - Filosofos Cristianos.docx
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 

Guia practica 1.0 2011

  • 1. Electrónica III Guía de Práctica N° 1 TEMA: El sistema de desarrollo y el lenguaje ensamblador Objetivos: Generales: Comprender la programación básica del microcontrolador 8051, su sistema de desarrollo y el uso de un lenguaje ensamblador para la realización de programas en bajo nivel. Particulares: Comprender el funcionamiento del microcontrolador PLC935 de Philips y el entorno de desarrollo KeilµVision para la realización de programas en bajo nivel Introducción El desarrollo de un sistema basado en microcontrolador implica: el diseño y montaje de un hardware, y el diseño y depuración del software correspondiente. Las primeras pruebas y depuraciones del diseño de ambos bloques (hard y soft) se realizan en sistemas de desarrollos. Estos sistemas poseen un Entorno de Desarrollo Integrado (IDE, por sus siglas en inglés) que corre en una PC, el cual se comunica con un circuito externo que posee el mismo microcontrolador que utilizamos en nuestro diseño hardware. Por lo general, estos sistemas de desarrollo permiten la edición, el ensamblado, ejecución, depuración y simulación de los programas y su posterior grabación en el microcontrolador. Permiten asismismo la emulación del funcionamiento del software en el hardware provisto por el sistema de desarrollo. En estas clases de práctica emplearemos sistemas o kits de desarrollo que utilizan el IDE Keil µVision3, el cual se comunica a través del puerto serie con la placa MCB900 con el microcontrolador 89LPC935 y que se muestra a continuación: Keil Placa para el µVision P89LPC935 3 Esquema del sistema de desarrollo Placa MCB 900 El lenguaje ensamblador (assembler) es una ayuda en las tareas de codificación en bajo nivel ya que, además de contener los nemónicos de las instrucciones, presenta ciertas ventajas que evitan el trabajo de manipular el código hexadecimal, como por ejemplo símbolos e identificadores que referencian a datos o posiciones de memoria. Los nemónicos son abreviaturas de los nombres o descripciones de las instrucciones que se utilizan como ayuda a la memoria del diseñador. Así también se encuentran las pseudoinstrucciones o directivas que facilitan la codificación de algoritmos. Las directivas no son instrucciones del microcontrolador por lo que no generan código ejecutable, pero pertenecen al software ensamblador. El programa codificado en lenguaje ensamblador se denomina programa fuente y requiere de su traducción a código máquina o programa objeto, proceso que se denomina ensamblado, para correr en un microcontrolador o en un sistema de emulación. PROGRAMA FUENTE ensamblado PROGRAMA OBJETO ( Nemónicos y directivas) Guía 1 ( Código de máquina) 1 de 6
  • 2. Electrónica III El IDE Keil µVision3 utiliza el macro assembler Ax51 para ensamblar programas para la familia de los microcontroladores 8051. Trabaja asociado a otros dos programas: el Lx51 que vincula (o “linkea”) distintos modulos de un proyecto asignando direcciones absolutas; y el OHx51 que genera el código objeto en formato Intel. Para generar el código de máquina para el microcontrolador P89LPC935 ( versión de la empresa Philips del µC 8051 de Intel), es necesario contar con una PC con sistema operativo Windows 98 o superior con el Keil µVision3, en el cual se ejecutan dos aplicaciones interactivas entre sí que posibilitan: Aplicación 1: edición, ensamblado y grabación del micro Aplicación 2: ejecución, depuración y simulación del programa Para crear una aplicación en Keil µVision3 es necesario seguir los siguientes pasos: a) Ejecutar el entorno Keil µVision3 b) Desplegar la ventana Project y crear un nuevo proyecto seleccionando Create New Project , dentro de un directorio creado para contener todos los archivos de nuestro proyecto. Ejemplo: demoguia1.uv2 dentro del directorio GUIA1 c) Seleccionar la CPU para el dispositivo P89LPC935 y NO habilitar el copiado y adicion del código del LPC900 Startup. d) Configure el proyecto de manera que al ensamblar el progama fuente se genere un archivo con extensión HEX (el código objeto). Esto se realiza seleccionando la opción Options for target ´Target 1´ en la ventana Project y en la pestaña Output seleccionar el box Create HEX file e) En la pantalla se desplegará la aplicación 1 en donde se podrán identificar las siguientes ventanas: Menú desplega Depuración ble Botones de ensamblado Grabación del micro Ventana de edición Ventana de salida f) Despliegue la opción de menú File y cree un nuevo archivo. Edite en la ventana de edición un programa en lenguaje asembler respetando los campos de edición: etiquetas, codigos de operación y operandos. Recuerde que las líneas con comentarios se indican con “;” o con “//”. A modo de ejemplo tipee el siguiente código fuente: NAME PROGRAMA_DEMOSTRACION MOV R3,#OPER Guía 1 2 de 6
  • 3. Electrónica III MOV R5,#01H SALTO: MOV A,R3 ADD A,R5 MOV R3,A JNC SALTO ACA: SJMP ACA OPER EQU 0FEH END g) Guarde el archivo con una extensión A51. Ejemplo: demoguia1.A51. h) Presione el clic contrario del mouse sobre “Source Group 1” de la ventana izquierda y adicione el archivo demoguia1.A51 al grupo. i) Ensamble el programa fuente presionando el botón build target en la parte superior izquierda de la pantalla del Keil µVision3..Con esta acción se han creado el código objeto demoguia1.hex y los archivos : demoguia1.lst, demoguia1.obj,demoguia1.M51, etc. j) Observe que en la ventana de salida se visualizarán mensajes del ensamblador y los errores de sintaxis detectados. k) Para realizar una primera depuración de la lógica de programación se puede presionar el botón de Depuración indicado en la figura anterior o seleccionar el inicio de la sesión en el menú Debug del desplegable superior. Al activar la depuración del programa, se desplega la pantalla de la aplicación 2. l) En esta pantalla se puede observar una nueva barra de herramientas en la zona superior y otras dos ventanas, aparte de la de salida, en la zona inferior de la pantalla. En una de ellas se podrá observar la evolución de los registros, variables que utilizamos en nuestro programa y el uso de la pila o stack (Watches Window) En la otra se podrán visualizar las distintas zonas de memoria (Memory Window). También podrán seleccionarse otras ventanas de inspección que nos ayudarán en la depuración de nuestro programa: el analizador lógico (Logic Analyzer Window). y el analizador de perfomance (Perfomance Analyzer Window). Esto se realiza presionando el botón correspondiente en el submenú mencionado. m) Configure las ventanas de depuración que desee utilizar. En nuestro caso ejemplo inspeccionaremos el contador de programa, los registros r3, r5, el acumulador y las banderas; observando su evolución en la ventana Workspace que se puede abrir a la izquierda de la pantalla. También podremos observar la evolución de otras variables locales, presionando F2 en la ventana rotulada Watches y colocando el nombre del registro o variable. n) Para ejecutar el programa paso a paso presione F11. Al hacerlo puede observar el efecto que la ejecución del programa tiene sobre los registros, variables y memoria seleccionada, y evaluar de esta manera el desempeño del mismo. o) Para ejecutar por completo el programa presione el botón correspondiente en el submenú o la opción Run en el menú Debug Guía 1 3 de 6
  • 4. Electrónica III Perfomance Analyzer Logic Analyzer Project Workspace Watches Window Memory Window Output Window Pantalla de la aplicación 2: ejecución, depuración y simulación del programa ACTIVIDADES PRESENCIALES: Respecto del programa demostración: investigue y responda: a. ¿qué hace el programa demostración presentado anteriormente? b. explique paso a paso la función de cada instrucción dentro del programa e identifique los modos de direccionamiento de cada una c. identifique las directivas del ensamblador empleadas y describa sus funciones d. con qué instrucción podría reemplazarse el incremento al dato en R3? e. Investigue alternativas a la escritura de la instrucción SJMP 2. Tipee, ensamble y simule el siguiente programa: NAME PROGRAMA_DEMOSTRACION_2 MOV R3,#CANT MOV DPTR,#TABLA MOV R5,#0FFH MOV R4,#00 SALTO: MOV A,R5 INC A MOV R5,A MOVC A,@A+DPTR ADD A,R4 MOV R4,A DEC R3 Guía 1 4 de 6
  • 5. Electrónica III MOV A,R3 JNZ SALTO QUEDO: SJMP QUEDO TABLA: DB 1,2,3,4,5,6,7,8,9,10 CANT EQU 0AH END a. Identifique y corrija los errores surgieron al ensamblar el programa fuente b. Cual es la función de la directiva DB? Cuál es el valor de la etiqueta TABLA? c. ¿qué hace el programa demostración presentado anteriormente? d. Explique paso a paso la función de cada instrucción dentro del programa e identifique los modos de direccionamiento de cada una e. Identifique las directivas del ensamblador empleadas y describa sus funciones f. Inspeccione el mapa de memoria y verifique la ubicación de la tabla. g. Por qué instrucción podría reemplazar las siguientes líneas de código: DEC R3 MOV A,R3 JNZ SALTO 3. Edite, ensamble y simule 2 de los ejercicios que se proponen a continuación y el resto resuélvalos en papel. EJERCICIOS: 1. Escribir el dato FAH en todas las posiciones de memoria RAM entre 30H y 7FH. Investigue y responda: por qué se eligieron estas posiciones de memoria? 2. Sumar el contenido de las direcciones de memoria 51H y 52H, almacenar el resultado en la 53H. Investigue y responda: qué contienen las direcciones de memoria de programa a partir de la 0000H? Que tipo de direccionamiento utilizó? 3. Escribir un programa que reste el contenido del par de registros R3 y R4 del dato ubicado en las posiciones de memoria 38H y la siguiente. Almacenar el resultado en R5 y R6. El valor del carry colocarlo en el bit 2 de la dirección 20H. Investigue y responda: por qué se eligió esta posición de memoria para almacenar el carry? Qué contienen las direcciones de memoria RAM: 04H, 05H, 06H y 07H? 4. Buscar el primer dato=FFH existente en el bloque de datos de la memoria RAM direccionada desde la 30H hasta la 40H. Almacenar la dirección donde se lo encontró en el registro R3. Investigue y responda: qué registro empleó como puntero de datos? Por qué? 5. Trasladar 30 datos ubicados a partir de la posición de memoria RAM 30H y colocarlos a partir de la 50H. Utilice los registros R0 y R1. Investigue y responda: por qué se sugiere utilizar estos registros como punteros? Que tipo de direccionamiento utilizó? 6. Realizar un programa que tome un bloque de datos de 64 bytes ubicados a partir de la dirección de RAM 30H y los escriba a partir de la misma dirección pero en orden invertido. 7. Escribir un programa que coloque en cero las cuatro bits de mayor peso (nible superior) de las posiciones de memoria de RAM desde 30H hasta la posición 70H. 8. Escribir un programa que parta el byte almacenado en la dirección de RAM 30H en dos nibles y los almacene en las 31H y 32H de tal manera que los 4 bits más significativos de éstas últimas sean cero. Guía 1 5 de 6
  • 6. Electrónica III 9. Realizar un programa que sume cuatro números ubicados en posiciones de memoria de RAM sucesivas a partir de la 30H y almacene el resultado en la quinta posición consecutiva. Si se necesita usar otro byte para el resultado almacenarlo en la sexta posición. 10. Realizar un programa que reste dos vectores de diez elementos de datos de un byte ubicados todos en posiciones consecutivas a partir de la 30H. Almacene el resultado en otro vector a continuación de los vectores anteriores. (suponer todos los vectores de datos ubicados en la zona de RAM de direccionamiento indirecto) Utilizar punteros de distintos bancos de registro. 11. Escribir un programa que multiplique los datos almacenados en las direcciones de RAM 30H y 31H. Almacene el resultado en las siguientes posiciones de memoria. 12. Escribir un programa que divida el dato almacenado en las dirección 30H por el que está en la dirección 31H. Almacene el resultado en las siguientes posiciones de memoria. 13. En 3 posiciones consecutivas de memoria RAM están almacenados 3 datos. Guardar el mayor de ellos en la siguiente posición de memoria libre. 14. Realizar un programa que tome un dato de la posición de memoria 40H, lo convierta a BCD y lo almacene en las tres posiciones anteriores de manera que las unidades queden en la dir 3FH.. 15. Realizar un programa cuya función sea demorar 1, 10 o 100 mseg. 16. Realice un programa que incremente un contador BCD de 0 a 100. Le cuenta se debe incrementar cada 1 ms y el estado actual del contador se debe almacenar en las direcciones 20H, 21H y 22H. El programa debe utilizar dos subrutinas: Retardo y BIN-BCD. 17. Escribir un programa que calcule el máximo de un bloque de 40 datos ubicados a partir de la dirección 30H. 18. Ordenar de mayor a menor un bloque de 40 datos ubicados a partir de la dirección 30H. 19. Realizar un programa que copie los datos de una tabla de 10 datos que reside en la memoria de código, a una zona de RAM ubicada a partir de la dirección 30H. Utilice las directivas DB y DS. 20. Realizar un programa que transfiera 30 datos ubicados en memoria de código hacia la posición 38H en delante de memoria RAM, con un intervalo de 100 mseg. entre dato y dato. 21. Realizar una programa que convierta a BCD números binarios de 8 bits, no mayores que 255, y que se encuentran almacenados en posiciones de memoria sucesivas a partir de la dirección 30H. Almacene los 3 dígitos BCD en 2 posiciones de memoria sucesivas a partir de la dirección 31H. 22. Realizar un programa que sume o reste números positivos de 32 bits de magnitud según sea R3=FFh (suma) y si R2=00 (resta). Si el resultado es negativo, colocar R4=FFh. Bibliografía  Keil Software. “Macro Assembler and Utilities Macro Assembler, Linker/Locator, Library Manager, and Object-HEX Converterfor 8051, Extended 8051, and 251 Microcontrollers” User’s Guide2.2001  Odant B. “Microcontroladores 8051 y 8052” Ed- Paraninfo.1995  Philips Semiconductor – P89LPC933/ 934/ 935/ 936 User Manual  José Matas Alcalá y Rafael Ramón Ramos Lara. Microcontroladores MCS-51 y MCS-251.  Kenneth L. Short. Microprocesadores y lógica programada.  José Angulo. Microprocesadores. Curso sobre aplicaciones en sistemas industriales. Guía 1 6 de 6