You are on page 1of 9

FACULTAD DE INGENIERÍA ELÉCTRICA Y

ELECTRÓNICA
Carrera de Ingeniería Electrónica y Control
Carrera de Ingeniería Electrónica y Telecomunicaciones
Carrera de Ingeniería Electrónica y Redes de Información
Carrera de Ingeniería Eléctrica

LABORATORIO DE SISTEMAS MICROPROCESADOS

PRÁCTICA N°3
1. TEMA :
Conocimiento del software de desarrollo ATMEL Studio

2. OBJETIVO:

Conocer una de las herramientas existentes para el desarrollo y depuración de programas


para aplicaciones con microcontroladores de 8 bits de Atmel, específicamente AVR
Studio.
3. MARCO TEÓRICO

Atmel Studio es una plataforma de desarrollo integrado (IDP) para desarrollar y depurar
aplicaciones desarrolladas con microcontroladores ARM y AVR. Atmel Studio 7 IDP presenta
un ambiente fácil de usar para escribir, generar y depurar sus aplicaciones escritas en C / C
++ o assembler. Además, se puede emplear con tarjetas de desarrollo de Atmel.

Hay versiones previas de Atmel Studio, en la actualidad se encuentra en la versión 7.0, sin
embargo el estudiante puede emplear cualquiera.

Figura 1: Versiones de AVR Studio

Los Ensambladores

En el desarrollo de los programas de cualquier proyecto basado en microprocesador se


necesita de la ayuda de un Ensamblador, esto no es más que una herramienta de software
que simplifica la tarea de escribir los programas y que se encarga de traducir el código
simbólico o Lenguaje Ensamblador (Assembler) en un código ejecutable o Lenguaje de
Máquina, que se almacena en la memoria del microcontrolador para su ejecución.

Cuando se ensamblan un conjunto de programas lo que se hace es traducirlos en un idioma


mediante el cual se pueda instruir al CPU para que este ejecute eficazmente las tareas que
se desea realizar; por tanto al momento de escribir un programa se debe estar totalmente

Período: 2019A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm


LABORATORIO DE SISTEMAS MICROPROCESADOS

familiarizado con la arquitectura del microcontrolador y las instrucciones que puede


ejecutar.

Un programa escrito en lenguaje ensamblador contiene:

 Instrucciones del programa


 Comentarios
 Directivas del ensamblador
 Controles para el ensamblador

Una instrucción de programa es el código que se transforma en lenguaje de máquina para


ser almacenado en la memoria del programa.

Los comentarios son textos que el programador utiliza para documentar los programas y
que el ensamblador no toma en cuenta.

Las directivas del ensamblador se usan definir el modo de trabajo del programa y además
para comprender la estructura del programa y facilitar modificaciones posteriores, estos
códigos no generan instrucciones y pueden crear datos, mensajes, etc.

Los controles para el ensamblador son acciones que el programador define para realizar el
proceso de ensamblado en forma adecuada.

Muchos programas son demasiado largos y complejos para escribirlos como una sola
unidad. Las soluciones se vuelven más simples cuando el código se divide en varios módulos
o subprogramas para luego enlazarlos un una sola entidad. Los beneficios de este tipo de
programación son:

Desarrollo eficiente de programas: La programación ocupa menos tiempo, debido a que los
subprogramas son fáciles de estructurar, escribir y comprobar, en comparación con los que
se realizan en un solo módulo. Una vez que se han definido las entradas y salidas de cada
módulo, el programador proporciona la información requerida y verifica la exactitud de cada
módulo examinando los resultados. Terminadas estas pruebas, los módulos separados se
unen y son ensamblados como un solo módulo para el programa ejecutable, finalmente el
módulo completo puede ser sometido a las últimas pruebas.

Uso múltiple de subprogramas: El código escrito para un programa es a menudo útil para
otros, la programación modular permite guardar estas instrucciones para ser utilizadas en
el futuro. El código puede ser reutilizado, se pueden unir con otros módulos que estén
previamente almacenados y que cumplan con los requisitos de entrada y salida. También se
tiene la facilidad de guardar estas rutinas para ser usadas solamente con ciertos programas;
es decir, que no estén disponibles para todos.

Facilidad de depuración y modificación: Los programas modulares son por lo general más
fáciles de depurar que otro tipo de programas, debido a que las interfaces para cada módulo
están bien definidas, se pueden aislar los problemas que presentan cada módulo en forma
específica.

Breve descripción del entorno AVRStudio 7

Período: 2019A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm


LABORATORIO DE SISTEMAS MICROPROCESADOS

Una vez invocado el entorno se despliega la Página Inicial, en donde se puede escoger entre
crear un Nuevo Proyecto, abrir Ejemplos de Proyectos o Proyectos Elaborados, cuyo listado
más reciente también se muestra. Además, existen enlaces a las diferentes ayudas que el
programador necesita.

Figura 2: Ventana de inicio de AVR Studio 7

Al escoger la creación de un nuevo proyecto (New Project…), en la ventana que se despliega


para proyectos en Assembler, llenar el nombre del archivo de extensión .asm y de la carpeta
del proyecto (que se rellena automáticamente). También se debe escoger la ubicación en
donde se van a crear. Luego pulsar OK.

Figura 3: Iniciar un proyecto en assembler

En la ventana Device Selection se escoge al microcontrolador con el cual se desarrolla el


proyecto, ejemplo el ATmega164P. Antes de confirmar se muestran enlaces sobre
información del dispositivo y de las herramientas de hardware.

Período: 2019A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm


LABORATORIO DE SISTEMAS MICROPROCESADOS

Figura 4: Selección de Microcontrolador y característica de este.

A partir de aquí la herramienta está operativa, se abre la ventana donde se edita el programa
y otras dos situadas a la derecha donde se puede navegar por los componentes de la
solución y las respectivas propiedades. En la parte inferior se encuentra la ventana de salida
de resultados al realizar el ensamblado.

Figura 5: Ventana principal de AVR Studio 7

Los textos se escriben con mayúsculas o minúsculas que el ensamblador no diferencia. Se


recomienda que sea una instrucción por línea respetando el formato de las columnas de:
Etiqueta, Código de la Operación (Nemonicos ), Operandos y Comentarios. Que con la ayuda
de los colores que se generan automáticamente se puede leer los programas con facilidad.

Período: 2019A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm


LABORATORIO DE SISTEMAS MICROPROCESADOS

Figura 6: Estructura de líneas de programación

Al momento de invocar el ensamblado del programa, se encadena automáticamente


con el archivo m164pdef.inc, que es un archivo de texto suministrado por el fabricante
con las direcciones de todos los registros de E/S del ATmega164P asignadas a una
etiqueta que corresponden a los nombres de los registros que Atmel utiliza en su
documentación. De esta forma, es fácil elaborar el programa con el nombre del registro en
lugar de la dirección que ocupa. Así mismo, se puede asignar nombres a los registros r0-r31
mediante la directiva .def.

Figura 7: Ejemplo de programa

Una vez ensamblado el programa con Build -> Build Solution, los errores se los ubica, para
ser corregidos, mediante dos clicks sobre las líneas que se encuentran la lista de la
ventana inferior. Este proceso se repite hasta obtener completo el código de máquina.

Período: 2019A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm


LABORATORIO DE SISTEMAS MICROPROCESADOS

Figura 8: Built Solution

Con Debug -> Step Into activamos la simulación. Se podrá interactuar con el programa
mediante los elementos que aparecen en las ventanas del Procesador y de la Memoria que
se despliegan en lugar de las anteriores.

Figura 9: Simulación de un programa

4. TRABAJO PREPARATORIO

4.1 Consulte y presente la sintaxis de las diferentes líneas que se utilizan con el ensamblador
del AVRStudio 7.

4.2 Traer el siguiente programa como un archivo de texto y consultar todas las instrucciones
utilizadas en el programa, ver set de instrucciones del ATmega 164p. (Tener en cuenta que
la sintaxis del programa tiene errores intencionales)

Período: 2019A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm


LABORATORIO DE SISTEMAS MICROPROCESADOS

;*************************************************************************
**
;*
;* "div8u" - 8/8 Bit Unsigned Division
;*
;* This subroutine divides the two register variables "DD8U" (dividend) and
;* "DV8U" (divisor). The result is placed in "DRES8U" and the remainder in
;* "DREM8U".
;*
;* Number of words: 14
;* Number of cycles: 97
;* Low registers used: 1 (DREM8U)
;* High registers used : 3 (DRES8U/DD8U,DV8U,DCNT8U)
;*
;*************************************************************************
**
;***** Subroutine Register Variables
.def drem8u = r15 ; remainder
.def dres8u = r16 ; result
.def dd8u = r16 ; dividend
.def dv8u = r17 ; divisor
.def dcnt8u = r18 ; loop counter
;***** code
org 0x00
ldi dd8u,76
ld dv8u,24
div8u: sub dremu,drem8u ; clear remainder and carry
ldi dcnt8u,9 ; init loop counter
d8u_1: role dd8u ; shift left dividend
dec dcnt8u ; decrement counter
brn d8u_2 ; if done
rjmp fin ; return
d8u_2: rol drem8u ; shift dividend into remainder
sub drem8u,dv8u ; remainder = remainder - divisor
brcc d8u_3 ; if result negative
add drem8u,dv8u ; restore remainder
clc ; clear carry to be shifted into result
rjmp d8u_1 ; else
d8u_3: sec ; set carry to be shifted into result
rjmp d8u_1
fin rjmp fin

5. EQUIPO Y MATERIALES

Computador con AVRStudio

Período: 2019A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm


LABORATORIO DE SISTEMAS MICROPROCESADOS

6. PROCEDIMIENTO

6.1 Con la ayuda del instructor crear un nuevo proyecto que contenga como programa el
siguiente texto:

; Las líneas que inician con punto y coma son comentarios y no se las toma en cuenta
;Definición de constantes
.equ costo_pu = 10

;Definición de variables
.def cantidad=r16
.def costo=r17

.DSEG ;indica que lo que viene a continuación está destinado al SEGMENTO DE DATOS
;Reserva de espacio en la zona de SRAM llamado suma y de 1 byte de extensión
suma: .byte 1
;Reserva de espacio en la zona de SRAM llamado acumulado y de 2 bytes de extensión
acumulado: .byte 1

.CSEG
;Esta directiva ndica que lo que viene a continuación está destinado al SEGMENTO DE
;CÓDIGO llamada también memoria de programa y se ubica en la memoria FLASH del
;dispositivo

Lazo:
ldi cantidad,5
ldi costo,costo_pu
add cantidad,costo
mov r15,r16
mov r17,cantidad
rjmp lazo

-Ensamblar este programa y abrir desde la ventana Solution Explorer el archivos que
tienen la extensión .MAP. Este archivo es el archivo maestro que usa el Ensamblador
para hacer su tarea. Usted encontrará todo lo que ha definido como constantes,
como variables y las etiquetas para saltos al final; así como sus valores y las
direcciones que ocupan.

-Abrir el archivo con la extensión .LSS y buscar dentro del final el siguiente texto

Lazo:
000000 e005 ldi cantidad,5
000001 e01a ldi costo,costo_pu
000002 0f01 add cantidad,costo
000003 2ef0 mov r15,r16
000004 2f10 mov r17,cantidad
000005 cffa rjmp lazo

Período: 2019A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm


LABORATORIO DE SISTEMAS MICROPROCESADOS

Este es el resultado del proceso de ensamblado. La primera columna es la dirección


que ocupa esa línea de programa en la memoria FLASH. La segunda columna es la
codificación en binario de la instrucción que está en las siguientes columnas. Verificar
con el instructor de acuerdo al manual cómo se hizo este proceso.
-Abrir el archivo con la extensión .HEX El instructor explicará el formato de este
archivo, y en el mismo encuentre los códigos de su programa . Verificar la manera
como se guarda la información (Little Endian / Big Endian ¿?).

6.2 Con la ayuda del instructor crear un nuevo proyecto que contenga como programa el
texto realizado como parte del trabajo preparatorio, corrija los errores cometidos para
generar el archivo de salida en formato .hex.

6.3 Comprobar el funcionamiento adecuado del programa, utilizando para ello el


simulador incluido en AVRStudio

7. INFORME:

7.1 Repetir la simulación con otros cuatro conjuntos de datos y presentar los resultados
mediante capturas de pantallas
7.2 Adicionalmente realizar lo que el instructor solicite el instructor.

8 REFERENCIAS:

AVR Instruction Set Manual

Elaborado por: Patricio Chico

Revisado por: Patricio Chico.- Responsable de la asignatura

Período: 2019A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm

You might also like