DIRECTIVAS AVR

download DIRECTIVAS AVR

of 26

  • date post

    14-Jul-2015
  • Category

    Documents

  • view

    141
  • download

    3

Embed Size (px)

Transcript of DIRECTIVAS AVR

__________________________________________________________________________ITSP

Directivas y Software del AVR Studio4.1 DIRECTIVAS Y EXPRESIONES DEL ENSAMBLADOR AVR STUDIODirectivas del Ensamblador La Directivas en el Ensamblador se ajustan al cdigo del usuario. Por ejemplo, podrs cambiar la localidad del cdigo en la memoria del programa, asignando etiquetas que direccionan a la SRAM o definir los valores de las constantes. .macro es tambin una directiva en el ensamblador. Las directivas del ensamblador se pueden dividir dentro de los siguientes grupos: Directivas de la Memoria Programa .cseg "Segmento de Cdigo"; esta directiva le dice al ensamblador que el siguiente cdigo o expresiones debern colocarse en la memoria de programa. Esto es necesario cuando la directiva .dseg se usa para declarar constantes y datos. Sintaxis: .cseg .db "Byte de Datos"; con esta directiva podrs colocar valores de las constantes en la memoria de programa en una direccin conocida, por ejemplo, nmeros seriados, cadenas para un men, tablas. Ellos son tratados como bytes y debern estar dentro de un rango de 8 bits. Casi todas las expresiones utilizan la directiva .db. Cada directiva .db se colocara al inicio de una nueva palabra en la memoria de programa. As, dos directivas .db de un solo byte como argumento usaran dos palabras, mientras que una directiva .db con dos bytes como argumentos usaran solamente una palabra. Ver el ejemplo siguiente: Sintaxis: .db expresin1,expresin2,expresin3, ...

Documento traducido de la pagina AVRfreaks.net

1

__________________________________________________________________________ITSP Ejemplos:.org 0x0100 .db 128 .db low(1000) .db 128,low(1000);colocar en la memoria de programa a partir de la direccin 0x0100 ;coloca el numero 128 en el byte bajo de la direccin 0x0100 en memoria de programa ;coloca el byte bajo de 1000 en la direccin baja de 0x0101 ;coloca 128 en el byte bajo y el byte bajo de 1000 en la direccin alta de la direccin 0x0102 en la memoria de programa

Las cadenas pueden ser colocadas en la memoria de programa con solo la directiva .db: .db "Hello World!" Esto rellenar 6 palabras de datos o 12 bytes. Si deseas que a la cadena se le aada un 0 al final de la misma debers colocarla as: .db "Hello World!", 0 .dw "Palabra de Datos"; la directiva .dw trabaja como la directiva .db, pero se usar una palabra para cada valor. .org .org puede ser usada para establecer el contador de programa a un valor especfico. .org 0x01 es el Vector de Interrupcin para una interrupcin externa 0 en dispositivos con una tabla de interrupcin de una palabra. Sintaxis: .org localidad (es la direccin de la localidad donde se colocaran las tablas de instrucciones o datos). Directivas SRAM .byte Reserva un nmero de bytes en el espacio de la SRAM para una etiqueta. Esta directiva es solamente permitida en segmentos de datos. Sintaxis: .byte tamao

Documento traducido de la pagina AVRfreaks.net

2

__________________________________________________________________________ITSParray_5: .byte 5 my_word: .byte 2 ; array_5 es un segmento de 5 bytes en la SRAM ;y es seguida por my_word de dos bytes

.dseg "Segmento de Datos"; le dice al ensamblador que el siguiente texto es usado para establecer la SRAM. Para cambiarse al segmento de cdigo de nuevo, use .cseg. .org Utilice esta directiva para establecer el contador de la localidad SRAM a un valor especfico dentro de .dseg. Juntos con .byte puedes definir las localidades de la SRAM en direcciones especificas con un tamao especfico. Directivas EEPROM Las directivas EEPROM trabajan justo como las directivas para la memoria de programa y la SRAM. Los valores pueden ser descargados para almacenarlos en la EEPROM y las directivas .db y .dw se usan de igual manera. .db .dw .eseg .org Directivas de Registros y Constantes .def "Definir (registros)"; con esta directiva podrs asignar nombres a los registros para identificarlos. Sintaxis: .def nombre = registro Ejemplo: .def temp = r16 .equ Esta directiva asigna un nombre a una constante la cual no pueda cambiarse despus: .equ max_byte = 255 Documento traducido de la pagina AVRfreaks.net3

__________________________________________________________________________ITSP .set Esta directiva trabaja de forma similar a .def, pero el valor de la etiqueta puede cambiarse despues: .set contador = 1 .set contador = 2 .set contador = 1 se le sobreescribe con .set contador = 2. Directivas de Cdigo .endm / .endmacro "Fin de la Macro"; Esta le dice al ensamblador que una macro previamente comenz y finalice aqu. Solamente se usa cuando al inicio se tenga la directiva .macro. .macro Esta inicia un cdigo de macro. .include Incluye archivos (por ejemplo, la definicin de archivos para cada AVR) y tiene la posibilidad de separar cdigo dentro de varios archivos. Sintaxis: .include path Ejemplo:.include c:\Archivos de programa\Atmel\AVR Tools\AvrAssembler\Appnotes\m32def.inc" .include "\drv_routines\lcd.inc"

Directivas de Salida del Ensamblador .device Esta directiva le dice al ensamblador cual AVR se va a utilizar para el cdigo y se establecen los parmetros del Simulador AVR Studio. AT90S1200 ATmega32 ATtiny26 Sintaxis: .device codigo_del_dispositivo Documento traducido de la pagina AVRfreaks.net4

__________________________________________________________________________ITSP .exit Le dice al ensamblador cuando detenerse el archivo actual. Ejemplo: .def byte_max = 255 .def clock = 8000000 .exit El valor mximo de un byte es de 255 y algunos dispositivos trabajan a 8 MHz .list El ensamblador por default crea un archivo de lista (una combinacin de cdigo fuente, cdigo de operacin y constantes). Aunada con .nolist puedes especificar que partes del archivo se mostraran en el archivo de lista. .listmac Esta directiva creara una macro expansin del archivo lista. Por default, solamente se ve que macro es llamada y que argumentos se usan. Para poder ver que esta pasando durante la ejecucin, para propsitos de debugging. .nolist Directiva que detiene la generacin del archivo de lista.

Documento traducido de la pagina AVRfreaks.net

5

__________________________________________________________________________ITSP

4.2 INICIALIZANDO EL AVR STUDIO

Inicialice el programa del AVR Studio 4 dando un clic en:Inicio Todos los Programas ATMEL AVR Tools AVR Studio 4

Una vez que dio clic en el programa, se ver una pantalla como esta.

4.3 CREANDO UN PROYECTO NUEVOEn esta seccin se crear un programa simple que incremente el valor de uno en los registros del PUERTO, haciendo un conteo binario. Para crear un proyecto nuevo, vaya al men Project y selecciona New Project. Un cuadro de dialogo se mostrar como aparece en la siguiente figura. En este cuadro de dialogo podrs ver dos tipos de proyectos, si deseas realizar un programa en ensamblador (.asm) elige Atmel AVR Assembler, o de lo contrario si deseas realizar un programa en Lenguaje C (.c) elige AVR GCC. Se elegir un programa en ensamblador y de Project name led, pero este puede ser cualquier nombre. Despus tendrs que seleccionar el lugar donde se guardar el proyecto. Este es el lugar donde el AVR Studio almacenara todos los archivos asociados con este proyecto. Usa un directorio como el c:\CodeAVR. Si la carpeta no existe, AVR Studio automticamente la crear sin ninguna notificacin. Documento traducido de la pagina AVRfreaks.net6

__________________________________________________________________________ITSP NOTA: Si c:\CodeAVR ya existe, borrar esta carpeta y su contenido.

Despus dando un clic en Next>> te llevar a la siguiente pantalla, en donde preguntar que plataforma para el debugger y que dispositivo utilizaras. Debers elegir AVR Simulator y el Dispositivo Atmega32.

Documento traducido de la pagina AVRfreaks.net

7

__________________________________________________________________________ITSP Despus de dar un clic en Finish, el administrador de proyectos te mostrar una figura como la siguiente. En esta vista, se vern todos los archivos asociados con el proyecto, los cuales estarn vacos en este momento.

Editando el Archivo en EnsambladorEl prximo paso es llenar el archivo vaco led.asm. Abra el archivo led.asm dando doble clic en l en la ventana de proyectos. El cursor se coloca al inicio del archivo vaco y tendrs que insertar el siguiente cdigo o simplemente Copiarlo y Pegarlo directamente donde se encuentra la ventana de edicin.;************************************************************** .include "m32def.inc" ;Incluir este archivo para el ATMega32 rjmp RESET ;Saltar a la etiqueta Reset ;************************************************************** RESET: .def temp =r16 ldi out ldi out temp,low(RAMEND) SPL,temp temp,high(RAMEND) SPH,temp

;Definir al registro 16 como temp ;Cargar parte baja del fin de la RAM ;en temp, y despues al stack ;Cargar parte alta del fin de la RAM ;en temp, y despues al stack ;Inicializar el Apuntador de Pila ;Colocar a unos el registro 16 = temp ;Colocar PuertoB como salida en DDRB ;Etiqueta del lazo ;Sacar al PuertoB el dato de temp ;Incrementar temp ;Saltar a loop 8

ser temp out DDRB,temp loop: out PORTB,temp inc temp rjmp loop

Documento traducido de la pagina AVRfreaks.net

__________________________________________________________________________ITSP La ventana del editor deber mostrarse como en la siguiente figura:

Ensamblado del Cdigo FuenteEste ejemplo requiere que el archivo m32def.inc sea insertado en la carpeta c:\CodeAVR\. Este archivo contiene las definiciones necesarias para el ensamblado del microcontrolador ATmega32. Extrae y copia el archivo m32def.inc de la direccin: C:\Archivosdeprograma\Atmel\AVRTools\AvrAssembler\Appnotes en la direccin de la carpeta en c:\CodeAVR\led\. El prximo paso ahora es ensamblar el archivo. Esto se realiza seleccionando Build de