Está en la página 1de 4

Introduccin a AVR-Studio

1. Introduccin y objetivos
- Presentar el entorno de programacin y depuracin de microcontroladores de ATMEL llamado AVRSTUDIO. - Simular y depurar programas escritos en lenguaje ensamblador para el microcontrolador ATMEGA328P. AVR.STUDIO puede descargarse gratuitamente desde las pginas del fabricante de ATMEL en: http://www.atmel.com Durante la sesin de laboratorio se debe disponer de los ficheros indicados en la tabla 1. Nombre del fichero suma.asm suma_tabla.asm compara.asm Contenido Programa que permite calcular la suma de dos nmeros de 32 bits. A completar por el alumno. Programa para calcular la suma de una tabla de nmeros con signo de 8 bits. Programa para calcular los elementos mayor y menor de una tabla de nmeros con signo de 8 bits. A completar por el alumno. Tabla 1: Ficheros necesarios para realizar la prctica

2. Estudio terico
Se van a utilizar tres programas en lenguaje ensamblador. Estos estn disponibles en el directorio correspondiente a esta prctica en la web de la asignatura. A continuacin se presentan algunos detalles de los mismos: 1. Programa SUMA: (objetivos: utilizar los punteros del microcontrolador, introducir la programacin mediante subrutinas y presentar un mtodo para la inicializacin de datos en memoria) Realizaremos una subrutina suma32 en ensamblador del AVR que permitir sumar dos nmeros sin signo de 32 bits. Los 2 sumandos estn en las posiciones de memoria apuntadas por Y e Y+4. El resultado de la suma se almacena a partir de Z. Se recuerda que los datos se almacenan en memoria en little-endian, es decir la parte ms significativa del dato en la direccin de valor mayor.

Y R29 R28

memoria 8 bits A7:0 A15:8 A23:16 A31:24 B7:0 B15:8 B23:16 B31:24

A31:24 A23:16 A15:8 A7:0 B31:24 B23:16 B15:8 B7:0 S31:24 S23:16 S15:8 S7:0

Y+4

Z R31 R30

} } }

dato A R3 dato B R7 R2 R6 R1 R5 R0 R4

S7:0 S15:8 S23:16 S31:24

resultado

Realizacin del programa: El programa del fichero suma.asm consta fundamentalmente de tres partes: - programa principal: desde el que se llama a las dos subrutinas que se mencionan a continuacin, - subrutina iniciaSuma: en la que se escriben en la memoria los dos datos de 32 bits, - subrutina suma32: en la que se suman los dos datos y se almacena el resultado.

2. Programa SUMA_TABLA: (objetivos: presentar otro mtodo para la inicializacin de datos en memoria y perfeccionar el uso de punteros y bucles) Realizaremos una subrutina iniciaTabla en ensamblador del AVR que permitir trasladar una tabla desde la memoria de programa a la memoria de datos. Este traslado lo hacemos, ya que no es posible utilizar la directiva .db (define constante en memoria) directamente sobre la memoria de datos, slo es posible usarla sobre la memoria de programa. Hay que tener encuenta la diferencia del ancho de ambas memorias, cada palabra de la memoria de programa necesitar ser trasladada sobre dos palabras de la memoria de datos.

16 bits

8 bits
memoria

memoria

Z R31 R30

de programa

X R27 R26

de datos

tablatemp

tabla

. . .

. . .

Realizacin del programa: El programa del fichero suma_tabla.asm consta fundamentalmente de tres partes: - definicin de la tabla en la memoria de programa mediante la directiva ".db", - programa principal: desde el que se llama a la subrutina iniciaTabla y, a continuacin, se realiza la suma de elementos mediante un bucle, - subrutina iniciaTabla: en la que se copia la tabla desde la memoria de programa a la memoria de datos.

3. Programa COMPARA: (objetivo: afianzar los conceptos ya explicados y utilizar las instrucciones de comparacin) Realizaremos una subrutina compara en ensamblador del AVR que permitir localizar los elementos mayor y menor de una tabla de datos con signo de 8 bits.

Realizacin del programa: El programa del fichero compara.asm consta fundamentalmente de dos partes: - programa principal: desde el que se inicializa la tabla en memoria por cualquiera de los mtodos ya presentados en los programas anteriores y a continuacin se realiza la bsqueda de los elementos mayor y menor, - subrutinas y definiciones necesarias.

3. Estudio experimental
El estudio experimental se divide en dos bloques: el primero consiste en utilizar los dos primeros programas del estudio terico para familiarizarse con el entorno de desarrollo AVR-STUDIO. Para ello, necesitar completar el programa suma.asm y comprender el programa suma_tabla.asm. El segundo bloque se centra en realizar modificaciones a dichos programas para realizar operaciones ms complejas y generar el tercer programa: compara.asm. Bloque I: - Siga los pasos mostrados en la "gua de uso del programa" para cargar y simular los programas. - Complete el programa suma.asm y compruebe que funciona correctamente. Para ello sume las cantidades $12345678 y $09ABCDEF. Anote el resultado. - Ejecute el programa suma_tabla.asm y compruebe que funciona correctamente. Anote la tabla que se ha utilizado en el programa y el resultado final de la suma. Muestre los valores de los registros R0, R1, temp y R2 para las 4 primeras iteraciones del bucle de suma y explique el procedimiento seguido para la suma y la necesidad de estos registros. Bloque II - Proponga dos ejemplos ms para el programa suma.asm y compruebe nuevamente el resultado. Anote ejemplos y resultados. - Modifique el programa suma.asm para que en caso de desbordamiento de la suma devuelva el valor $FEFEFEFE como resultado y el carry se devuelva a 1. Comprubelo. Anote brevemente las modificiones realizadas y muestre el programa a su profesor. - Pruebe el programa suma_tabla.asm para las siguientes tablas de datos y anote el resultado obtenido. Tabla
10, 4, -1, 0 , 0, 6, 3, 10, 100, -100, 24, 23, -56, 4, 15, 16 -12, 10, -14, 12 , 100, -98, -10, 0, 0 , 1, 1, 0 , -10 , 12, 0, 6 100, 90, 80, 70 , 60, 50 ,40 ,30, 20, 10, 0

- Justifique el resultado que se obtendra para la siguiente tabla de valores y anote sus conclusiones. Tabla
100,200,300

- Complete el programa compara.asm y compruebe que funciona correctamente. Anote la tabla que ha utilizado en el programa y el resultado final de la comparacin.

También podría gustarte