Logo Studenta

AVR - Hector Campos

¡Estudia con miles de materiales!

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: 
RdK 
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

Continuar navegando