Arquitectura de Computadoras - Semana 5

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 75

Arquitectura de Computadoras

Semana 05: Microcontroladores

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

Temario:

– Sistemas embebidos
– Microcontrolador (MCU)
– Clasificación de microcontroladores
– Familias de microcontroladores
– El microcontrolador ATmega2560
– El lenguaje de programación Assembly
– Arquitectura del ATmega2560
– Manipulación de puertos de Entrada/Salida

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- SISTEMAS EMBEBIDOS

1.1.- Sistema embebido

¿Qué es un sistema embebido?

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- SISTEMAS EMBEBIDOS

1.1.- Sistema embebido

Un sistema embebido o sistema empotrado es un sistema electrónico que puede contener


elementos mecánicos, eléctricos o químicos, y que presenta las siguientes características:

● Es un sistema computacional (computadora): Es un sistema que incorpora un


procesador entre sus componentes.

● Es un sistema dedicado: Es un sistema destinado a llevar a cabo una o algunas tareas


específicas.

● El programa que contiene es permanente: El software almacenado en un sistema


embebido permanece sin cambios a través del tiempo (salvo excepciones, donde se
realiza una actualización después de varios años). Esto contrasta con el software de las
computadoras de escritorio, en donde el software se actualiza cada cierto tiempo.

● El sistema no es programable por el usuario final: El usuario final solamente puede


ajustar los parámetros que el fabricante le permite (configuración), pero no puede “re-
programar” el sistema.

● Puede formar parte de otro sistema embebido: Un sistema embebido puede formar
parte de otro sistema embebido más complejo. Por ejemplo: un camión es un sistema
embebido; pero también lo es el sistema de monitoreo de presión de los neumáticos.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- SISTEMAS EMBEBIDOS

1.1.- Sistema embebido

“Bestia de funcionalidad”
- Procesamiento de texto
- Reproducción de audio
- Reproducción de video
- Conexión Bluetooth
- Conexión Wi-fi
- Compra on-line
- Videojuegos
- Video conferencia
- Diseño gráfico
- Bases de datos
- Chat
- Etc.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- SISTEMAS EMBEBIDOS

1.1.- Sistema embebido

“Sistema dedicado”

- Frecuencia cardiaca
- Movimiento
- Conexión con iPhone
– Mensajes
– Llamadas
– Apps

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- SISTEMAS EMBEBIDOS

1.2.- Procesadores para sistemas embebidos

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- SISTEMAS EMBEBIDOS

1.2.- Procesadores para sistemas embebidos

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- SISTEMAS EMBEBIDOS

1.2.- Procesadores para sistemas embebidos

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- SISTEMAS EMBEBIDOS

1.2.- Procesadores para sistemas embebidos

En la actualidad, los “cerebros” de los sistemas embebidos se encuentran basados en 03


tecnologías principales.

● Microprocesador (MPU): Usualmente con más de un núcleo (multi-core). Son


especialmente útiles cuando se requiere realizar cálculos complejos o cuando la aplicación
corre sobre un sistema operativo. El uso de un sistema operativo estándar (como Linux)
facilita el desarrollo de aplicaciones. Sin embargo, esto también puede limitar la velocidad
de respuesta del sistema.

● Microcontrolador (MCU): Usualmente con un solo núcleo (single-core). Son


especialmente útiles para aplicaciones industriales en tiempo real (buena velocidad de
respuesta). Ofrece facilidades para la comunicación con dispositivos periféricos (sensores,
actuadores, otras computadoras). Sin embargo, al contar con un solo núcleo, está limitado
a realizar una sola tarea a la vez.

● Dispositivo lógico programable (PLD): Principalmente FPGAs. Son especialmente útiles


para aplicaciones donde debe procesarse una gran cantidad de datos en muy corto
tiempo. La ventaja de esta tecnología es que los bloques de procesamiento no son
implementados en software, sino en hardware, lo cual permite realizar múltples tareas en
paralelo. Sin embargo, el tiempo requerido para desarrollar una aplicación suele ser mayor.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- SISTEMAS EMBEBIDOS

1.2.- Procesadores para sistemas embebidos

Núcleo(core)
Procesador con un solo núcleo
(single-core)

Buses del
sistema

Procesador con varios núcleos


(multi-core)

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- SISTEMAS EMBEBIDOS

Producto Clasificación Nivel de Herramientas


Abstracción

Single Board Computer Software Sistema operativo


(contiene un SoC) y lenguaje de
programación.
Raspberry Pi 3
(Linux, Python)

Microcontrolador Firmware Lenguaje de


(contiene un MCU de 8-bits) programación
(Assembly, C)
Arduino Mega 2560

PLD Hardware Lenguaje de


(contiene un FPGA) descripción
de hardware
(Verilog, VHDL)
DE0 - Nano

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

2.- MICROCONTROLADORES

2.1.- Microcontrolador (MCU)

ALU Microprocesador
(Procesamiento intenso)
Núcleo

Registros Microcontrolador
µP/µC
(Sensores y actuadores)

Periféricos y Memoria

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

2.- MICROCONTROLADORES

2.1.- Microcontrolador (MCU)

Características generales:

➢ Microcomputador de recursos limitados.


➢ Destinado a desempeñar funciones
dedicadas.
➢ Arquitectura Harvard (por lo general).
➢ El repertorio de instrucciones es,
usualmente, RISC (depende del
fabricante).
➢ Memoria de programa tipo Flash.
➢ Memoria de datos tipo SRAM.
➢ Memoria de datos adicional, tipo EEPROM
(opcional).
➢ El tamaño del bus de datos puede ser de
8, 16 ó 32 bits.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

2.- MICROCONTROLADORES

2.2.- Organización interna de un microcontrolador

Periféricos

Memoria de Memoria de
Datos CPU Programa
(SRAM) (FLASH)

Periféricos

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

2.- MICROCONTROLADORES

2.3.- Arquitectura de un microcontrolador (CPU)

Diagrama de bloques del CPU del microcontrolador PIC16F877A.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

2.- MICROCONTROLADORES

2.3.- Arquitectura de un microcontrolador (CPU)

Diagrama de bloques del CPU del microcontrolador ATmega2560.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

2.- MICROCONTROLADORES

2.3.- Arquitectura de un microcontrolador (CPU)

Arquitecturas “compartidas” por diferentes fabricantes.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

2.- MICROCONTROLADORES

2.4.- Clasificación de microcontroladores

Microcontroladores de 8 bits
Manejo de datos: Bus de datos de 8 bits.
Poder de procesamiento: Hasta 20 MIPS
Periféricos: GPIO, Timer, PWM, ADC, UART, SPI, I2C, entre otros.
Aplicación: Electrónica de consumo (sensible al costo).

Microcontroladores de 16 bits
Manejo de datos: Bus de datos de 16 bits, acceso directo a memoria (DMA).
Poder de procesamiento: Más de 40 MIPS
Periféricos: DAC, IrDA, RTC, USB, CAN, LIN, CODEC, entre otros.
Aplicación: Sensores y sistemas de control (motores).

Microcontroladores de 32 bits
Manejo de datos: Bus de datos de 32 bits, acceso directo a memoria (DMA).
Poder de procesamiento: Más de 200 DMIPS (Dhrystone MIPS)
Periféricos: FPU, USB, Ethernet, CAN, calculador CRC, interfaz para LCD, entre otros .
Aplicación: Procesamiento digital de señales, aplicaciones con sistema operativo.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

2.- MICROCONTROLADORES

2.4.- Familias de microcontroladores

PICs de Gama Baja (12C/16C5)


ATtiny
MCU de 8 bits PICs de Gama Media (16C/16F)
ATmega
PICs de Gama Alta (18F)

PIC24
MCU de 16 bits ATxmega
dsPIC

SAM
MCU de 32 bits PIC32
SMART

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

2.- MICROCONTROLADORES

2.5.- Periféricos de un microcontrolador

ADC DAC
Procesador

Comparador Puerto

Timer UART

Microcontrolador

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

2.- MICROCONTROLADORES

2.6.- Mapeo de puertos de entrada/salida

Entrada/salida mapeada en memoria (Memory mapped I/O)

Utiliza el mismo espacio de memoria para acceder tanto a la memoria como a un


dispositivo de entrada/salida. La memoria y los registros de los dispositivos de
entrada/salida son asociados a valores de direcciones. De este modo, las instrucciones
que el CPU utiliza para acceder a la memoria también pueden ser usadas para acceder a
dispositivos de entrada/salida.

Entrada/salida mapeada en puerto (Port mapped I/O)

Usualmente emplean una clase especial de instrucciones del CPU, diseñadas


especificamente para llevar a cabo funciones de entrada/salida. Por ejemplo, las
instrucciones IN y OUT encontradas en los procesadores basados en la arquitecturas
x86.Los dispositivos de entrada/salida tienen un espacio de direcciones separado de la
memoria general.

Todas las entradas/salidas en los microcontroladores son mapeadas en memoria .

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

2.- MICROCONTROLADORES

2.6.- Mapeo de puertos de entrada/salida

B0 RB0
Puerto de salida tratado como
un espacio en memoria.

B1 RB1

B2 RB2
.
uint8_t Puerto_B .
.
B7 RB7

Clock

Puerto de salida de un microcontrolador, mapeado en memoria.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

1.- CONCEPTOS Y DEFINICIONES

1.21.- Mapeo de puertos de entrada/salida

R0
R1

R31

Puertos E/S
Registros de configuración

Puertos E/S y registros adicionales


(PORTF, DDRK, etc.)

Almacenamiento de datos

Memoria de datos adicional (opcional)

Organización de memoria de datos en el microcontrolador ATmega2560.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

3.- MATERIALES PARA LA PROGRAMACIÓN DE MCUs

3.1.- Herramientas empleadas

Para llevar a cabo la programación de microcontroladores hacen falta 03 tipos básicos de


herramientas:

Herramientas de software: Es el conjunto de programas empleados para llevar a cabo el


desarrollo del código. La plataforma de software incluye la cadena de herramientas de
software (pre-procesador, compilador, ensamblador, etc.). Por ejemplo, en este curso se
empleará el entorno integrado de desarrollo (IDE) Atmel Studio.

Plataforma de hardware: Es el microcontrolador específico que se va a programar. En caso


de emplear un módulo de hardware comercial, es común que se utilice el nombre de este
hardware en lugar del nombre del microcontrolador. Por ejemplo, puede decrise que en este
curso se empleará como plataforma de hardware el microcontrolador ATmega2560; por otro
lado, también puede decirse que en este curso se empleará como plataforma de hardware el
módulo Arduino Mega 2560.

Programador: El programador es el conjunto de herramientas de software y hardware que se


encargan tomar el programa desarrollado en la computadora y cargarlo en el
microcontrolador para que éste lo ejecute. Por ejemplo, para este curso se empleará el
software programador avr-dude, y no se empleará ningún hardware programador (en lugar
de eso se usará un bootloader).

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

3.- MATERIALES PARA LA PROGRAMACIÓN DE MCUs

3.2.- Herramientas de software

IDE: Atmel Studio

Toolchain: AVR-GCC Toolchain


Incluido en el IDE
(Se usarán para
programar en C)
Librerías: AVR-LIBC

Incluido en el
Software programador: AVR-DUDE software de
Arduino

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

3.- MATERIALES PARA LA PROGRAMACIÓN DE MCUs

3.3.- Plataforma de hardware

- MCU: ATMega 2560.

- Oscilador: Cristal 16 MHz.

- Bootloader pre-programado.

- Conectores a los GPIOs.

- Adaptador de TTL a USB (FTDI).

- Fuente de alimentación incluida.


Arduino Mega 2560
- Hardware portátil y de fácil acceso.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

3.- MATERIALES PARA LA PROGRAMACIÓN DE MCUs

3.3.- Plataforma de hardware


- 256 KBytes de memoria FLASH.

- 8 KBytes de memoria SRAM interna.

- 4 KBytes de EEPROM interna.

- 135 instrucciones (RISC)

- Hasta 16MIPS con un cristal de 16MHz.

- 2 timers de 8 bits y 4 timers de 16 bits.

- 4 canales PWM de 8 bits y 12 canales PWM


con resolución programable.
ATmega 2560
- 4 módulos USART.

- Interfaces SPI e I2C.

- ADC de 10 bits.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

3.- MATERIALES PARA LA PROGRAMACIÓN DE MCUs

3.4.- Documentación

Texto de consulta
Brinda detalles de la organización y arquitectura
(instrucciones) del microcontrolador. Asimismo, brinda
ejemplos simples que sirven como guía al estudiante.

Datasheet del ATmega2560


Proporciona todos los detalles técnicos de la
organización y arquitectura del microcontrolador. La
información que se empleará con mayor frecuencia es
la descripción de los registros de función específica.

Organización de pines del Arduino Mega 2560


Indica la relación entre la nomenclatura empleada para
los pines de la tarjeta Arduino Mega 2560, y la
nomenclatura de los puertos del microcotrolador.

Texto de consulta

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

4.- EL LENGUAJE DE PROGRAMACIÓN ASSEMBLY

4.1.- Descripción general

El lenguaje Assembly, conocido como lenguaje ensamblador en Español, no es un lenguaje


de programación estándar. Cada fabricante tiene la libertad de emplear un lenguaje
ensamblador con algunas características propias.

Es conveniente que el estudiante conozca fundamentos de lenguaje ensamblador por las


siguientes razones:

● El conocimiento del lenguaje ensamblador permite una comprensión de la arquitectura de


la máquina que ningún lenguaje de alto nivel puede ofrecer.

● Un programa escrito en lenguaje ensamblador requiere considerablemente menos


memoria y tiempo de ejecución que un programa escrito con un lenguaje de programaciójn
de alto nivel.

● En aplicaciones donde se requiere que la ejecución del código sea lo más rápida posible
(por ejemplo, rutinas de interrupción), las rutinas suelen ser implementadas en lenguaje
ensamblador.

A continuación se revisarán las características principales del lenguaje ensamblador que se


empleará para programar el microcontrolador ATmega2560.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

4.- EL LENGUAJE DE PROGRAMACIÓN ASSEMBLY

4.2.- Representación de valores literales

Literal entero Literal de punto flotante

65 ● No definido.
0x41 ó $41
● La famila de microcontroladores
0b01000001 AVR no cuenta con instrucciones
para operar valores en punto
‘A’ flotante.

Formatos:

Decimal Por defecto

Hexadecimal Prefijo 0x ó $

Binario Prefijo 0b

Caracter ASCII Caracter entre ‘ ’

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

4.- EL LENGUAJE DE PROGRAMACIÓN ASSEMBLY

4.3.- Directivas en Assembly

Las directivas son palabras reservadas incluidas en el código. Estas palabras reservadas se
utilizan para brindar facilidades al programador al momento de escribir un programa.

Las directivas se diferencian de las instrucciones lo siguiente:

● Las directivas son interpretadas y procesadas por el ensamblador, solamente en la


computadora donde se construye el programa. Por esta razón ellas no ocupan espacio en
la memoria del microcontrolador por sí mismas (ya que no son instrucciones).

● Las instrucciones son traducidas a datos binarios por el ensamblador, y ocupan espacio en
la memoria de programas.

Entre las directivas más importantes tenemos:

.EQU
.SET
.ORG
.INCLUDE

NOTA: Las directivas en Assembly se caracterizan por llevar un punto a la izquierda.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

4.- EL LENGUAJE DE PROGRAMACIÓN ASSEMBLY

4.3.- Directivas en Assembly

.EQU (equate)

Esta directiva es usada para definir un valor constante o una dirección fija. La directiva
.EQU no lleva a cabo ningún tipo de almacenamiento, sino que asocia un número constante
con una etiqueta de datos o de memoria, de modo que cuando la etiqueta aparezca en el
programa, su constante sustituirá a la etiqueta.

Por ejemplo, se puede usar .EQU para inicializar una constante contador, y luego esta
constante puedecargarse al registro R21:

.EQU COUNT = 0x25


… …
LDI R21, COUNT ; R21 = 0x25

.SET

Esta directiva es usada para definir un valor constante o una dirección fija. Se diferencia
de .EQU en que el valor asignado por la directiva .SET puede ser reasignado posteriormente.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

4.- EL LENGUAJE DE PROGRAMACIÓN ASSEMBLY

4.3.- Directivas en Assembly

.ORG (origin)

La directiva .ORG es usada para indicar la dirección de inicio. Puede ser usada tanto para la
memoria de programas como para la memoria de datos.

.INCLUDE

La directiva .INCLUDE indica al ensamblador del microcontrolador que añada el contenido de


un archivo a nuestro programa (al igual que la directiva #include en lenguaje C).

Esta directiva es muy útil cuando el programa se organiza en múltiples archivos. También es
usada para incluir librerías o archivos con definiciones (etiquetas), proporcionados por el
fabricante.

Para este curso se empleará la directiva .INCLUDE para incluir el archivo con las definiciones
del microcontrolador ATmega2560, proporcionado por el fabricante:

.INCLUDE “m2560def.inc”

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

4.- EL LENGUAJE DE PROGRAMACIÓN ASSEMBLY

4.4.- Reglas para el uso de etiquetas en lenguaje Assembly

Existen varias reglas que deben respetarse al momento de crear etiquetas:

1) Cada etiqueta debe ser única.

2) Los nombres usados para etiquetas en el lenguaje Assembly consiste en letras


mayúsculas o minúsculas, dígitos del 0 al 9, y los caracteres especiales: interrogación (?),
punto (.), arroba (@), guión bajo (_) y signo de dólar ($).

3) El primer caracter de la etiqueta debe ser un caracter alfabético. En otras palabras, no


puede ser un número.

4) Cada ensamblador tiene algunas palabras reservadas que no deben ser usadas como
etiquetas en el programa. Entre las palabras reservadas más comunes tenemos los
mnemónicos de las instrucciones. Por ejemplo, “LDI” y “ADD” están reservados porque son
mnemónicos de instrucciones.

5) Al momento de emplear etiquetas, se recomienda asginar nombres significativos, que


faciliten la lectura del código.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

4.- EL LENGUAJE DE PROGRAMACIÓN ASSEMBLY

4.5.- Estructura de un programa en Assembly

Un programa en Assembly es una serie de órdene, o líneas, las cuales pueden ser
instrucciones en Assembly (como ADD y LDI) o directivas.

Mientras que las instruccionas le indican a la CPU que hacer, las directivas (también llamdas
pseudo-instrucciones) proporcionan indicaciones al ensamblador.

Una instrucción en lenguaje Assembly consta de 04 campos:

[ etiqueta: ] mnemónico [operandos] [;comentario]

Los corchetes indican que un campo es opcional y no todas las líneas los tienen. Los
corchetes no deben tipearse

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

4.- EL LENGUAJE DE PROGRAMACIÓN ASSEMBLY

4.5.- Estructura de un programa en Assembly

Con respecto al formato mostrado anteriormente, deben aclararse los siguientes puntos

1) El campo etiqueta permite al programa referirse a una línea de código por nombre. Esto
es usado, por ejemplo, para referenciar una posición al emplear una instrucción de salto.

2) Los campos mnemónico y operando(s) juntos llevan a cabo el trabajo real del programa
y realizan las tareas para las cuales el programa fue escrito. En instrucciones en Assembly,
tales como:

LDI R23, $55


ADD R23, R19
SUBI R23, $67

ADD y LDI son los mnemónicos que producen los opcodes; los operandos son “$55”y “$67”.

3) El campo comentario empieza con un indicador de comentario punto y coma “;”. Los
comentarios pueden ir al final de una línea, o también pueden ocupar una línea completa.
El ensamblador ingnora los comentarios, pero éstos son esenciales para los
programadores.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

4.- EL LENGUAJE DE PROGRAMACIÓN ASSEMBLY

4.5.- Estructura de un programa en Assembly

; Programa en lenguaje Assembly para sumar algunos datos
; almacenar SUMA en la ubicación 0x300 de la SRAM

.EQU SUMA = 0x300;Ubicación 0x300 en SRAM para SUM

.ORG 00 ; Iniciar en la dirección 0
LDI R16, 0x25 ; R16 = 0x25
LDI R17, $34 ; R17 = 0x34
LDI R18, 0b00110001 ; R18 = 0x31
ADD R16, R17 ; sumar R17 a R16
ADD R16, R18 ; sumar R18 a R16
LDI R17, 11 ; R17 = 0x0B
ADD R16, R17 ; sumar R17 a R16
STS SUMA, R16 ; guardar la SUMA en la ubicación 0x300
AQUI: JMP AQUI ; permanecer aqui por siempre

Ejemplo de un programa en lenguaje Assembly.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

4.- EL LENGUAJE DE PROGRAMACIÓN ASSEMBLY

4.6.- Ensamblaje de un programa en el ATmega2560

Ahora que la forma básica de un programa en Assembly ha sido mostrada, la siguiente


pregunta es: ¿Cómo es este programa creado, ensamblado, y dejado listo para ser
ejecutado?

Los pasos para crear un programa ejecutable en lenguaje Assembly se pueden resumir en la
siguiente imagen:

Editor de hola.asm hola.hex


Ensamblador Depurador
texto

Microcontrolador

Cadena de herramientas para la construcción de un programa en Assembly.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

4.- EL LENGUAJE DE PROGRAMACIÓN ASSEMBLY

4.6.- Ensamblaje de un programa en el ATmega2560

1) Primero, debemos usar un editor de texto para escribir un programa. En nuestro curso
utilizaremos el entorno integrado de desarrollo (IDE) Atmel Studio 7, el cual incorpora
editor de texto, ensamblador, simulador y muchas más herramientas en un solo paquete de
software. Sin embargo, es posible usar cualquier otro editor de texto como bloc de notas o
Kate. La extensión del archivo fuente creado debe ser “asm” (Assembly).

2) Luego, el archivo fuente (.asm) pasa por el ensamblador, el cual trabaja en dos etapas:
Primero encarga de verificar si no hay ningún error de sintaxis en el código escrito.
Adicionalmente, el pre-procesador también se encarga de interpretar (traducir) las
directivas encontradas en el código a indicaciones explícitas para el ensamblador.

3) Después, el código en Assembly limpio (sin errores de sintaxis ni directivas) es traducido a


lenguaje máquina. El ensamblador produce un archivo objeto (.obj), un archivo hex (.hex),
un archivo eeprom (.eep), un archivo lista (.lst), y un archivo mapa (.map). Una vez que el
ensamblador haya terminado de procesar el archivo fuente de manera exitosa, el archivo
hex está listo para ser grabado en la memoria ROM (Flash) del microcontrolador.

4) De manera opcional, algunos microcontroladores permiten emplear un hardware especial


para ejecutar y detener el programa por partes. Este bloque (compuesto por software y
hardware) se conoce como depurador y es empleado para detectar errores en el
programa. El hardware especial que se requiere para llevar a cabo la depuración es
conocido como JTAG.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

4.- EL LENGUAJE DE PROGRAMACIÓN ASSEMBLY

4.7.- Sobre los archivos .obj, .lst y .map

● El archivo objeto (.obj) contiene las instrucciones expresadas en lenguaje máquina (unos y
ceros). El archivo objeto es usado como entrada para un simulador o emulador.

● El archivo mapa (.map) muestra las etiquetas definidas en el programa junto con sus
valores.

● El archivo lista (.lst), el cual es opcional, es muy útil para el programador. La lista muestra
el código fuente y también en formato binario; además muestra cuales instrucciones son
usadas en el código fuente, y la cantidad de memoria utilizada por el programa.

AVRASM ver. 2.1.2  F:\AVR\Sample\Sample.asm Sun Apr 13 20:31:14 2008

EQU SUMA 00000300


CSEG AQUI 00000009

Archivo mapa (.map) del programa ejemplo.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.1.- Visión general

Diagrama de bloques del CPU del microcontrolador ATmega2560.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.2.- Memoria de datos del ATmega2560

En el microcontrolador ATmega2560 hay dos tipos de espacio de memoria: memoria de


programa y memoria de datos. Nuestro programa es almacenado en la memoria de
programa, mientras que la memoria de datos almacena la información (datos).

La memoria de datos se compone de 03 partes: registros de propósito general (GPRs),


registros de función específica (SFRs) y la SRAM interna de datos.

Los registros de función específica también son conocidos como registros de entrada/salida
(I/O), ya que entre ellos se encuentran los registros que controlan los puertos de
entrada/salida.

A continuación se detallará cada uno de las partes de la memoria de datos del ATmega2560,
así como las instrucciones básicas empleadas para manipular cada parte.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.2.- Memoria de datos del ATmega2560

R0
R1

R31

Puertos E/S
Registros de configuración

Puertos E/S y registros adicionales


(PORTF, DDRK, etc.)

Almacenamiento de datos

Memoria de datos adicional (opcional)

Organización de memoria de datos en el microcontrolador ATmega2560.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.3.- Registros de propósito general (GPRs)

● En la CPU, los registros de propósito general son usados para almacenar datos
temporalmente. La información puede ser un byte de datos que será procesado, o una
dirección que apunta al dato que debe ser extraído.

● La gran mayoría de registros de los microcontroladores AVR son de 8 bits. En los AVR solo
existe un tamaño de dato: 8 bits.

● En el ATmega2560 existen 32 registros de proósito general (GPRs). Ellos son R0-R31 y se


encuentran ubicados en las direcciones más bajas de memoria de “datos” (desde la
dirección 0 hasta la dirección 31).

● Estos registros pueden ser usados por todas las instrucciones aritméticas y lógicas.

● Solo los 16 últimos registros (desde R16 hasta R31) pueden ser utilizados por
instrucciones que empleen direccionamiento inmediato.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.3.- Registros de propósito general (GPRs)

Registros de propósito general en el microcontrolador ATmega2560.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.3.- Registros de propósito general (GPRs)

Registros de propósito general y ALU en el ATmega2560.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.4.- La instrucción LDI (Load immediate)

En términos simples, la instrucción LDI copia un dato de 8 bits dentro de un registro de


proósito general. Esta instrucción tiene el siguiente formato:

LDI Rd, K ; carga Rd (destino) con el valor inmediato K
; d debe encontrarse entre 16 y 31

K es un valor de 8 bits que puede encontrarse entre o y 255 en decimal, o entre 00 y FF en


hexadecimal, y Rd está entre R16 y R31 .

La letra ‘I’ en LDI quiere decir “inmediato” (immediate). Si vemos la palabra “inmediato” en
cualquier instrucción, estamos tratando con un valor que debe ser proporcionado justo ahí, en
la instrucción (direccionamiento inmediato).

Ejemplo: Cargar el valor 0x25 al registro R20

LDI R20, 0x25 ; carga R20 con 0x25 (R20 = 0x25)

Recuerde que: No es posible cargar valores inmediatos en los registros R0 – R15, y mover
un valor mayor a 255 causará un error.

LDI R5, 0x99 ; instrucción inválida
LDI R17, 0x7F2 ; ILEGAL 0x7F2 > 8 bits

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.5.- La instrucción MOV (Move)

La instrucción MOV es usada para copiar datos entre registros de propósito general (desde
R0 hasta R31). Esta instrucción tiene el siguiente formato:

MOV Rd, Rr ; Rd = Rr (Copiar Rr a Rd)
; Rd y Rr pueden ser cualquiera de los GPRs

Por ejemplo, la siguiente instrucción copia el contenido de R20 a R10:

MOV R10, R20 ; R10 = R20

Se debe tener claro que, si R20 contiene el valor 60, después de la ejecución de la
instrucción mostrada tanto R20 como R10 contendrán el valor 60.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.6.- La instrucción ADD (Addition)

La instrucción ADD tiene el siguiente formato:

ADD Rd, Rr ; suma Rr a Rd y almacena el resultado en Rd

La instrucción ADD le dice a la CPU que sume el valor de Rr a Rd y que coloque el resultado
de vuelta en el registro Rd.

Para sumar dos números, por ejemplo 0x25 y 0x34, uno puede hacer lo siguiente:

LDI R16, 0x25 ; carga 0x25 dentro de R16
LDI R17, 0x34 ; carga 0x34 dentro de R17
ADD R16, R17  ; suma el valor de R17 a R16 (R16 = R16 + R17)

Al ejecutarse las líneas de arriba se obtiene en R16 = 0x59 (0x25 + 0x34 = 0x59)

Debe quedar claro que la instrucción ADD no permite sumar valores inmediatos (no lleva
ninguna ‘I’ en el mnemónico). La instrucción ADD emplea direccionamiento directo para sus
operandos.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.7.- La instrucción INC (Increment)

La instrucción INC tiene el siguiente formato:

INC Rd ; incrementa el contenido de Rd en uno (0 < d < 31)

La instrucción INC incrementa el contenido de Rd en 1.

Por ejemplo, la siguiente instrucción suma 1 al contenido de R2:

INC R2  ; R2 = R2 + 1

En el siguiente código, colocaremos el valor 3 en R30. Luego, el valor de R30 es


decrementado:

LDI  R30, 3 ; R30 = 3


INC R30 ; R30 tiene 4
INC R30 ; R30 tiene 5
INC R30 ; R30 tiene 6

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.8.- La instrucción SUB (Subtraction)

La instrucción SUB tiene el siguiente formato:

SUB Rd, Rr ; resta Rr de Rd y almacena el resultado en Rd

La instrucción SUB le dice a la CPU que reste el valor de Rr desde Rd y que coloque el
resultado de vuelta en el registro Rd.

Para restar dos números, por ejemplo 0x25 de 0x34, uno puede hacer lo siguiente:

LDI R20, 0x34 ; carga 0x34 dentro de R20
LDI R21, 0x25 ; carga 0x25 dentro de R21
SUB R20, R21  ; R20 = R20 ­ R21

Al ejecutarse las líneas de arriba se obtiene en R20 = 0x0F (0x34 - 0x25 = 0x0F)

Al igual que la instrucción ADD, la instrucción SUB emplea direccionamiento directo para sus
operandos.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.9.- La instrucción DEC (Decrement)

La instrucción DEC tiene el siguiente formato:

DEC Rd ; decrementa el contenido de Rd en uno (0 < d < 31)

La instrucción DEC decrementa (resta 1 de) el contenido de Rd y coloca el resultado devuelta


en el registro Rd.

Por ejemplo, la siguiente instrucción resta 1 al contenido de R10:

DEC R10  ; R10 = R10 ­ 1

En el siguiente código, colocaremos el valor 3 en R30. Luego, el valor de R30 es


decrementado:

LDI  R30, 3 ; R30 = 3


DEC R30 ; R30 tiene 2
DEC R30 ; R30 tiene 1
DEC R30 ; R30 tiene 0

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.10.- La instrucción COM (Complement)

La instrucción COM tiene el siguiente formato:

COM Rd ; reemplaza el contenido de Rd por su complemento a uno

La instrucción COM complementa (invierte) los bits del valor contenido en Rd y coloca el
resultado de vuelta en el registro Rd.

Por ejemplo, en el siguiente código, se desea almacenar el complemento a uno de 0x55 en el


registro R16:

LDI R16, 0x55  ; R16 = 0x55
COM R16 ; complementar R16

Esta instrucción opera de forma análoga al operador a nivel de bits “~”, empleado en el
lenguaje de programación C.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.11.- La instrucción NEG (Negative)

La instrucción NEG tiene el siguiente formato:

NEG Rd ; reemplaza el contenido de Rd por su complemento a 2

La instrucción NEG calcula el complemento a dos del valor contenido en Rd y coloca el


resultado de vuelta en el registro Rd.

Por ejemplo, en el siguiente código, se desea almacenar el valor -5, representado con 8 bits,
en el registro R16:

LDI R16, 5  ; R16 = 0x05
NEG R16 ; convertir R16 en su complemento a 2

Esta instrucción opera de forma análoga al operador “-”, empleado en el lenguaje de


programación C.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.12.- SRAM interna de datos

● La SRAM interna de datos es ampliamente usada por los compiladores de C y


programadores para almacenar datos y parámetros.

● Cada ubicación en la SRAM puede ser accedida a través de su dirección.

● Cada ubicación tiene un ancho de 8 bits y puede ser usada para almacenar cualquier dato
que se desee, siempre y cuando no tenga más de 8 bits de ancho.

● El microcontrolador ATmega2560 cuenta con una SRAM de 8K bytes (8K x 8).

● Las instrucciones vistas hasta ahora trabajaban con el valor inmediato de K y los registros
de propósito general. Además, estas instrucciones empleaban los registros de propósito
general como destino (se vieron ejemplos como LDI y ADD).

● En esta sección del curso veremos instrucciones que permiten acceder a varias
ubicaciones de la memoria de datos.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.12.- SRAM interna de datos

R0
R1

R31

Puertos E/S
Registros de configuración

Puertos E/S y registros adicionales


(PORTF, DDRK, etc.)

Almacenamiento de datos

Memoria de datos adicional (opcional)

Organización de memoria de datos en el microcontrolador ATmega2560.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.13.- La instrucción LDS (LoaD direct from data Space)

La instrucción LDS tiene el siguiente formato:

LDS Rd, K ; carga Rd con el contenido de la ubicación K
; K es una dirección entre 0x0000 y 0xFFFF

La instrucción LDS le dice a la CPU que cargue (copie) un byte desde una dirección en la
memoria de datos hacia los registros de propósito general.

Luego de que esta instrucción es ejecturada , el GPR tendrá el mismo valor que la ubicación
en la memoria de datos.

La ubicación en la memoria de datos (K) puede ser cualquier parte del espacio de datos:
puede ser una ubicación en la SRAM interna, o uno de los registros de función específica
(SFR) o un registro de propósito general.

Por ejemplo, el siguiente código suma los contenidos de las ubicaciones 0x300 y 0x302. Para
hacer esto, antes es necesario cargar R0 con el contenido de la ubicación 0x300 y cargar R1
con el contenido de la ubicación 0x302, luego se debe sumar R0 y R1:

LDS R0, 0x300 ; R0 = contenido de la ubicación 0x300
LDS R1, 0x302 ; R1 = contenido de la ubicación 0x302
ADD R1, R0  ; suma R0 a R1

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.13.- La instrucción LDS (LoaD direct from data Space)

Ejecución de las instrucciones “LDS R0, 0x300” y “LDS R1, 0x302”.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.14.- La instrucción STS (STore direct to data Space)

La instrucción STS tiene el siguiente formato:

STS K, Rr   ; almacena el contenido de Rr en la ubicación K
   ; K es una dirección entre 0x000 y 0xFFFF

La instrucción STS le dice a la CPU que almacene (copie) el contenido del registro de
propósito general a una dirección ubicada en la memoria de datos.

Luego de que esta instrucción es ejecutada , la ubicación en la memoria de datos tendrá el


mismo valor que el registro de propósito general.

La ubicación en la memoria de datos (K) puede ser cualquier parte del espacio de datos:
puede ser una ubicación en la SRAM interna, o uno de los registros de función específica
(SFR) o un registro de propósito general.

Por ejemplo, la siguiente instrucción almacena el contenido de R25 a la ubicación 0x230:

STS 0x230, R25 ; almacena contenido de R25 en la ubicación 0x230

IMPORTANTE: No es posible almacenar (copiar) un valor inmediato directamente dentro de


una ubicación en la SRAM del ATmega2560. Esto debe hacerse mediante los GPRs.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.15.- Registros de función específica (SFR)

● Los SFRs o memoria de E/S, son un tipo de memoria dedicada a funciones específicas,
tales como registro de estado, temporizadores, comunicación serial, puertos E/S, ADC,
entre otros.

● La función de cada ubicación en esta memoria es fijada por el diseñador de la CPU,


porque son usadas para el control del microcontrolador o sus periféricos.

● Algunas ubicaciones en la memoria de E/S tienen dos direcciones: la dirección I/O y la


dirección en la memoria de datos.

● Cada ubicación en memoria de datos tiene una dirección única, llamada dirección de la
memoria de datos.

● Algunos registros de función específica (64 registros) tienen una dirección relativa, que
toma como referencia el inicio de la memoria de E/S. Esta dirección es llamada la
dirección E/S.

● Cuando se necesite manipular los SFRs, se puede aplicar las mismas instrucciones que se
usan para manipular la SRAM (LDS. STS), vistas anteriormente. En este caso debe usarse
la dirección de la memoria de datos de los registros.

● Por otro lado, también es posible manipular los SFRs mediante las instrucciones
especiales IN y OUT. En este caso debe usarse la dirección E/S de los registros.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.15.- Registros de función específica (SFR)

R0
R1

R31

Puertos E/S
Registros de configuración

Puertos E/S y registros adicionales


(PORTF, DDRK, etc.)

Almacenamiento de datos

Memoria de datos adicional (opcional)

Organización de memoria de datos en el microcontrolador ATmega2560.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.15.- Registros de función específica (SFR)

SFRs en el ATmega32, con sus diferentes direcciones.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.16.- La instrucción IN

La instrucción IN tiene el siguiente formato:

IN Rd, A   ; carga una ubicación E/S al GPR
   ; (0 < d < 31), (0 < A < 0x3F)

La instrucción IN le dice a la CPU que cargue (copie) un byte desde el registro de función
específica (SFR) hacia el registro de propósito general (GPR).

Luego de que esta instrucción es ejecutada , el registro de propósito general tendrá el mismo
valor que el registro de función específica.

Por ejemplo, la siguiente instrucción copia el contenido de la ubicación 0x16 de la memoria


E/S dentro de R20:

IN R20, 0x16 ; carga en R20 el contenido de la ubicación 0x16
  ; 0x16 representa la dirección E/S

NOTA: Esta instrucción solo funciona con los SFRs con dirección E/S entre 0 y 63 (0x3F).
Para los SFRs ubicados fuera de este rango debe usarse la instrucción LDS y la dirección de
la memoria de datos.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.17.- La instrucción OUT

La instrucción OUT tiene el siguiente formato:

OUT A, Rr   ; almacena el contenido de Rr en la ubicación A
   ; (0 < d < 31), (0 < A < 3F) 

La instrucción OUT le dice a la CPU que almacene (copie) el contenido del registro de
propósito general al registro de función específica.

Luego de que esta instrucción es ejecutada , el registro de función específica tendrá el mismo
valor que el registro de propósito general.

Por ejemplo, el siguiente código copia 0xE6 al PORTA:

LDI R20, 0xE6  ; cargar R20 con 0xE6
OUT PORTA, R20 ; cargar R20 en PORTA

NOTA: Esta instrucción solo funciona con los SFRs con dirección E/S entre 0 y 63(0x3F).
Para los SFRs ubicados fuera de este rango debe usarse la instrucción STS y la dirección de
la memoria de datos.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

5.- ARQUITECTURA DEL ATMEGA2560

5.18.- IN, OUT vs LDS, STS

Como se mencionó anteriormente, podemos usar la instrucción LDS para copiar el contenido
de una ubicación de memoria a un GPR. Esto quiere decir que podemos cargar el contenido
de un SFR a un GPR, usando la instrucción LDS.

Entonces ¿Cuál es la ventaja de usar la instrucción IN para leer el contenido de un SFR


en lugar de utilizar la instrucción LDS?

La instrucción IN presenta las siguientes ventajas:

● El CPU ejecuta la instruccion IN más rápido que la instrucción LDS.

● La instrucción IN ocupa 02 bytes en la memoria de programa, mientras que la instrucción


LDS ocupa 04 bytes. Esto quiere decir que la instrucción IN ocupa menos memoria.

● Al usar la instrucción IN podemos usar las etiquetas de los SFRs, proporcionadas por el
fabricante.

● La instrucción IN se encuentra disponible en todos los microcontroladores de la familia


AVR, mientras que la instrucción LDS no se encuentra implementada en algunos miembros
de esta familia.

● De forma análoga, la instrucción OUT presenta ventajas frente a la instrucción STS.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

6.- MANIPULACIÓN DE PUERTOS DE ENTRADA/SALIDA

6.1.- Arquitectura de los puertos de E/S

Detalle de pin en un GPIO del ATMega2560.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

6.- MANIPULACIÓN DE PUERTOS DE ENTRADA/SALIDA

6.1.- Arquitectura de los puertos de E/S

Diagrama de bloques de un puerto del ATMega2560.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

6.- MANIPULACIÓN DE PUERTOS DE ENTRADA/SALIDA

6.2.- Registros de los puertos de E/S

Como se pudo apreciar en el diagrama anterior, existen 03 flip-flops, cuyas salidas definen el
comportamiento de un pin de E/S del microcontrolador:

● DD (Data direction): Define la dirección del pin, es decir, si el pin se comportará como una
entrada o una salida digital. Si la salida de este Flip-Flop es ‘1’, entonces el pin funciona
como salida digital; de lo contrario, el pin funciona como entrada.

● PORT: Define el valor de la salida del pin, es decir, si la salida es un ‘1’ lógico o un ‘0’
lógico. Este valor de salida puede ser escrito y leído por la aplicación.

● PIN: Proporciona el valor detectado en el pin cuando éste funciona como entrada (DDR =
0). Este valor cambia cuando la señal de entrada cambia.

Los pines de E/S no trabajan de manera aislada, sino que se encuentran organizados en
grupos de 8, conocidos como puertos. Por esta razón, los flip-flops mencionados
anteriormente también se encuentran asociados en grupos de 8, llamados registros.

Por lo tanto, para un PUERTO x (A, B, C, etc.) de 8 pines, tenemos los siguiente registros:
DDRx. PORTx, y PINx.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

6.- MANIPULACIÓN DE PUERTOS DE ENTRADA/SALIDA

6.2.- Registros de los puertos de E/S

Relación entre los registros y los pines de un PUERTO x en el microcontrolador ATmega2560.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

6.- MANIPULACIÓN DE PUERTOS DE ENTRADA/SALIDA

6.2.- Registros de los puertos de E/S

Registros asociados al Puerto F del ATmega2560.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

6.- MANIPULACIÓN DE PUERTOS DE ENTRADA/SALIDA

6.3.- Escritura de un puerto de salida

Para escribir salidas digitales a través de un PUERTO x se deben seguir algunos pasos:

1) Definir el puerto que se desea usar como salida y verificar que no se encuentre conectado
a ninguna señal que pueda causar un conflicto (corto circuito).

2) Al arrancar el microcontrolador, todos los puertos se encuentran configurados como


entrada digital. Por esta razón, es necesario manipular el registro DDRx para colocar en ‘1’
todos los bits correspondientes a los pines que se desea emplear como salida.

3) Cargar en un registro de propósito general (GPR) el valor que se desea enviar a la salida.

4) Finalmente, cargar el valor deseado desde el GPR al registro PORTx.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

6.- MANIPULACIÓN DE PUERTOS DE ENTRADA/SALIDA

6.3.- Lectura de un puerto de entrada

Para leer entradas digitales a través de un PUERTO x se deben seguir algunos pasos:

1) Definir el puerto que se desea usar como entrada y verificar que el pin no se encuentre
“flotante”, es decir, que siempre se tenga una señal con nivel lógico definido (‘1’ ó ‘0’). Una
forma de hacer esto es colocando una resistencia pull-up o pull-down (la que encuentre
más conveniente).

2) Al arrancar el microcontrolador, todos los puertos se encuentran configurados como


entrada digital. Por esta razón, no es necesario manipular el registro DDRx cuando se
desea usar un puerto como entrada.

3) Cargar el valor desde el registro PINx a un registro de propósito general (GPR).

4) Finalmente, leer el valor contenido en el GPR.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

6.- MANIPULACIÓN DE PUERTOS DE ENTRADA/SALIDA

6.4.- Ejercicios aplicativos

Ejercicio 01:
Conectar 08 LEDs al PUERTO F del microcontrolador. Luego, escribir un programa que lleve
a cabo lo siguiente: Crear una etiqueta NUMERO que defina un valor constante. Luego,
cargar NUMERO al registro R18, incrementarlo, copiar el resultado al registro R8 y mostrar su
valor en el PUERTO F.

Ejercicio 02:
Conectar 08 LEDs al PUERTO F del microcontrolador. Luego, escribir un programa que lleve
a cabo lo siguiente: Almacenar valores en 02 GPRs, sumarlos y mostrar el resultado en el
PUERTO F.

Ejercicio 03:
Conectar 08 LEDs al PUERTO F del microcontrolador. Luego, escribir un programa que lleve
a cabo lo siguiente: Crear dos etiquetas VAR1 y VAR2, correspondientes a las posiciones
0x201 y 0x202 en la SRAM, respectivamente; almacenar dos valores en VAR1 y VAR2,
emplear los GPRs para llevar a cabo una sustracción entre estos dos valores, y mostrar el
resultado en el PUERTO F.

Ejercicio 04:
Conectar 08 LEDs al PUERTO F del microcontrolador y 08 pulsadores (con resistencias pull-
up/pull-down) al PUERTO K. Luego, escribir un programa que lleve a cabo lo siguiente: Leer
el PUERTO K completo (8 bits), calcular el complemento a uno del valor leído, almacenar el
resultado en la posición 0x300 de la SRAM, y mostrar el resultado en el PUERTO F.

Semana 05 – Microcontroladores Miguel A. Torres Lázaro


Arquitectura de Computadoras

7.- PREGUNTAS

Semana 05 – Microcontroladores Miguel A. Torres Lázaro

También podría gustarte