0% encontró este documento útil (0 votos)
30 vistas20 páginas

Capitulo 2

El documento describe las características básicas de los microcontroladores AVR ATTiny11 y ATMega48, incluyendo sus registros internos, modos de direccionamiento y conjunto de instrucciones. Se requiere elaborar un esquema que incluya la sintaxis del lenguaje ensamblador y aplicaciones recomendadas para estos procesadores. Además, se enfatiza la importancia de utilizar recursos documentales fiables para la investigación y la presentación de la tarea.

Cargado por

Octavio Cornelio
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
30 vistas20 páginas

Capitulo 2

El documento describe las características básicas de los microcontroladores AVR ATTiny11 y ATMega48, incluyendo sus registros internos, modos de direccionamiento y conjunto de instrucciones. Se requiere elaborar un esquema que incluya la sintaxis del lenguaje ensamblador y aplicaciones recomendadas para estos procesadores. Además, se enfatiza la importancia de utilizar recursos documentales fiables para la investigación y la presentación de la tarea.

Cargado por

Octavio Cornelio
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Tarea 2.

Esquema de las características básicas de los


AVR ATTiny11 y ATMega48 de ATME.

Actividad. Elaborar un esquema cerca de las características básicas


(registros internos, modos de direccionamiento y conjunto de
instrucciones) de los AVR ATTiny11 y ATMega48 de ATME, de las ocho
instrucciones de su Conjunto de Instrucciones (dos aritméticas y
lógicas, dos de ramificación, dos de transferencia de datos y dos de
manipulación de bits, diferentes a las descritas en el material del
curso), y da un par de aplicaciones para los que estos procesadores
son recomendables
Para realizar esta actividad:
1. Lee los contenidos temáticos que integran esta unidad:
1. Arquitectura de los microcontroladores AVR
2. Registros internos
3. Modos de direccionamiento
4. Puertos de Entrada/Salida
5. Conjunto de instrucciones
2. Elabora un esquema de
1. Las características básicas de los de los AVR ATTiny11 y
ATMega48 de ATME.
2. La sintaxis del lenguaje ensamblador de cada una de estas
familias, y
3. Dos aplicaciones para los que cada familia de
procesadores es más apta.
3. Puedes realizar una investigación documental en medios
electrónicos fiables de acceso gratuito en la Web. Los recursos
electrónicos fiables se refieren a sitios principalmente de
universidades y revistas electrónicas especializadas. No se
permiten recursos de sitios como "El rincón del vago",
"Monografí[Link]", "Gestiópolis", etc., por ser considerados
sitios no fiables.
Criterios para la ejecución de la actividad:
El documento deberá contar con los siguientes puntos.
1. Las características básicas de los procesadores Intel Pentium y
microcontroladores AVR de ATMEL
2. La sintaxis del lenguaje ensamblador de cada una de estas
familias.
3. Dos aplicaciones para los que cada familia de procesadores es
más apta.
4. Puedes enriquecer tu tarea con imágenes que consideres
pertinentes, ya sea en electrónico o escaneadas; recuerda que
debe utilizar formatos de imagen ligeros, ya que no puede subir
un archivo mayor de 2 Mb a la plataforma.
5. El cuadro deberá ir en un documento de Word, con las
referencias documentales citadas de acuerdo con la APA.

Tema 2.1 Arquitectura de los microcontroladores AVR


Tema 2.1 Arquitectura de los microcontroladores AVR
Los microcontroladores son circuitos integrados (chips) que contienen una CPU,
una pequeña unidad de memoria y unidades de Entrada/Salida; es decir, desde
el punto de vista del modelo Von Neumann, es una pequeña computadora en
un chip. Son circuitos diseñados para controlar equipos electrónicos.
Los microcontroladores representan la inmensa mayoría de los chips de
microprocesadores vendidos, 50% son controladores "simples". Probablemente
tienes distribuidos entre los electrodomésticos de tu hogar una o dos docenas
de microcontroladores (estás usando uno para leer esto). Pueden encontrarse
en casi cualquier dispositivo eléctrico como automóviles, lavadoras, hornos de
microondas, teléfonos, etcétera.
Sus unidades de entrada/salida son, entre otros, entradas/salidas digitales,
comparadores de señales analógicas, temporizadores e interfaces seriales
especializadas, por mencionar algunos.
Los microcontroladores se fabrican normalmente como familias de
procesadores, es decir, procesadores que comparten un conjunto de
instrucciones común a todos los miembros de la familia, y algunas unidades de
entrada/salida también comunes. Los miembros más avanzados de la familia
tienen instrucciones adicionales y también dispositivos de entrada/salida
adicionales.
La figura siguiente nos muestra la arquitectura típica de los microcontroladores
AVR.
En la figura podemos apreciar entre los elementos de estos microcontroladores
la Unidad Aritmética y Lógica (ALU, por sus siglas en inglés), un conjunto de 32
registros de propósito general de 8 bits (general purpose registers); la memoria
estática para datos (Data SRAM); la memoria Flash (Program Memory); la
memoria EEPROM y un bus de datos interno de 8 bits, entre otros.
Los registros de propósito general están conectados directamente a la UAL, lo
que beneficia la velocidad de ejecución del circuito. La ALU puede ejecutar
operaciones aritméticas y lógicas entre registros o entre una constante y un
registro. Los primeros 16 registros (0 ... 15) no pueden recibir valores
inmediatos y no pueden usarse en algunas instrucciones, como andi, por
ejemplo. Los registros están también conectados con la SRAM. Seis de los 32
registros de propósito general pueden utilizarse como tres registros para
direccionamiento indirecto. Esto es porque estos microcontroladores utilizan
direcciones de 16 bits.
En general, y la familia AVR no es la excepción, los microcontroladores usan
una arquitectura conocida como arquitectura Harvard, en la que la hay dos
memorias: una para datos y otra para instrucciones, a diferencia de la
arquitectura Von Neumann, en la que datos e instrucciones comparten una
misma memoria.
Los microcontroladores más utilizados son:
 .AVR
 .MSP430
 .PIC
En este curso aprenderás a programar los microcontroladores de la familia AVR.

Tema 2.2 Registros internos


Dentro de todo procesador hay registros de propósito general, que se utilizan
para almacenar datos y resultados intermedios y registros de propósito
específico, que tienen una función predeterminada, como el registro Program
Counter (PC), que almacena la dirección de memoria donde se encuentra la
siguiente instrucción a ejecutar.
Todos los microcontroladores AVR cuentan con 32 registros de 8 bits de
propósito general. La siguiente figura nos muestra estos registros.
En la figura se puede apreciar que los registros están divididos en dos grupos:
un primer grupo formado por los registros R0 .. R15 y un segundo grupo
formado por los registros R16 .. R31.
Hay un grupo de instrucciones aritméticas, lógicas y de carga que sólo se
aplican al segundo grupo. Estas instrucciones son: SBCI, SUBI, CPI, ANDI, ORI y
LDI. No te preocupes si ahora no entiendes qué significan estas palabras raras
(de hecho, son instrucciones en lenguaje ensamblador), lo sabrás cuando
estudiemos el conjunto de instrucciones de estos microcontroladores.
En la figura también se aprecia que cada registro tiene asociada una dirección
de la memoria de datos (Data SRAM). Por ejemplo: R0 tiene asociada la
dirección $00 ($00 significa que se trata del número hexadecimal 00, que
equivale al binario 000000002), y el registro R14 tiene asociada la dirección
$0E (que equivale al binario 000011102).
Por cierto, si no te sientes cómodo con el manejo de los sistemas numéricos
hexadecimal y binario, te recomiendo que los repases ya que son muy
necesarios para la programación en bajo nivel. Para tal repaso puedes
consultar la Guía sobre sistemas numéricos de Sandro Costantini.
Regresando al asunto de los registros, en la figura se aprecia que los registros
R26 .. R31 tienen funciones adicionales, además de ser registros de propósito
general, estos registros son apuntadores para el modo de direccionamiento
indirecto de datos. Un apuntador es un registro cuyo contenido es una
dirección, no un dato. Otra vez, no te preocupes por eso del modo de
direccionamiento indirecto, lo veremos más adelante cuando hablemos de los
modos de direccionamiento.
Estos seis registros están definidos como los registros X, Y y Z, como se ilustra
en la siguiente figura:

En la figura se aprecia que el registro X está formado por la unión o


concatenación de los registros R26 y R27, donde R26 es la parte baja y R27 la
parte alta, que representamos como R27:R26, que el registro Y está formado
por la concatenación R29:R28, y que el registro Z está formado por la
concatenación R31:R30.
Estos registros son utilizados de diversas maneras en los diferentes modos de
direccionamiento de estos microcontroladores, que, como se mencionó hace
poco, trataremos cuando hablemos de los modos de direccionamiento que
manejan estos circuitos.
Otro registro importante es el registro de estado o Status Register (SREG). Los
diferentes bits de este registro nos proporcionan información sobre el estado
del procesador y sobre el último resultado obtenido por la Unidad Artimética y
Lógica (ALU, por sus siglas en inglés). Por ejemplo, el bit 4 de SREG (bit S, de
Sign) nos indica que el último resultado es un número negativo y el bit 1 (bit Z,
de Zero) nos indica que el último resultado es exactamente cero. La siguiente
figura nos muestra este registro:

Más adelante, ya que estemos programando en ensamblador y una vez que


hayamos utilizado de varias maneras estos registros, veremos algunas
sugerencias para optimizar su uso.
Los registros son circuitos electrónicos que pueden almacenar un conjunto de
bits. Una forma de describir los registros es por el número de bits que
almacenan. Al decir que un registro es de 8 bits, estamos diciendo que este
circuito puede almacenar un grupo de 8 bits, es decir, un byte. Dentro de un
procesador, los registros son los dispositivos de almacenamiento más cercanos
a la UAL, lo que hace que las operaciones realizadas con los datos
almacenados en registros se ejecutan más rápido que las operaciones que se
realizan con datos almacenados en la memoria SRAM.

Tema 2.3 Modos de direccionamiento


Como ya comentamos antes, el lenguaje máquina es el único que el hardware
entiende. En este lenguaje, las instrucciones y los datos están representados
por cadenas de 1's y 0's.
Formato de instrucción en lenguaje máquina
Una instrucción en lenguaje máquina tiene dos partes:
 Código de operación, que indica la operación a realizar por ejemplo:
sumar o restar; y
 Campo de direccionamiento, que indica con qué datos se debe realizar la
operación.
Los modos de direccionamiento se refieren a la manera en que se indica la
posición de los datos en el campo de direccionamiento.
Existen diferentes formatos de instrucciones en lenguaje máquina de acuerdo
con el número de campos de direccionamiento con los que cuentan las
instrucciones.
Instrucciones sin campo de direccionamiento
Estas instrucciones sólo cuentan con código de operación. El dato, si se ocupa,
está almacenado en un registro o dirección implícita.
Instrucciones con un campo de direccionamiento
Estas instrucciones cuentan con el código de operación y un campo de
direccionamiento. Generalmente son instrucciones que sólo requieren un dato,
por ejemplo, es común una instrucción inc dato (de incremento), que
incrementa en uno su único dato.
Instrucciones con dos campos de direccionamiento
Son instrucciones que operan sobre un par de datos, por ejemplo, la suma.
Generalmente en estas instrucciones uno de los campos de direccionamiento
indica un operando y el destino, es decir, el lugar donde se almacenará el
resultado. Por ejemplo, es común una instrucción add rdest,rorig que indica
que los datos a sumar están en rdest (registro destino) y en rorig (registro
origen), y que el resultado se debe almacenar en rdest. Esto normalmente se
representa así:
add rdest,rorig indica que rdest ← rdest + rorig
Instrucciones con tres campos de direccionamiento
Son instrucciones que tienen dos campos para operandos y un campo para el
destino. Es raro utilizar instrucciones con tres campos de direccionamiento en
los microcontroladores. Dado que la familia AVR no implementa instrucciones
con tres campos de direccionamiento, por el momento no hablaremos más de
este tipo de instrucciones.
Modos de direccionamiento
De manera general, en los microcontroladores AVR se manejan cuatro modos
de direccionamiento:
 Inmediato
 Directo
 Indirecto
 Indexado
Para ilustrar los modos de direccionamiento vamos a utilizar el ejemplo de un
servicio de mensajería que debe recoger en tu casa un cierto paquete para
llevarlo a un determinado destino.
Modo inmediato
En este modo en el campo de direccionamiento se encuentra el dato. En
nuestro ejemplo equivale a llamar al servicio de mensajería y, cuando llegan a
tu casa por el paquete, le das el paquete (dato) y la instrucción de llevarlo a
cierto destino (código de operación). Una vez que el mensajero sale de tu casa,
ya puede realizar su tarea de llevar el paquete a su destino.
En el caso de una instrucción en lenguaje máquina, una vez que la instrucción
llega al CPU, ya puede ejecutarla porque ya tiene el dato a manipular.

Modo directo
En este modo en el campo de direccionamiento se encuentra la dirección del
dato. En nuestro ejemplo equivale a llamar al servicio de mensajería y, cuando
llega el mensajero a tu casa, le dices dónde debe recoger el paquete que debe
llevar al destino que le indicas, es decir, no le das el paquete, le dices dónde
debe recoger el paquete. El mensajero entonces tiene que ir por el paquete a la
dirección que le diste y es hasta que recoge allí el paquete que puede realizar
su trabajo de llevarlo a su destino.
En el caso de una instrucción en lenguaje máquina, una vez que la instrucción
llega al CPU, el procesador sabe donde está el dato, pero todavía no lo tiene,
así que tiene que ir por el dato a la dirección dada y, una vez obtenido el dato,
puede ejecutar la operación.

Modo indirecto
En este modo el campo de direccionamiento se encuentra la dirección de la
dirección del dato. En nuestro ejemplo equivale a llamar al servicio de
mensajería y, cuando llega el mensajero a tu casa le das la dirección de una
casa donde le darán la dirección de la casa donde está el paquete. El
mensajero tiene entonces que ir a la casa cuya dirección le diste; en esa casa
debe recoger la dirección de la casa donde esta el paquete que debe llevar al
destino que le indicas, es decir, no le das el paquete, le dices dónde debe
recoger la dirección del paquete, o sea, le das la dirección de la casa donde le
darán la dirección de la casa en la que debe recoger el paquete. El mensajero
entonces tiene que ir a dos casas: a la primera para recoger una dirección y a
la segunda para recoger el paquete, y es hasta que recoge el paquete en la
segunda casa, que puede realizar su trabajo de llevarlo a su destino.
En el caso de una instrucción en lenguaje máquina, una vez que la instrucción
llega al CPU, el procesador sabe donde está la dirección del dato, es decir, sabe
la dirección de la dirección del dato, pero todavía no tiene el dichoso dato, así
que tiene que ir por la dirección del dato a la dirección dada, una vez que tiene
la dirección del dato, debe ir por el dato y, una vez obtenido éste, puede
ejecutar la operación.
Modo indexado
En este modo de direccionamiento, en el campo de la instrucción se encuentra
una parte de la dirección del dato, la otra parte se encuentra en un registro,
que normalmente se conoce como registro índice. El procesador suma la
dirección que está en el campo de direccionamiento de la instrucción con la
dirección que está en el registro índice y de esa manera completa la dirección
del dato, va por él y ejecuta la operación.
En nuestro ejemplo, este modo se ilustra más o menos así: una vez que el
mensajero llega a tu casa, tu le das una parte de la dirección (digamos la
calle), el mensajero va a un buzón previamente acordado (el equivalente al
registro índice) y obtiene de ese buzón el número de la casa donde está el
paquete, ya que tiene la dirección completa, va por el paquete a esa dirección
y lo lleva a su destino.
Modos de direccionamiento de los microcontroladores AVR
Esta familia de microcontroladores implementa cinco modos de
direccionamiento:
 Directo
 Indirecto con desplazamiento
 Indirecto
 Indirecto con predecremento
 Indirecto con postincremento.
En el modo directo, es posible direccionar toda la memoria de datos. En el
modo indirecto con desplazamiento, se pueden generar 63 direcciones a partir
de la dirección base dada por los registros Y o Z. Usando el modo indirecto con
predecremento o postincremento, los registros apuntadores X, Y y Z son
incrementados o decrementados automáticamente.
A continuación vamos a detallar estos modos de direccionamiento.

Direccionamiento directo de registro único


Como lo muestra la figura, en el campo de direccionamiento se encuentra el
número del registro de propósito general que contiene la dirección del dato. Se
trata pues de instrucciones con un campo de direccionamiento. Nota que el
campo de direccionamiento es un campo de 5 bits (del bit 0 al bit 4 de derecha
a izquierda). Esto es porque 25 = 32, es decir, con 5 bits puedo generar 32
números diferentes. En la figura, el registro d tiene la dirección del dato.
Direccionamiento directo con dos registros
Como se ilustra en la siguiente figura, en este modo de direccionamiento hay
dos campos de direccionamiento en la instrucción, ambos en registros.

En estas instrucciones, el registro “d” tiene la dirección de uno de los


operandos, y es a su vez la dirección destino. La dirección del segundo
operando está almacenada en el registro “r”. Nota que ambos campos de
direccionamiento son de 5 bits.
Direccionamiento directo con direccionamiento de E/S
Se trata de instrucciones con dos campos de direccionamiento. Uno de ellos es
un puerto de e/s y el otro es un registro. Un puerto de e/s es una dirección de
una memoria dedicada al manejo de dispositivos de e/s. Más adelante
hablaremos de los puertos de e/s con más detalle. La siguiente figura ilustra
este modo de direccionamiento.
Nota que el campo que designa el puerto de e/s (P) es un campo de 6 bits, ya
que hay 64 puertos de e/s y 26 = 64. El campo “n” indica el registro que tiene
la dirección del destino u origen.

Direccionamiento directo con memoria de datos


Este modo de direccionamiento se utiliza en instrucciones con dos campos de
direccionamiento. Uno de ellos es un registro y otro una dirección de la
memoria de datos. Por definición, la memoria de datos maneja direcciones de
16 bits (desde la dirección $0000 hasta la $FFFF). La siguiente figura ilustra
este modo de direccionamiento.
Estas instrucciones ocupan dos palabras en memoria, una con el código de
operación y el registro (que puede ser destino u origen) y la otra con la
dirección del operando que está en la memoria de datos.

Direccionamiento indirecto con desplazamiento


En este tipo de direccionamiento, la dirección de uno de los operandos se
obtiene sumando el contenido del registro Y o Z con la dirección de 6 bits
contenida en la instrucción (campo a en la figura siguiente). El campo “n” (de 5
bits) indica el registro donde se encuentra la dirección del otro operando.

Indirecto con direccionamiento de dato


La dirección de la memoria de datos del operando está en el registro X, Y o Z,
como se ilustra en la siguiente figura.

Indirecto con predecremento


El contenido del registro X, Y o Z es decrementado antes de la operación. El
nuevo contenido de X, Y o Z es la dirección del dato. Este modo de
direccionamiento se ilustra en la siguiente figura.

Indirecto con postincremento


El contenido del registro X, Y o Z es incrementado después de la operación. La
dirección del operando es el contenido del registro X, Y o Z antes del
incremento. Este modo de direccionamiento se ilustra en la siguiente figura.

Direccionamiento constante a memoria de código


Indirecto a memoria de programa
La ejecución del programa continúa en la dirección contenida en el registro Z,
es decir, el registro PC (Program Counter) es cargado con la dirección contenida
en el registro Z. La siguiente figura ilustra este modo de direccionamiento.

Relativo a memoria de programa


La ejecución del programa continúa en la dirección PC + k + 1. La dirección
relativa “k” está en el rango [-2048,2047]. La siguiente figura ilustra este modo
de direccionamiento.
Resumen
Para resumir, los microcontroladores AVR manejan cinco modos de
direccionamiento:
 Directo.
 Indirecto con desplazamiento.
 Indirecto.
 Indirecto con predecremento.
 Indirecto con postincremento.
Como hemos visto, cada uno de estos modos tiene sus especializaciones.
Puede ser que de momento parezca una cantidad abrumadora de información,
pero este apartado puede servirte como una referencia cuando, más adelante,
al estar diseñando y escribiendo programas en ensamblador, estos conceptos y
modos de direccionamiento sean más claros.
El registro Z especifica la dirección de byte constante. Los 15 bits más
significativos (MSBs, por sus siglas en inglés) seleccionan una dirección de
palabra en la memoria de programa. El bit menos significativo (LSB, por sus
siglas en inglés), determina si se utiliza el byte bajo (si LSB = 0) o el byte alto
(si LSB = 1).
Tema 2.4 Puertos de Entrada/Salida
En los microcontroladores AVR todos los periféricos de Entrada/Salida están
direccionados en el espacio de E/S. El espacio de E/S es un tipo especial de
"memoria" por medio de la cual el procesador se comunica con sus dispositivos
periféricos.
Las direcciones de este espacio de direccionamiento reciben el nombre de
puertos, el término "puerto" está sobrecargado porque también se utiliza para
designar los circuitos lógicos (compuertas) por medio de los cuales el
microcontrolador intercambia señales binarias con el exterior. En el caso de los
microcontroladores AVR, los puertos son circuitos con compuertas lógicas que
permiten enviar o recibir información binaria hacia o desde el exterior del chip;
sin embargo, cuando hablamos de programas en ensamblador, el término
"puerto" también designa la dirección que se le asigna a estos circuitos de E/S.
Algunos puertos son para recibir datos (entrada), algunos para enviar datos
(salida) y algunos para ambas funciones (Entrada/Salida). Los puertos de E/S se
acceden por medio de las instrucciones especiales: IN y OUT.
Estas instrucciones transfieren información entre los puertos de E/S y los
registros de propósito general. En los microcontroladores AVR el espacio de E/S
tiene 64 puertos (con direcciones desde la $00 hasta la $3F). Los registros de
E/S con direcciones entre $00 y $1F son accesibles a nivel de bit usando las
instrucciones SBIS y SBIC (al estudiar el conjunto de instrucciones veremos qué
significan estas palabras "raras").
En los microcontroladores AVR los puertos de E/S también pueden acceder
como si fueran celdas de la memoria de datos (Data SRAM). En ese caso, el
puerto $00 equivale a la celda $20, el puerto $01 a la celda $21, es decir, para
direccionar los puertos de E/S en la memoria de datos hay que sumar $20 a la
dirección del puerto.
Algunos microcontroladores de la familia AVR sólo tienen dos puertos, algunos
tienen cuatro. Los puertos se nombran con las primeras letras del alfabeto; así,
hay microcontroladores con puertos A y B y otros con puertos A, B, C y D.
Cada uno de estos puertos tiene asignadas tres direcciones de E/S: una para el
dato de salida, otra para el modo (entrada o salida) y otra para el dato de
entrada.
Tema 2.5 Conjunto de instrucciones
El conjunto de instrucciones de un procesador define sus capacidades, indica
qué sabe hacer el procesador y cómo debemos comunicarnos con él en su
propio lenguaje (el lenguaje máquina).
Normalmente las instrucciones se agrupan por el tipo de tarea o función que
realizan para describirlas. Para estudiar el conjunto de instrucciones de los
microcontroladores AVR vamos a agruparlas en cuatro categorías:
 Instrucciones aritméticas y lógicas
 Instrucciones de ramificación
 Instrucciones de transferencias de datos
 Instrucciones para la manipulación de bits
Vamos a mencionar sólo algunas instrucciones de cada grupo. Cuando estemos
programando y sea necesario, introduciremos nuevas instrucciones y
explicaremos su funcionamiento. La idea de esta sección es tener un panorama
general de las capacidades de esta familia de microcontroladores. De todos
modos, si quieres conocer el conjunto de instrucciones completo puedes
consultar el manual de referencia del AVR 90S8515 [1], en la sección
Instruction Set Sumary.

Instrucciones aritméticas y lógicas


Estas instrucciones, como su nombre lo indica, sirven para pedir al
microcontrolador que realice operaciones aritméticas o lógicas. Algunas
instrucciones de esta categoría son:

Add Rd,Rr : Suma aritmética de dos registros (Rd ← Rd + Rr)

Adc Rd,Rr: Suma aritmética de dos registros y el bit de acarreo C. (Rd ← Rd +


Rr + bit C)

Adiw Rdl,k: Suma un dato inmediato a una palabra (Rdh:Rdl ← Rdh:Rdl + k)

Sub Rd,Rr: Sustracción (resta) de dos registros (Rd ← Rd - Rr)

Subi Rd,k: Resta inmediato a registro (Rd ← Rd - k)

And Rd,Rr: Operación lógica AND entre registros (Rd ← Rd AND Rr)

Andi Rd,k: Operación lógica AND entre un registro y una constante (Rd ← Rd
AND k)
+¡ -

Instrucciones de ramificación
Estas instrucciones sirven para cambiar el flujo de ejecución del programa. Se
utilizan para implementar las estructuras de control que propone la
programación estructurada, como si, entonces, si.. entonces..sino,
mientras..fin_mientras, etc. Algunas instrucciones de este grupo son:

rjmp k: Salto relativo (relative jump) (PC ← PC + k + 1) Nota: PC es el registro


Program Counter.

ijmp: Salto indirecto a (Z) (PC ← Z)

cp Rd,Rr: Compara dos registros (Rd -Rr). Esta instrucción realiza la resta Rd -
Rr, pero no guarda el resultado, sólo actualiza el registro de estado.

cpi Rd,k: Compara registro con dato inmediato (Rd - k).

breq k: Salta a k si iguales. Se utiliza normalmente después de una


comparación. (if (bit Z = 0) then PC ← PC + k + 1)

comparación. (if (bit N ⊕ bit V = 0) then PC ← PC + k + 1) Nota: ⊕ es Or-


brge k: Salta a k si mayor o igual. Se utiliza normalmente después de una

exclusivo.

Instrucciones de transferencia de datos


Estas instrucciones se utilizan para cargar información a los registros de uso
general (transferir información de la memoria de datos a uno de los registros
internos), para almacenar información (transferir información uno de los
registros internos a la memoria de datos) y para transferir información entre
registros. Algunas instrucciones de este grupo son:

mov Rd,Rr: Mueve entre registros (Rd ← Rr)

ldi Rd,k: Carga inmediato a registro (Rd ← k)

ld Rd,X: Carga indirecta a registro (Rd ← (X)). Esta instrucción carga a Rd el


dato cuya dirección está en el registro X.

lds Rd,k: Carga directa desde la memoria de datos (Data SRAM) (Rd ← (k) ).

st X,Rd: Almacenamiento indirecto. Guarda en la memoria de datos el


contenido del registro Rd ( (x) ← Rd).

std Y+q,Rr: Almacenamiento indirecto con desplazamiento. ( (Y + q) ← Rr).


Instrucciones para la manipulación de bits
Como su nombre lo indica, estas instrucciones se utilizan para vertificar o
cambiar el estado de los bits de puertos de E/S o de registros de uso general.
Algunas instrucciones de este grupo son:

SBI P,b: Activa (set) bit en puerto de E/S (ES(P,b) ← 1). Esta instrucción pone en
uno (activa) el bit b del puerto P.

CBI P,b: Limpia (clear) bit en puerto de E/S (ES(P,b) ← 0). Esta instrucción pone
en cero (limpia o desactiva) el bit b del puerto P.

BSET s: Fija la bandera s (el bit s en el registro de estado SREG) (SREG(s) ← 1).

BCLR s: Limpia la bandera s (el bit s en el registro de estado SREG) (SREG(s) ←


0).

SEC: Fija el bit de acarreo (Carry, en inglés) (bit C ← 1).

CLC: Limpia el bit de acarreo (bit C ← 0).

Conclusión
Éstas son sólo algunos procedimientos del conjunto de instrucciones de estos
procesadores. Es importante que te des cuenta que éstas realizan operaciones
relativamente sencillas. La combinación de las instrucciones es lo que ha hecho
de los procesadores los cerebros de las computadoras actuales, combinarlas de
manera adecuada es lo que aprenderemos al programar en lenguaje
ensamblador.
Atmel Studio 7, Getting Started. Extraído el 20 de abril de 2024
desde [Link]
[Link]
Tema 2.6 Entorno de desarrollo (IDE) para los microcontroladores AVR
ATMEL, compañía que diseña y comercializa los microcontroladores AVR, ha
puesto a disposición de todos los usuarios de Internet un conjunto de
herramientas para facilitar el desarrollo de software para estos dispositivos.
Entre esas herramientas está el AVRStudio, que actualmente se encuentra en
la versión 4. Este ambiente integrado de desarrollo incluye las siguientes
herramientas:
 El ensamblador AVR
 El compilador AVR GCC
 Un simulador
En esta segunda semana del Módulo 2 adquirirás las habilidades necesarias
para utilizar este entorno de desarrollo para capturar, ensamblar y
depurar/simular programas en ensamblador para diferentes dispositivos de la
familia de microcontroladores AVR.
Para completar con éxito este tema, lee completamente el Tutorial sobre
el AVRStudio que se incluye en esta sección para que estés listo para realizar
la práctica de programación en la segunda semana del Módulo 2.

También podría gustarte