Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
TAREA 21 - AVR 15 DE NOVIEMBRE DE 2020 Hector Campos Serna Código. 215646659 Seminario de Arquitectura de Computadoras D-11 Maestro: Martin Hernández García AVR El lenguaje ensamblador es un lenguaje de programación de bajo nivel para los computadores, microprocesadores, microcontroladores, y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Esta representación es usualmente definida por el fabricante de hardware (como Atmel), y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria, y otras características del lenguaje. LDI – Load Inmediate Esta función nos permite cargar una constante de 8 bits directamente para registrar de 16 a 31. Operación: RdK Sintaxis: LDI Rd, K Operadores 16 ≤ d ≤ 31, ≤ 255 Contador del programa: PC PC +1 Ejemplo: clr r31 ; Clear Z high byte ldi r30,$F0 ; Set Z low byte to $F0 lpm ; Load constant from Program ; memory pointed to by Z La capacidad de la pila cambiará de acuerdo con la referencia del microcontrolador que se esté utilizando, pero en general los microcontroladores AVR necesitan 16 bits para direccionamiento de la Pila, debido a que el microcontrolador AVR es de 8 bits entonces se hace necesario utilizar dos registros para el SP, estos son el SPH y el SPL (high and low) y se refieren a los bits más significativos y menos significativos respectivamente. Ejemplo 2: ldi r16,high(RAMEND) ; carga el registro 16 con los 8 bits mas significativos de RAMEND out SPH,r16 ; copia en contenido de el registro 16 en SPH ldi r16,low(RAMEND) ; carga el registro 16 con los 8 bits menos significativos de RAMEND out SPL,r16 ; copia en contenido de el registro 16 en SPL ; Nota: los valores de RAMEND son tomados de manera automática cuando en Atmel Studio se selecciona el microcontrolador OUT - Store Register to I/O Location Esta función almacena datos del registro Rr en archivo de registro para el espacio de E/S (puertos, temporizadores, registros de configuración, etc.). Operación: I/O (A) Rr Sintaxis: OUT A, Rr Operadores 0 ≤ r ≤ 31, 0 ≤ A ≤ 63 Contador del programa PC PC + 1 Ejemplo: clr r16 ; Clear r16 ser r17 ; Set r17 out $18,r16 ; Write zeros to Port B nop ; Wait (do nothing) out $18,r17 ; Write ones to Port B También lo podemos definir como que OUT escribe o manda información a un puerto de salida y podemos utilizar el ejemplo 2 para ver cómo funciona. Ejemplo 2: ldi r16,high(RAMEND) ; carga el registro 16 con los 8 bits mas significativos de RAMEND out SPH,r16 ; copia en contenido de el registro 16 en SPH ldi r16,low(RAMEND) ; carga el registro 16 con los 8 bits menos significativos de RAMEND out SPL,r16 ; copia en contenido de el registro 16 en SPL ; Nota: los valores de RAMEND son tomados de manera automática cuando en Atmel Studio se selecciona el microcontrolador Bibliografía: AVR Instruction Set Manual (ATMEL): http://ww1.microchip.com/downloads/en/devicedoc/atmel-0856-avr-instruction-set-manual.pdf wikidot.com. (unknown). AVR Assembler. 15/11/2020, de wikidot.com Sitio web: http://sistdig.wikidot.com/wiki:avr-assembler rjhcoding.com. (unknown). Carga de datos de la memoria del programa. 15/11/2020, de rjhcoding.com Sitio web: http://www.rjhcoding.com/avr-asm-pm.php http://ww1.microchip.com/downloads/en/devicedoc/atmel-0856-avr-instruction-set-manual.pdf http://sistdig.wikidot.com/wiki:avr-assembler
Compartir