Está en la página 1de 24

MICROCONTROLADOR

ATMega328p
Lenguaje Ensamblador
ATMega328p – AVR CPU CORE

➢ Función principal de la CPU: ejecución de programas. La


CPU debe tener acceso a las memorias, realizar cálculos,
controlar periféricos y manejar interrupciones.

➢ El AVR usa una arquitectura Harvard: memoria de programa y


memoria de datos.

➢ La ALU ejecuta operaciones aritméticas y lógicas entre


registros o entre un registro y una constante. También hay
operaciones con un solo registro.

➢ Después de una operación aritmética, el registro de Estado


(Status Register) es actualizado, para reflejar información
acerca de la operación.
ATMega328p – Ejecución de instrucciones

➢ Registro PC (Program
Counter): Dirección de
la siguiente instrucción a
ejecutar (entrada de
dirección de la memoria
de programa). Por lo
general, PC  PC + 1
cuando se ejecuta la
instrucción.

➢ Registro IR (Instruction
Register): instrucción a
ser ejecutada (palabra de
salida de la memoria de
programa).
ATMega328p – Ejecución de instrucciones

➢ El flujo del programa por naturaleza es secuencial. Puede ser


modificado por instrucciones de saltos condicionales e
incondicionales y llamadas a rutinas, que pueden abarcar
completamente el espacio de direcciones.

➢ Las instrucciones en la memoria de Programa son ejecutadas


con una segmentación de dos etapas.

➢ Mientras una instrucción está siendo ejecutada, la siguiente es


capturada de la memoria de programa. Este concepto hace que
se produzca una instrucción por cada ciclo de reloj.
ATMega328p – Ejecución de instrucciones
ATMega328p – Ejecución de instrucciones
Para la ejecución de instrucciones aritméticas y lógicas, la
duración del ciclo es suficiente para permitir la lectura de
registros, la operación de la ALU y la escritura en el registro
destino.
ATMega328p – Lenguaje Ensamblador

Lenguaje máquina: Conjunto de instrucciones


codificadas en binario del microprocesador o
microcontrolador.

Lenguaje Ensamblador: Mnemónicos


correspondientes a cada una de las instrucciones en
lenguaje máquina del microprocesador o
microcontrolador.
ATMega328p – Lenguaje Ensamblador

Ejemplos:

Mnemónico Código de operación

ADD R0, R1 0000 1100 0000 0001


ATMega328p – Lenguaje Ensamblador

Ejemplos:

Mnemónico Código de operación

AND R8, R4 0010 0000 1000 0100


ATMega328p – Lenguaje Ensamblador

Ejemplos:

Mnemónico Código de operación

MOV R31, R30 0010 1111 1111 1110


ATMega328p – Lenguaje Ensamblador
Instrucciones:
ejecución y tipo de
direccionamiento

ADD R0, R1

R0  R0 + R1

Direccionamiento:
Directo por registro
ATMega328p – Lenguaje Ensamblador
Instrucciones:
ejecución y tipo de
direccionamiento

AND R8, R4

R8  R8 AND R4

Direccionamiento:
Directo por registro
ATMega328p – Lenguaje Ensamblador
Instrucciones:
ejecución y tipo de
direccionamiento

MUL R31, R30

R1:R0  R31×R30

Direccionamiento:
Directo por registro

# ciclos: 2
ATMega328p – Lenguaje Ensamblador
Instrucciones:
ejecución y tipo de
direccionamiento

LDS R7, 0x0700

R7  (k)

Direccionamiento:
Directo a memoria 0x0700

de datos

# ciclos: 2
ATMega328p – Lenguaje Ensamblador
Instrucciones:
ejecución y tipo de
direccionamiento

STS 0x0700, R7

(k)  R7

Direccionamiento:
Directo a memoria 0x0700
de datos

# ciclos: 2
ATMega328p – Lenguaje Ensamblador
Instrucciones:
ejecución y tipo de
direccionamiento

LD R2, X
R27:R26
R2  (X)

Direccionamiento:
Indirecto a memoria
de datos

# ciclos: 2
ATMega328p – Lenguaje Ensamblador
Instrucciones:
ejecución y tipo de
direccionamiento

ST X, R2
R27:R26
(X)  R2

Direccionamiento:
Indirecto a memoria
de datos

# ciclos: 2
ATMega328p – Lenguaje Ensamblador
Programa en lenguaje ensamblador

Contiene:
➢ Instrucciones: Mnemónicos que se traducen a
código máquina (opcode y operandos). El
procesador ejecuta las instrucciones.
➢ Directivas: Elementos del lenguaje que ayudan en la
organización de un programa, indicando diferentes
aspectos como la ubicación del código, definiciones,
etc. Las directivas no generan código máquina, son
elementos propios de la herramienta empleada para
ensamblar un programa.
ATMega328p – Lenguaje Ensamblador
Directiva INCLUDE

Usada para leer el código fuente de otro archivo, se coloca al


inicio de un programa y generalmente es utilizada para incluir
todas las definiciones relacionadas con un dispositivo particular.
En los programas desarrollados para un ATMega328P se debe
agregar:

.include <m328pdef.inc> ; Definiciones para un ATMega328P

Con ello, todos los Registros I/O (normales y extendidos) pueden


ser tratados por su nombre y no por su dirección, aunque en la
versión más reciente de Microchip Studio no es necesario incluir
algún archivo para que los nombres de los registros sean
reconocidos.
ATMega328p – Lenguaje Ensamblador
Directiva DEF

La directiva DEF establece un nombre simbólico a un registro,


para dar claridad a los programas. El nombre puede ser empleado
en cualquier parte de un programa. Ejemplo:

.DEF limite = R16


.DEF conta = R20
ATMega328p – Lenguaje Ensamblador
Ejemplos de programas en lenguaje ensamblador

Cuales son los valores finales almacenados en los


registros r0, r1 y y?

.include <m328pdef.inc> ;Carga de sram ; Problema a resolver


; Inicializando datos ldi r16,0x08 mov r0,r1 ; r0=0xff
ldi r16,0x00 sts 0x200,r16 movw r0,y ; r0=0x01 r1=0x02
mov r0,r16 ldi r16,0x03 ld r0,y+ ; r0=0x03 y=0x0202
ldi r16,0xff sts 0x201,r16 ld r0,-y ; r0=0x03 y=0x0201
mov r1,r16 ldi r16,0x01 ldd r0,y+2 ; r0=0x00 y=0x0201
ldi yh,0x02 sts 0x202,r16
ldi yl,0x01 ldi r16,0x00
sts 0x203,r16
ATMega328p – Lenguaje Ensamblador

Determine el tiempo de ejecución del bucle, si la


frecuencia de la señal de reloj es de 16 Mhz.

.include <m328pdef.inc> mov i,inicio


; Problema de ejemplo de bucle for
bucle:cp inicio,fin; Verifica si inicio>fin
.DEF inicio=r20 brge salir_bucle
.DEF fin=r21 inc inicio
.DEF i=r22 nop
nop
ldi inicio,0x10 jmp bucle
ldi fin,0x15 salir_bucle:
nop
break
BIBLIOGRAFÍA

ATmega328P 8-bit AVR Microcontroller with 32K


Bytes In-System Programmable Flash, DATASHEET.

AVR Microcontrollers AVR Instruction Set Manual

Ejemplos de programación en ensamblador para el


microcontrolador ATmega
https://www.dte.us.es/docencia/etsii/gii-
ti/edc/grupos/grupoPPF/ejemplosavr
BIBLIOGRAFÍA

“El microcontrolador ATMega328P de Microchip”.


Felipe Santiago Espinosa.

También podría gustarte