Está en la página 1de 111

Universidad de Málaga

Departamento de Tecnología Electrónica

E.T.S. Ingeniería de Telecomunicación


Grado en Ingeniería de Sistemas de Telecomunicación

Microcontroladores
Curso 2019/2020

Tema 8: Arquitectura
(v1)
Índice

1. Sistema 4. Reset
1.1. Mapa de memoria 4.1. Tipos de reset
4.1.1. POR (Power-On Reset)
2. Memoria 4.1.2. PUC (Power-Up Clear)
2.1. Arquitectura 4.2. Estado del microcontrolador
2.2. Organización
5. Interrupciones
3. CPU 5.1. Tipos de interrupciones
3.1. Arquitectura 5.1.1. Reset
5.1.2. (No) enmascarables
3.2. Registros
5.1.3. Enmascarables
3.2.1. Específicos
3.2.2. Propósito general 5.2. Vectores de interrupción
3.3. Modos de direccionamiento 5.3. Procesamiento
3.4. Instrucciones 5.4. Esquema completo
3.4.1. Formato
3.4.2. Tamaño y tiempo de ejecución
3.4.3. Codificación
3.4.4. Descripción

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.1


Índice

1. Sistema 4. Reset
1.1. Mapa de memoria 4.1. Tipos de reset
4.1.1. POR (Power-On Reset)
2. Memoria 4.1.2. PUC (Power-Up Clear)
2.1. Arquitectura 4.2. Estado del microcontrolador
2.2. Organización
5. Interrupciones
3. CPU 5.1. Tipos de interrupciones
3.1. Arquitectura 5.1.1. Reset
5.1.2. (No) enmascarables
3.2. Registros
5.1.3. Enmascarables
3.2.1. Específicos
3.2.2. Propósito general 5.2. Vectores de interrupción
3.3. Modos de direccionamiento 5.3. Procesamiento
3.4. Instrucciones 5.4. Esquema completo
3.4.1. Formato
3.4.2. Tamaño y tiempo de ejecución
3.4.3. Codificación
3.4.4. Descripción

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.2


1. Sistema

1. Sistema

Almacenamiento
Controla transferencias Memoria programa y datos
de datos en el sistema
CPU
Realiza operaciones
sobre los datos Periféricos Comunicación con el
E/S mundo exterior

Buses
• Direcciones: indica
el elemento del
sistema sobre el que
se va a operar Mundo
Exterior
• Datos: transporta la
información con la
que se va a operar
Interconexión de los
• Control: señales elementos del sistema
auxiliares de gestión
del sistema (relojes,
reset…)

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.3


1. Sistema

MSP430G2533

Memoria

Módulo auxiliar
de gestión

Periféricos
E/S
CPU

Buses

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.4


1. Sistema – 1.1. Mapa de memoria

1.1. Mapa de memoria


─ Definición: esquema que representa la distribución de las direcciones que
permiten seleccionar los distintos elementos del sistema:
• Registros especiales de la CPU
• Registros de configuración de los periféricos E/S (“Periféricos Mapeados en
Memoria”  se accede a ellos como a posiciones de memoria)
• Memoria del sistema
─ Exclusividad: cada dirección se corresponde con un único elemento del
sistema, y cada elemento del sistema posee una única dirección
─ Niveles de descripción: el mapa de memoria se puede representar en dos
niveles distintos:
• Funcional: uso o funcionalidad que le asigna el sistema a cada dirección
(programa, datos, vectores de interrupción…)
• Físico: tipo de elemento que se encuentra ubicado en cada dirección (Flash,
RAM, periféricos E/S, registros especiales de la CPU…)
─ Tamaño: el mapa de memoria no tiene por qué cubrir la capacidad de
direccionamiento completa de la CPU (depende del tamaño de la memoria
utilizada)
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.5
1. Sistema – 1.1. Mapa de memoria

Físico Funcional
Dependiente del dispositivo

0xFFFF Vectores
Flash 64 B
0xFFC0 Interrupción

0xFFBF

Flash Código 16 KB

0xC000

NO UTILIZADA

0x10FF Información
Flash 256 B 64 KB
0x1000 Calibración
MSP430x2xx Family User's Guide

+
NO UTILIZADA

0x03FF
RAM Datos 512 B
0x0200
0x01FF
Periféricos 16 bits 256 B
0x0100

0x00FF
Periféricos 8 bits 240 B
0x0010
0x000F
Registros especiales 16 B
0x0000

MSP430G2533
MSP430G2533 Datasheet

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.6


1. Sistema – 1.1. Mapa de memoria

Destinada a ubicar el código del programa (al ser memoria


0xFFFF
Flash
Vectores
64 B Flash no volátil permanecen los datos almacenados, es decir,
0xFFC0 Interrupción
el programa, aunque se interrumpa la alimentación del
0xFFBF sistema). También se puede utilizar para almacenar datos fijos
(constantes)
Flash Código 16 KB
Información de calibración del dispositivo generada durante
su fabricación (no debe modificarse)
0xC000

Destinada a ubicar los datos del programa (al ser memoria


NO UTILIZADA
RAM volátil se eliminan los datos almacenados al interrumpir la
alimentación del sistema)
0x10FF Información
Flash 256 B 64 KB
0x1000 Calibración
Configuración de periféricos E/S de 16 bits (se deben realizar
accesos con palabras; si se realizan accesos con bytes, sólo
NO UTILIZADA
se pueden direccionar posiciones pares, y el byte alto del
0x03FF resultado es siempre 0)
RAM Datos 512 B
0x0200
Configuración de periféricos E/S de 8 bits (se deben realizar
0x01FF
0x0100
Periféricos 16 bits 256 B accesos con bytes ; si se realizan accesos con palabras, una
lectura proporciona resultados impredecibles en el contenido
0x00FF
Periféricos 8 bits 240 B del byte alto, y una escritura ignora el contenido del byte alto)
0x0010
0x000F Registros especiales de la CPU (se deben realizar accesos con
Registros especiales 16 B
0x0000 bytes ; no se permite realizar accesos con palabras)

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.7


1. Sistema – 1.1. Mapa de memoria

MSP430G2533: Registros especiales

MSP430G2533 Datasheet

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.8


1. Sistema – 1.1. Mapa de memoria

MSP430G2533: Periféricos 8 bits

MSP430G2533 Datasheet

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.9


1. Sistema – 1.1. Mapa de memoria

MSP430G2533: Periféricos 8 bits

MSP430G2533 Datasheet

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.10


1. Sistema – 1.1. Mapa de memoria

MSP430G2533: Periféricos 16 bits

MSP430G2533 Datasheet

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.11


1. Sistema – 1.1. Mapa de memoria

MSP430G2533: Información de calibración

MSP430G2533 Datasheet

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.12


Índice

1. Sistema 4. Reset
1.1. Mapa de memoria 4.1. Tipos de reset
4.1.1. POR (Power-On Reset)
2. Memoria 4.1.2. PUC (Power-Up Clear)
2.1. Arquitectura 4.2. Estado del microcontrolador
2.2. Organización
5. Interrupciones
3. CPU 5.1. Tipos de interrupciones
3.1. Arquitectura 5.1.1. Reset
5.1.2. (No) enmascarables
3.2. Registros
5.1.3. Enmascarables
3.2.1. Específicos
3.2.2. Propósito general 5.2. Vectores de interrupción
3.3. Modos de direccionamiento 5.3. Procesamiento
3.4. Instrucciones 5.4. Esquema completo
3.4.1. Formato
3.4.2. Tamaño y tiempo de ejecución
3.4.3. Codificación
3.4.4. Descripción

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.13


2. Memoria

2. Memoria

Memoria

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.14


2. Memoria – 2.1. Arquitectura

2.1. Arquitectura
─ Harvard: separa la memoria en dos bloques de memoria independientes, uno
para almacenar el programa y otro para almacenar los datos. Existen buses
diferenciados para acceder a cada bloque de memoria, los cuales pueden tener
distinto tamaño:

Memoria
Instrucciones
Programa
Direcciones
CPU Direcciones

Datos
Datos

 Mayor eficiencia al poder realizar accesos simultáneos a ambos bloques de


memoria para obtener tanto la instrucción como los datos
 Complejidad de diseño de la CPU

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.15


2. Memoria – 2.1. Arquitectura

─ Von Neumann: utiliza la memoria para almacenar tanto el programa como los
datos. Los buses para acceder a la memoria son compartidos:

Memoria

Direcciones Programa
CPU
Instrucciones – Datos Datos

 Simplificación de diseño de la CPU


 Menor eficiencia al tener que realizar varios accesos consecutivos a la
memoria para obtener la instrucción y los datos

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.16


2. Memoria – 2.1. Arquitectura

MSP430G2533

MSP430x2xx Family User's Guide

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.17


2. Memoria – 2.2. Organización

2.2. Organización
─ Tamaño de los datos: aunque la longitud de la palabra es de 16 bits, la CPU
puede acceder a los datos como palabras (16 bits) o como bytes (8 bits)
─ Definiciones:
• Al estar formada una palabra por 2 bytes, se denomina byte menos
significativo o LSB (“Least Significant Byte”) al byte de menor peso (ubicado
en la parte baja de la palabra), y byte más significativo o MSB (“Most
Significant Byte”) al byte de mayor peso (ubicado en la parte alta de la
palabra)
MSB 1 0 1 1 1 0 0 0 0 0 0 1 1 0 1 0 LSB

• Al estar formado un byte por 8 bits, se denomina bit menos significativo o


LSb (“Least Significant bit”) al bit de menor peso (ubicado en la parte baja
del byte), y bit más significativo o MSb (“Most Significant bit”) al bit de mayor
peso (ubicado en la parte alta del byte)(1)

MSb 0 0 0 1 1 0 1 0 LSb

(1) Esta definición no es correcta, pues se utiliza el término LSB para denotar tanto al byte menos significativo como al bit
menos significativo indistintamente, y se utiliza el término MSB para denotar tanto al byte más significativo como al bit
más significativo indistintamente. No obstante, se empleará esta notación para evitar ambigüedades
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.18
2. Memoria – 2.2. Organización

─ Endianness: formato de almacenamiento en memoria de los datos que ocupan


más de un byte (como por ejemplo una palabra):
• Little endian: almacena en las direcciones menores de memoria el LSB y
en las direcciones mayores de memoria el MSB
• Big endian: almacena en las direcciones menores de memoria el MSB y en
las direcciones mayores de memoria el LSB

MSB 1 0 1 1 1 0 0 0 0 0 0 1 1 0 1 0 LSB

0xB81A

0x0005 0x0005

0x0004 0x0004

0x0003 0xB8 MSB 0x0003 0x1A LSB


0x0002 0x1A LSB 0x0002 0xB8 MSB
0x0001 0x0001

0x0000 0x0000

Little endian Big endian


Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.19
Índice

1. Sistema 4. Reset
1.1. Mapa de memoria 4.1. Tipos de reset
4.1.1. POR (Power-On Reset)
2. Memoria 4.1.2. PUC (Power-Up Clear)
2.1. Arquitectura 4.2. Estado del microcontrolador
2.2. Organización
5. Interrupciones
3. CPU 5.1. Tipos de interrupciones
3.1. Arquitectura 5.1.1. Reset
5.1.2. (No) enmascarables
3.2. Registros
5.1.3. Enmascarables
3.2.1. Específicos
3.2.2. Propósito general 5.2. Vectores de interrupción
3.3. Modos de direccionamiento 5.3. Procesamiento
3.4. Instrucciones 5.4. Esquema completo
3.4.1. Formato
3.4.2. Tamaño y tiempo de ejecución
3.4.3. Codificación
3.4.4. Descripción

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.20


3. CPU

3. CPU

CPU

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.21


3. CPU

Características:
─ Arquitectura: RISC

─ Registros: dispone de 16 registros de 16 bits


─ Modos de direccionamiento: posee 7 modos de direccionamiento para
acceder a los datos
─ Instrucciones: 27 instrucciones básicas y 24 instrucciones emuladas:
• Básicas: son ejecutadas directamente por la CPU
• Emuladas: son instrucciones ficticias que simplifican el desarrollo del
código, y son sustituidas por instrucciones básicas equivalentes

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.22


3. CPU – 3.1. Arquitectura

3.1. Arquitectura
─ CISC (Complex Instruction Set Computer): número elevado de instrucciones
complejas (para reducir el número de accesos a memoria)
 Programas más cortos
 CPU más compleja de diseñar
 Menor eficiencia al dificultar el paralelismo en la ejecución de instrucciones
(pipeline)
• Modelo utilizado antiguamente por µP (Intel, AMD)  En desuso
─ RISC (Reduced Instruction Set Computer): número reducido de instrucciones
sencillas (para implementar instrucciones rápidas de ejecutar)
 CPU más sencilla de diseñar
 Mayor eficiencia al favorecer el paralelismo en la ejecución de instrucciones
(pipeline)
 Programas más extensos
• Modelo utilizado por µC y algunos µP (ARM)

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.23


3. CPU – 3.1. Arquitectura

MSP430G2533

MSP430G2533 Datasheet

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.24


3. CPU – 3.2. Registros

3.2. Registros
─ Dispone de 16 registros de 16 bits
4 registros específicos con funcionalidades especiales:
PC: Contador de Programa (Program Counter)
SP: Puntero de Pila (Stack Pointer)
SR: Registro de Estado (Status Register)
CG: Generador de Constantes (Constant Generator)

12 registros generales de propósito general: R4..R15

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.25


3. CPU – 3.2. Registros – 3.2.1. Específicos

3.2.1. Específicos
R0: Contador de programa (PC: “Program Counter”)
─ Funcionalidad: apunta a la dirección de la siguiente instrucción a ejecutar
─ Características: como todas las instrucciones tienen un tamaño par en bytes (2,
4 ó 6 bytes), siempre contiene una dirección par
─ Operación: la CPU se encarga de actualizar automáticamente el contador de
programa en función de la instrucción ejecutada

Dirección par

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.26


3. CPU – 3.2. Registros – 3.2.1. Específicos

R1: Puntero de pila (SP: “Stack Pointer”)


─ Funcionalidad: apunta a la parte superior de la pila(1) (stack) del sistema
─ Características:
• Como la pila puede almacenar indistintamente palabras o bytes, el puntero
de pila siempre apunta a una dirección par, para poder acceder
correctamente a las palabras (si se almacena un byte, el puntero de pila se
sigue modificando en dos posiciones)
• Opera con un esquema de predecremento para introducir datos (PUSH) y
postincremento para extraer datos (POP), por lo que la pila crece hacia
las direcciones bajas de memoria (disminuye SP) cuando se introducen
nuevos datos en ella, y decrece hacia las direcciones altas de memoria
(aumenta SP) cuando se extraen datos de ella.
(1) Una pila es una estructura de datos en la que el modo de acceso es de tipo LIFO (Last In First Out  último en entrar,
primero en salir), la cual permite almacenar y recuperar datos ordenadamente. Los datos almacenados se estructuran
de forma “apilada”, por lo que en todo momento sólo se tiene acceso a la parte superior de la pila o TOS (Top Of Stack),
donde se encuentra el último dato almacenado. Para operar con una pila es necesario disponer de un puntero de pila
(SP) que apunte a la parte superior de la pila, gracias al cual se pueden llevar a cabo dos operaciones básicas:
introducir un nuevo dato en la pila (PUSH) y extraer el último dato de la pila (POP). Cualquiera de estas dos operaciones
aumenta o disminuye el tamaño de la pila, por lo que se modifica convenientemente el puntero de pila. Según esta
filosofía, los datos almacenados en último lugar son los primeros en ser recuperados
SP PUSH POP
SP
SP
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.27
3. CPU – 3.2. Registros – 3.2.1. Específicos

• Es necesario inicializar el valor del puntero de pila con la posición a partir de


la cual se quieren empezar a almacenar valores, posición conocida como
base de la pila o BOS (Bottom Of Stack).
• Normalmente se utiliza como base de la pila (BOS) el final de la RAM
(0x0400 en el caso del MSP430G2533), ya que la pila crece hacia las
direcciones bajas de memoria(1)
─ Operación:
• La utiliza automáticamente la CPU para almacenar la dirección de retorno
(PC) de las llamadas a subrutinas, así como la dirección de retorno (PC) y el
registro de estado (SR) durante las interrupciones
• Se puede utilizar para pasar parámetros a las subrutinas
• Se puede utilizar para almacenar datos temporalmente

Dirección par

(1) Igualmente, se suele utilizar como comienzo de la zona de variables el principio de la RAM (0x0200 en el caso del
MSP430G2533), pues las variables se van almacenando en posiciones crecientes de memoria. Con este esquema se
optimiza el uso de la memoria, ya que las variables se van creando desde las posiciones bajas a las posiciones altas de
memoria y la pila va ocupando desde las posiciones altas a las posiciones bajas de memoria, maximizando la distancia
entre ambas zonas (variables y pila) y permitiendo el mayor uso de toda la memoria disponible
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.28
3. CPU – 3.2. Registros – 3.2.1. Específicos

PUSH POP
 
Predecremento Postincremento

Datos
almacenados

Base de la pila
(BOS)
2 1
1

Parte superior de
la pila (TOS) con
el último dato
alnmacenado

NOTA: Con el esquema de predecremento/postincremento utilizado la base de la pila (BOS) nunca contiene datos
almacenados
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.29
3. CPU – 3.2. Registros – 3.2.1. Específicos

R2: Registro de estado (SR: “Status Register”)


─ Funcionalidad: indica y modifica el estado actual de la CPU en función de las
instrucciones ejecutadas
─ Operación: algunas operaciones (como los saltos condicionales) utilizan
implícitamente el registro de estado

Operaciones aritméticas

Bajo consumo

Interrupciones

rw-0: Indica que este bit se puede leer (r) y escribir (w),
y que tras un reset se inicializa a cero (0)

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.30


3. CPU – 3.2. Registros – 3.2.1. Específicos

Desbordamiento: resultado
inválido en operaciones
aritméticas (V=1)
Bajo consumo: controlan los
relojes activos en el sistema
Interrupciones: habilita las
interrupciones enmascarables
(GIE=1)
Negativo: resultado negativo
en operaciones aritméticas
(N=1)
Cero: resultado nulo en
operaciones aritméticas (Z=1)
Acarreo: acarreo generado en
operaciones aritméticas (C=1)

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.31


3. CPU – 3.2. Registros – 3.2.1. Específicos

R2/R3: Generadores de constantes (CG1/CG2: “Constant Generator”)


─ Funcionalidad: generan(1) algunas constantes comúnmente utilizadas (0, +1,
+2, +4, +8, -1) sin necesidad de que aparezcan explícitamente en el código
─ Características: permiten reducir el tamaño del código y acelerar su ejecución,
al no tener que incluir las constantes explícitamente en el mismo
─ Operación: su utilización es totalmente transparente al programador, siendo el
ensamblador(2) el encargado de sustituir las constantes a generar que aparezcan
en el código por la combinación adecuada de registro (R2/R3) y modo de
direccionamiento origen (bits As) en la codificación de bits de la instrucción

Uso normal del registro R2 (SR)


Uso especial del registro R2
(direccionamiento absoluto)

Uso de los registros R2/R3 como


generadores de constantes
(0, +1, +2, +4, +8, -1)

Codificación Constante

(1) Sólo se utilizan en el modo de direccionamiento inmediato


(2) El ensamblador es el programa que traduce cada instrucción del código fuente en su correspondiente codificación de bits
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.32
3. CPU – 3.2. Registros – 3.2.2. Propósito general

3.2.2. Propósito general


R4-R15:
─ Funcionalidad: registros genéricos para almacenar datos y operar con ellos
─ Características: aunque son registros de 16 bits, se puede operar con ellos en
formato byte o en formato palabra
─ Operación:
• Cuando se utilizan como origen de los datos y se opera en formato byte, la
parte alta del registro (MSB) se ignora
• Cuando se utilizan como destino de los datos y se opera en formato byte, la
parte alta del registro (MSB) se rellena con cero

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.33


3. CPU – 3.3. Modos de direccionamiento

3.3. Modos de direccionamiento


─ Características: sirven para localizar los operandos de cada instrucción, que
son dos para algunas instrucciones (origen y destino) y sólo uno para otras
instrucciones (origen o destino)
─ Operación: existen 7 modos de direccionamiento

Destino
Origen

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.34


3. CPU – 3.3. Modos de direccionamiento

Registro:
─ Operación: el operando se encuentra en un registro (Rn)  se puede utilizar
para mover datos desde/hasta registros

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.35


3. CPU – 3.3. Modos de direccionamiento

Indexado:
─ Operación: el operando se encuentra en la dirección a la que apunta un registro
(Rn) más un determinado desplazamiento (X)  se puede utilizar para mover
datos desde/hasta arrays en memoria

Necesita una palabra adicional de la instrucción para


almacenar el desplazamiento (X)
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.36
3. CPU – 3.3. Modos de direccionamiento

Simbólico:
─ Operación: el operando se encuentra en la dirección identificada por una
etiqueta  se puede utilizar para mover datos desde/hasta posiciones de
memoria identificadas mediante etiquetas (es el modo de direccionamiento
utilizado para referenciar variables)

Necesita una palabra adicional de la instrucción para


almacenar la dirección del dato (X)
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.37
3. CPU – 3.3. Modos de direccionamiento

Absoluto:
─ Operación: el operando se encuentra en la dirección identificada por una
determinada posición  se puede utilizar para mover datos desde/hasta
determinadas posiciones de memoria (es el modo de direccionamiento utilizado
para referenciar periféricos)

Necesita una palabra adicional de la instrucción para


almacenar la dirección del dato (X)
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.38
3. CPU – 3.3. Modos de direccionamiento

Indirecto:
─ Operación: el operando se encuentra en la dirección a la que apunta un registro
(Rn)  se puede utilizar para mover datos desde posiciones de memoria
identificadas mediante punteros

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.39


3. CPU – 3.3. Modos de direccionamiento

Indirecto con autoincremento:


─ Operación: el operando se encuentra en la dirección a la que apunta un registro
(Rn), el cual se incrementará (en 1 para formato byte y en 2 para formato
palabra) para apuntar a la siguiente dirección tras la ejecución de la instrucción
 se puede utilizar para mover bloques de datos desde posiciones de memoria
identificadas mediante punteros

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.40


3. CPU – 3.3. Modos de direccionamiento

Inmediato:
─ Operación: el operando se encuentra en la propia instrucción  se puede
utilizar para introducir constantes en memoria/registros (es el modo de
direccionamiento utilizado para configurar periféricos)

Necesita una palabra adicional de la instrucción para


almacenar el dato (N), salvo que el dato sea
{0,+1,+2,+4,+8,-1} y se utilice el generador de constantes
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.41
3. CPU – 3.4. Instrucciones

3.4. Instrucciones
Palabra Palabra Palabra

─ Formato: Código Operación Operando … Operando

Operación a realizar Datos sobre los que


operar
Número de operandos

Tamaño de los operandos

Localización de los operandos


(Modos de direccionamiento)

NOTA: En el MSP430 el tamaño de la palabra (longitud de palabra) es de 16 bits

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.42


3. CPU – 3.4. Instrucciones

─ Codificación: cada instrucción viene definida mediante un patrón de bits


conocido como Código Máquina, que depende de la instrucción y del número,
tamaño y localización de los operandos

0100 0111 0100 1000 = 0x4748  Mover el byte bajo de R7 a R8

Mover R7 Byte R8

─ Representación: para facilitar el desarrollo del código cada instrucción se


representa mediante un Nemónico, que es una abreviatura del patrón de bits
correspondiente a cada instrucción(1)

MOV.B R7,R8  Mover el byte bajo de R7 a R8

0100 0111 0100 1000 = 0x4748

─ Tamaño y tiempo de ejecución: cada instrucción tiene un tamaño establecido


(en palabras) y tarda un determinado número de ciclos de reloj (de la CPU) en
ejecutarse, dependiendo ambos parámetros del tipo de instrucción y del número,
tamaño y localización de los operandos
(1) El programa encargado de traducir los nemónicos a código máquina se conoce como Ensamblador

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.43


3. CPU – 3.4. Instrucciones

Características instrucciones MSP430:


─ 27 instrucciones básicas:
• Formato I: instrucciones con 2 operandos Pueden operar con bytes (.B) o
con palabras (.W) – Por defecto
• Formato II: instrucciones con 1 operando operan con palabras

• Formato III: instrucciones de salto


─ 24 instrucciones emuladas: instrucciones virtuales que representan de forma
simplificada algunas instrucciones básicas ampliamente utilizadas. Se utilizan
para facilitar el desarrollo del código, y el ensamblador las sustituye
automáticamente por sus instrucciones básicas equivalentes
RET  MOV @SP+,PC

Emulada Básica

─ Tamaño y tiempo de ejecución :


• 1 a 3 palabras de 16 bits
• 1 a 6 ciclos de reloj de la CPU

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.44


3. CPU – 3.4. Instrucciones

Descripción detallada de cada


instrucción en el documento
“MSP430x2xx Family User's Guide”

Operación  mover el operando origen


(src) al destino (dst)

Nemónico

Efecto de la instrucción en los


bits del registro de estado (SR)

Descripción

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.45


3. CPU – 3.4. Instrucciones – 3.4.1. Formato

3.4.1. Formato

Las instrucciones aritméticas simplemente

(2 operandos)
realizan la operación para las que están

Formato I
diseñadas, sin tener en cuenta el tipo de
datos sobre los que operan. Es tarea del
programador elegir la instrucción
adecuada en función de los datos a
procesar (sin signo, con signo, byte,
palabra…) e interpretar el resultado de
dichas instrucciones

(1 operando)
Formato II
Las instrucciones de salto condicional se

Formato III
suelen utilizar en combinación con otras

(Saltos)
instrucciones (aritméticas, comparación,
testeo de bits…), de forma que estas otras
instrucciones actualicen los bits del
registro de estado (SR) antes de
comprobar la condición del salto

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.46


3. CPU – 3.4. Instrucciones – 3.4.2. Tamaño y tiempo de ejecución

3.4.2. Tamaño y tiempo de ejecución


Instrucción más corta y más rápida
(direccionamiento a registro)

Instrucciones más largas y más lentas


(2 operandos)
Formato I
N = {0,+1,+2,+4,+8,-1}  generador
de constantes: menor tamaño (1
palabra menos) y menor tiempo de
ejecución (1 ciclo menos)

Instrucción más larga y más lenta


(direccionamiento absoluto)

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.47


3. CPU – 3.4. Instrucciones – 3.4.2. Tamaño y tiempo de ejecución

N = {0,+1,+2,-1}  generador de N = {+4,+8}  no generador de


constantes: menor tamaño (1 constantes: igual tamaño e igual
palabra menos) y menor tiempo de tiempo de ejecución (ERRATA

largas y más lentas


Instrucciones más
ejecución (1 ciclo menos) DISEÑO CPU)

Instrucción más corta y más rápida

(1 operando)
Formato II
(direccionamiento a registro)

Instrucción más larga y más lenta


(direccionamiento absoluto)

Formato III
(Saltos)
Conclusiones:
─ Los modos de direccionamiento tienen una gran influencia en el tamaño y
tiempo de ejecución de las instrucciones. Si hay que optimizar el código en
tamaño y/o velocidad, es necesario elegir el modo de direccionamiento más
eficiente según cada caso (el modo de direccionamiento más eficiente es el
direccionamiento a registro)
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.48
3. CPU – 3.4. Instrucciones – 3.4.3. Codificación

3.4.3. Codificación

(2 operandos)
Formato I
(1 operando)
Formato II
Formato III
(Saltos)

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.49


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – a) Formato I

a) Formato I

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.50


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – a) Formato I

Código de operación:

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.51


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – a) Formato I

Modo de direccionamiento:

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.52


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – a) Formato I

Tamaño:

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.53


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – b) Formato II

b) Formato II

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.54


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – b) Formato II

Código de operación:

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.55


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – b) Formato II

Modo de direccionamiento:

NOTA: Todos los modos de direccionamiento son válidos para las instrucciones PUSH y CALL, y todos los modos de
direccionamiento excepto el inmediato son válidos para el resto de instrucciones
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.56
3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – b) Formato II

Tamaño:

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.57


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – c) Formato III

c) Formato III

NOTA: El campo C de la instrucción (bits 10 al 12) hace referencia a la condición de salto

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.58


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – c) Formato III

Código de operación:

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.59


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – c) Formato III

001 000  JNE/JNZ


001  JEQ/JZ
010  JNC
011  JC
100  JN
101  JGE
110  JL
111  JMP

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.60


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – c) Formato III

Desplazamiento (en palabras) desde el contador de programa


(PC), considerado como un valor de 10 bits con signo (rango válido
desde 511 hasta -512):

PCnew = PCold + 2 + PCoffset x 2  PCoffset = (PCnew – PCold – 2) / 2

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.61


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – d) Ejemplo

d) Ejemplo

Loop  0xC000
cont  0x0200

Loop SWPB R10


CMP.B @R10+,cont 0xC009
JNE Loop 0xC008
0xC007
0xC006
0xC005
0xC004
0xC003
0xC002
0xC001
0xC000

Little endian
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.62
3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – d) Ejemplo

Loop SWPB R10 Formato II


CMP.B @R10+,cont
JNE Loop

0 0 0 1 0 0 0 0 1

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.63


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – d) Ejemplo

Loop SWPB R10 Formato II


CMP.B @R10+,cont
JNE Loop

0 0 1 0 1 0

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.64


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – d) Ejemplo

Loop SWPB R10 Formato II


CMP.B @R10+,cont
JNE Loop

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.65


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – d) Ejemplo

Loop SWPB R10 Formato II


CMP.B @R10+,cont
JNE Loop

0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0

0x108A

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.66


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – d) Ejemplo

Loop SWPB R10


CMP.B @R10+,cont Formato I
JNE Loop

1 0 0 1

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.67


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – d) Ejemplo

Loop SWPB R10


CMP.B @R10+,cont Formato I
JNE Loop

X = cont – PC
= 0x0200 – 0xC004
= 0x41FC

1 0 1 0 1 1 1 0 0 0 0

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.68


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – d) Ejemplo

Loop SWPB R10


CMP.B @R10+,cont Formato I
JNE Loop

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.69


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – d) Ejemplo

Loop SWPB R10


CMP.B @R10+,cont Formato I
JNE Loop

1 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0

0x9AF0
0x41FC

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.70


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – d) Ejemplo

Loop SWPB R10


CMP.B @R10+,cont
JNE Loop Formato III

0 0 1 0 0 0

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.71


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – d) Ejemplo

Loop SWPB R10


CMP.B @R10+,cont
JNE Loop Formato III

PCoffset = (PCnew – PCold – 2) / 2


= (0xC000 – 0xC006 – 2) / 2
= 0x03FC

1 1 1 1 1 1 1 1 0 0

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.72


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – d) Ejemplo

Loop SWPB R10


CMP.B @R10+,cont
JNE Loop Formato III

0 0 1 0 0 0 1 1 1 1 1 1 1 1 0 0

0x23FC

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.73


3. CPU – 3.4. Instrucciones – 3.4.3. Codificación – d) Ejemplo

Loop  0xC000
cont  0x0200

Loop SWPB R10


CMP.B @R10+,cont 0xC009
JNE Loop 0xC008
0xC007 0x23
0xC006 0xFC
0x108A 0xC005 0x41
0xC004 0xFC
0x9AF0
0xC003 0x9A
0x41FC
0xC002 0xF0
0x23FC
0xC001 0x10
0xC000 0x8A

Little endian
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.74
3. CPU – 3.4. Instrucciones – 3.4.4. Descripción

3.4.4. Descripción
Tipos de instrucciones:
─ Aritméticas
─ Lógicas
─ Bit
─ Datos
─ Control de flujo
─ Sistema

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.75


3. CPU – 3.4. Instrucciones – 3.4.4. Descripción – a) Aritméticas

a) Aritméticas
Realizan operaciones de cálculo con los datos

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.76


3. CPU – 3.4. Instrucciones – 3.4.4. Descripción – b) Lógicas

b) Lógicas
Realizan operaciones booleanas con los datos (a nivel de bit)

NOTA: Aunque la instrucción OR no está implementada, la instrucción BIS es equivalente (salvo en los bits de estado)

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.77


3. CPU – 3.4. Instrucciones – 3.4.4. Descripción – c) Bit

c) Bit
Realizan operaciones a nivel de bit con los datos

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.78


3. CPU – 3.4. Instrucciones – 3.4.4. Descripción – d) Datos

d) Datos
Realizan operaciones de modificación de datos

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.79


3. CPU – 3.4. Instrucciones – 3.4.4. Descripción – e) Control de flujo

e) Control de flujo
Controlan el orden de ejecución del código

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.80


3. CPU – 3.4. Instrucciones – 3.4.4. Descripción – f) Sistema

f) Sistema
Realizan operaciones especiales para controlar el sistema

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.81


Índice

1. Sistema 4. Reset
1.1. Mapa de memoria 4.1. Tipos de reset
4.1.1. POR (Power-On Reset)
2. Memoria 4.1.2. PUC (Power-Up Clear)
2.1. Arquitectura 4.2. Estado del microcontrolador
2.2. Organización
5. Interrupciones
3. CPU 5.1. Tipos de interrupciones
3.1. Arquitectura 5.1.1. Reset
5.1.2. (No) enmascarables
3.2. Registros
5.1.3. Enmascarables
3.2.1. Específicos
3.2.2. Propósito general 5.2. Vectores de interrupción
3.3. Modos de direccionamiento 5.3. Procesamiento
3.4. Instrucciones 5.4. Esquema completo
3.4.1. Formato
3.4.2. Tamaño y tiempo de ejecución
3.4.3. Codificación
3.4.4. Descripción

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.82


4. Reset

4. Reset
─ Permite introducir al microcontrolador en un estado inicial conocido

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.83


4. Reset – 4.1. Tipos de reset

4.1. Tipos de reset


─ En la familia MSP430 existen dos tipos de reset:
• POR (“Power-On Reset”): asociado a aspectos hardware
• PUC (“Power-Up Clear”): asociado a aspectos software

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.84


4. Reset – 4.1. Tipos de reset – 4.1.1. POR (Power-On Reset)

4.1.1. POR (Power-On Reset)


─ Las principales causas por las que se genera este tipo de reset son:
• Encendido del dispositivo
• Un nivel bajo en el pin RST/NMI(1) cuando está configurado en modo reset(2)

(1) Útil para conectar un pulsador en el pin RST/NMI que permita realizar un reset del microcontrolador
(2) La funcionalidad del pin RST/NMI se configura en el bit WDTNMI del registro WDTCTL
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.85
4. Reset – 4.1. Tipos de reset – 4.1.2. PUC (Power-Up Clear)

4.1.2. PUC (Power-Up Clear)


─ Las principales causas por las que se genera este tipo de reset son:
• Generación de un reset de tipo POR
• Expiración del tiempo del watchdog
• Violación de la clave de seguridad(1) del watchdog
• Violación de la clave de seguridad(1) de la flash
• Intento de ejecución de alguna instrucción cuya dirección se encuentre en el
rango 0x0000 – 0x01FF (2) o en una zona no utilizada del mapa de memoria

(1) Una clave de seguridad es un valor determinado que hay que introducir en ciertos bits de un registro para poder operar
con el periférico asociado a dicho registro. Sirve para evitar efectos indeseados al escribir accidentalmente en registros
que controlan periféricos críticos del microcontrolador
(2) En este rango de direcciones se encuentran los registros especiales de la CPU y los registros de configuración de los
periféricos de 8 y 16 bits
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.86
4. Reset – 4.2. Estado del microcontrolador

4.2. Estado del microcontrolador


─ Tras un reset (POR/PUC) el microcontrolador se sitúa en el siguiente estado:
• El pin RST/NMI se configura en modo reset
• Los pines de los puertos E/S se configuran en modo entrada
• Los bits del registro de estado SR se inicializan a ‘0’
• El watchdog se configura en modo watchdog(1)
• El contador de programa PC se inicializa al valor almacenado en la dirección
0xFFFE, que se corresponde con el vector de interrupción de la rutina reset.
Si el valor almacenado en dicha dirección es 0xFFFF se entiende que no ha
sido inicializado, por lo que el microcontrolador entra en bajo consumo

(1) Inicialmente el watchdog se configura con un período de aproximadamente 30 ms


Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.87
4. Reset – 4.2. Estado del microcontrolador

• Los registros de la CPU y de los periféricos se inicializan a su valor por


defecto(1), según indique la documentación correspondiente(2):

• POR  (0) , (1) , 0 , 1


• PUC  0,1

• (0) , (1)  POR


• 0 , 1  POR , PUC

(1) Normalmente los flags de interrupción de los registros se suelen inicializar a ‘0’, por lo que se anulan las posibles
interrupciones que quedasen pendientes de ser atendidas
(2) La única diferencia en el estado del microcontrolador tras un reset POR y un reset PUC se encuentra en el valor por
defecto al que se inicializan los distintos registros
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.88
Índice

1. Sistema 4. Reset
1.1. Mapa de memoria 4.1. Tipos de reset
4.1.1. POR (Power-On Reset)
2. Memoria 4.1.2. PUC (Power-Up Clear)
2.1. Arquitectura 4.2. Estado del microcontrolador
2.2. Organización
5. Interrupciones
3. CPU 5.1. Tipos de interrupciones
3.1. Arquitectura 5.1.1. Reset
5.1.2. (No) enmascarables
3.2. Registros
5.1.3. Enmascarables
3.2.1. Específicos
3.2.2. Propósito general 5.2. Vectores de interrupción
3.3. Modos de direccionamiento 5.3. Procesamiento
3.4. Instrucciones 5.4. Esquema completo
3.4.1. Formato
3.4.2. Tamaño y tiempo de ejecución
3.4.3. Codificación
3.4.4. Descripción

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.89


5. Interrupciones

5. Interrupciones
─ Señales que se generan en el sistema como respuesta a la ocurrencia de
distintas acciones, las cuales requieren un procesamiento rápido e inmediato
por parte de la CPU

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.90


5. Interrupciones – 5.1. Tipos de interrupciones

5.1. Tipos de interrupciones


─ En función de la capacidad para habilitar o deshabilitar cada interrupción se
pueden distinguir tres tipos de interrupciones:
• Reset: no se pueden deshabilitar
• (No) enmascarables: se pueden habilitar o deshabilitar únicamente
mediante los bits de habilitación específicos del registro especial IE1 de la
CPU
• Enmascarables: se pueden habilitar o deshabilitar utilizando el bit de
habilitación general GIE del registro de estado SR y los bits de habilitación
específicos de los registros de configuración de cada periférico

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.91


5. Interrupciones – 5.1. Tipos de interrupciones – 5.1.1. Reset

5.1.1. Reset
─ Interrupciones asociadas al reset del sistema, las cuales pueden ser generadas
por las siguientes fuentes:
• Encendido del dispositivo
POR
• Un nivel bajo en el pin RST/NMI cuando está configurado en modo reset
• Expiración del tiempo del watchdog
• Violación de la clave de seguridad del watchdog
PUC
• Violación de la clave de seguridad de la flash
• Intento de ejecución de alguna instrucción cuya dirección se encuentre en el
rango 0x0000 – 0x01FF o en una zona no utilizada del mapa de memoria
─ No se pueden deshabilitar

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.92


5. Interrupciones – 5.1. Tipos de interrupciones – 5.1.2. (No) enmascarables

5.1.2. (No) enmascarables


─ Interrupciones asociadas a fallos especiales del microcontrolador, las cuales
pueden ser generadas por las siguientes fuentes:
• Un flanco activo(1) en el pin RST/NMI cuando está configurado en modo
interrupción
• Fallo en los osciladores externos
• Violación de acceso a la flash(2)
─ Se pueden habilitar o deshabilitar únicamente mediante los bits de habilitación
específicos del registro especial IE1 de la CPU (ACCVIE, NMIIE y OFIE)

─ Tras generarse una interrupción (no) enmascarable los bits de habilitación


específicos del registro especial IE1 de la CPU (ACCVIE, NMIIE y OFIE) se
inicializan a ‘0’, por lo que es necesario volver a activarlos si se quieren habilitar
las correspondientes interrupciones

(1) El flanco activo del pin RST/NMI se configura en el bit WDTNMIES del registro WDTCTL
(2) Se produce una violación de acceso a la flash cuando se intenta acceder a la misma mientras se está programando
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.93
5. Interrupciones – 5.1. Tipos de interrupciones – 5.1.3. Enmascarables

5.1.3. Enmascarables
─ Interrupciones asociadas a los periféricos E/S(1)
─ Se pueden deshabilitar mediante el bit de habilitación general GIE del registro
de estado SR o mediante los bits de habilitación específicos de los registros de
configuración de cada periférico

─ Para que la interrupción correspondiente al periférico esté habilitada es


necesario que ambos bits (bit de habilitación general GIE y bit de habilitación
específico) se encuentren activos

(1) Un periférico E/S puede tener varias interrupciones asociadas


Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.94
5. Interrupciones – 5.2. Vectores de interrupción

5.2. Vectores de interrupción


─ Toda interrupción tiene asociada una rutina de código que la procesa, conocida
como RTI (Rutina de Tratamiento de Interrupción) o ISR (Interrupt Service
Routine)

Interrupción
RTI

Programa

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.95


5. Interrupciones – 5.2. Vectores de interrupción

─ Durante el procesamiento de cualquier interrupción es necesario conocer la


dirección del código correspondiente a la RTI que debe ejecutarse para realizar
su tratamiento
─ Esta información está almacenada en una tabla conocida como tabla de
vectores de interrupción ubicada al final del mapa de memoria (en la memoria
flash), donde cada posible interrupción posee una entrada en la tabla con la
dirección de comienzo de la RTI asociada a la misma(1)
─ Es responsabilidad del programador(2) inicializar correctamente los valores
almacenados en la tabla de vectores de interrupción, de forma que al generarse
cualquier interrupción se pueda localizar la RTI correspondiente

0xFFFF Vectores
Flash 64 B
0xFFC0 Interrupción

0xFFBF

Flash Código 16 KB

0xC000

NO UTILIZADA

(1) Aquellos vectores de interrupción que no son utilizados en el sistema se inicializan al valor 0xFFFF
(2) En C es el compilador el que inicializa los valores almacenados en la tabla de vectores de interrupción
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.96
5. Interrupciones – 5.2. Vectores de interrupción

Posición en la tabla
de vectores de
interrupción
(dirección de
memoria) donde se
debe almacenar la
dirección de
comienzo de la RTI
asociada a cada
interrupción

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.97


5. Interrupciones – 5.3. Procesamiento

5.3. Procesamiento
─ Al generarse una interrupción hay que implementar un mecanismo que permita
detener la ejecución del programa en curso, ejecutar la RTI y continuar
posteriormente con la ejecución del programa

Interrupción
RTI

Programa

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.98


5. Interrupciones – 5.3. Procesamiento

─ Cuando se genera una interrupción se ejecuta la siguiente secuencia(1) para


realizar su tratamiento:
1. Finaliza la ejecución de la instrucción actual si la CPU se encuentra activa,
o se activa la CPU si se encuentra en bajo consumo
2. El contador de programa PC (que apunta a la siguiente instrucción a
ejecutar) se almacena en la pila
3. El registro de estado SR se almacena en la pila(2)

(1) El tiempo que tarda esta secuencia en ejecutarse es de 6 ciclos de reloj


(2) Este comportamiento implica que se almacena el estado actual de la CPU: activa o bajo consumo (bits SCG1, SCG0,
OSCOFF, CPUOFF), habilitación de las interrupciones enmascarables (bit GIE), flags de estado (bits V, N, Z, C)
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.99
5. Interrupciones – 5.3. Procesamiento

4. Si existen múltiples interrupciones pendientes se escoge la de mayor


prioridad
5. Si la interrupción tiene una única fuente se inicializa a ‘0’ el flag de
interrupción asociado a la misma, y si tiene múltiples fuentes no se
modifica ninguno de los flags de interrupción asociados a las mismas(1)
6. Se inicializa a ‘0’ el registro de estado SR, activando la CPU si estaba en
bajo consumo y deshabilitando las interrupciones enmascarables(2)

7. El contenido del vector de interrupción(3) asociado a la misma se carga en


el contador de programa PC, comenzando la ejecución de la RTI

(1) En tal caso debe ser el programador el responsable de comprobar cuál es la fuente de la interrupción e inicializar el flag
de interrupción correspondiente a la misma a ‘0’
(2) Este comportamiento implica que una interrupción no puede ser interrumpida por otra durante su ejecución. Si se desea
alterar este comportamiento y permitir interrupciones anidadas hay que habilitar el bit GIE del registro SR en la propia
RTI, por lo que cualquier nueva interrupción que se genere interrumpirá la RTI que se esté ejecutando
(independientemente de las prioridades de ambas interrupciones)
(3) El vector de interrupción es un puntero que indica la dirección donde comienza la RTI
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.100
5. Interrupciones – 5.3. Procesamiento

─ Cuando finaliza la ejecución de la RTI se ejecuta la siguiente secuencia(1) para


reanudar la ejecución del programa:
1. Se restaura el registro de estado SR con el almacenado en la pila(2)
2. Se restaura el contador de programa PC con el almacenado en la pila (que
apunta a la siguiente instrucción a ejecutar), continuando la ejecución del
código

(1) El tiempo que tarda esta secuencia en ejecutarse es de 5 ciclos de reloj


(2) Este comportamiento implica que se vuelve al estado original de la CPU: activa o bajo consumo (bits SCG1, SCG0,
OSCOFF, CPUOFF), habilitación de las interrupciones enmascarables (bit GIE), flags de estado (bits V, N, Z, C)
Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.101
5. Interrupciones – 5.4. Esquema completo

5.4. Esquema completo


─ Características:
• Programa principal: dirección 0xC000
• Base de la pila: dirección 0x0400
• Interrupción: Timer1_A3  TA1CCR0 CCIFG  vector 0xFFFA

PC 0xC01E 0xFFFE 0xC000

PC 0xC01E MOV.B @R4+,R7 SP 0x03FE 0xFFFC 0xFFFF Vectores


0xC020 ADD.W #0x10,R7 SR 0x010E 0xFFFA 0xC06A Interupción
0xC024 XOR.W #0xA5,R7 …
TA1CCTL0 ... 1

0xC06A CLR.W R4 CCIFG

0xC06C CLR.W R7 RTI


0xC06E RETI
SP 0x03FE 0xC042
… 0x03FC 0x0000
Pila
0x03FA 0x0000

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.102


5. Interrupciones – 5.4. Esquema completo

1. Finaliza la ejecución de la instrucción actual si la CPU se encuentra activa, o se activa la CPU si se encuentra en bajo consumo
2. El contador de programa PC (que apunta a la siguiente instrucción a ejecutar) se almacena en la pila
3. El registro de estado SR se almacena en la pila
4. Si existen múltiples interrupciones pendientes se escoge la de mayor prioridad
5. Si la interrupción tiene una única fuente se inicializa a ‘0’ el flag de interrupción asociado a la misma, y si tiene múltiples fuentes no se
modifica ninguno de los flags de interrupción asociados a las mismas
6. Se inicializa a ‘0’ el registro de estado SR, activando la CPU si estaba en bajo consumo y deshabilitando las interrupciones enmascarables
7. El contenido del vector de interrupción asociado a la misma se carga en el contador de programa PC, comenzando la ejecución de la RTI
8. Finaliza la ejecución de la RTI
9. Se restaura el registro de estado SR con el almacenado en la pila
10. Se restaura el contador de programa PC con el almacenado en la pila (que apunta a la siguiente instrucción a ejecutar), continuando la
ejecución del código

PC 0xC020 0xFFFE 0xC000

0xC01E MOV.B @R4+,R7 SP 0x03FE 0xFFFC 0xFFFF Vectores


PC 0xC020 ADD.W #0x10,R7 SR 0x010E 0xFFFA 0xC06A Interupción
0xC024 XOR.W #0xA5,R7 …
TA1CCTL0 ... 1

0xC06A CLR.W R4 CCIFG

0xC06C CLR.W R7 RTI


0xC06E RETI
SP 0x03FE 0xC042
… 0x03FC 0x0000
Pila
0x03FA 0x0000

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.103


5. Interrupciones – 5.4. Esquema completo

1. Finaliza la ejecución de la instrucción actual si la CPU se encuentra activa, o se activa la CPU si se encuentra en bajo consumo
2. El contador de programa PC (que apunta a la siguiente instrucción a ejecutar) se almacena en la pila
3. El registro de estado SR se almacena en la pila
4. Si existen múltiples interrupciones pendientes se escoge la de mayor prioridad
5. Si la interrupción tiene una única fuente se inicializa a ‘0’ el flag de interrupción asociado a la misma, y si tiene múltiples fuentes no se
modifica ninguno de los flags de interrupción asociados a las mismas
6. Se inicializa a ‘0’ el registro de estado SR, activando la CPU si estaba en bajo consumo y deshabilitando las interrupciones enmascarables
7. El contenido del vector de interrupción asociado a la misma se carga en el contador de programa PC, comenzando la ejecución de la RTI
8. Finaliza la ejecución de la RTI
9. Se restaura el registro de estado SR con el almacenado en la pila
10. Se restaura el contador de programa PC con el almacenado en la pila (que apunta a la siguiente instrucción a ejecutar), continuando la
ejecución del código

PC 0xC020 0xFFFE 0xC000

0xC01E MOV.B @R4+,R7 SP 0x03FC 0xFFFC 0xFFFF Vectores


PC 0xC020 ADD.W #0x10,R7 SR 0x010E 0xFFFA 0xC06A Interupción
0xC024 XOR.W #0xA5,R7 …
TA1CCTL0 ... 1

0xC06A CLR.W R4 CCIFG

0xC06C CLR.W R7 RTI


0xC06E RETI
0x03FE 0xC042
… 0xC020
SP 0x03FC
Pila
0x03FA 0x0000

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.104


5. Interrupciones – 5.4. Esquema completo

1. Finaliza la ejecución de la instrucción actual si la CPU se encuentra activa, o se activa la CPU si se encuentra en bajo consumo
2. El contador de programa PC (que apunta a la siguiente instrucción a ejecutar) se almacena en la pila
3. El registro de estado SR se almacena en la pila
4. Si existen múltiples interrupciones pendientes se escoge la de mayor prioridad
5. Si la interrupción tiene una única fuente se inicializa a ‘0’ el flag de interrupción asociado a la misma, y si tiene múltiples fuentes no se
modifica ninguno de los flags de interrupción asociados a las mismas
6. Se inicializa a ‘0’ el registro de estado SR, activando la CPU si estaba en bajo consumo y deshabilitando las interrupciones enmascarables
7. El contenido del vector de interrupción asociado a la misma se carga en el contador de programa PC, comenzando la ejecución de la RTI
8. Finaliza la ejecución de la RTI
9. Se restaura el registro de estado SR con el almacenado en la pila
10. Se restaura el contador de programa PC con el almacenado en la pila (que apunta a la siguiente instrucción a ejecutar), continuando la
ejecución del código

PC 0xC020 0xFFFE 0xC000

0xC01E MOV.B @R4+,R7 SP 0x03FA 0xFFFC 0xFFFF Vectores


PC 0xC020 ADD.W #0x10,R7 SR 0x010E 0xFFFA 0xC06A Interupción
0xC024 XOR.W #0xA5,R7 …
TA1CCTL0 ... 1

0xC06A CLR.W R4 CCIFG

0xC06C CLR.W R7 RTI


0xC06E RETI
0x03FE 0xC042
… 0x03FC 0xC020
Pila
SP 0x03FA 0x010E

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.105


5. Interrupciones – 5.4. Esquema completo

1. Finaliza la ejecución de la instrucción actual si la CPU se encuentra activa, o se activa la CPU si se encuentra en bajo consumo
2. El contador de programa PC (que apunta a la siguiente instrucción a ejecutar) se almacena en la pila
3. El registro de estado SR se almacena en la pila
4. Si existen múltiples interrupciones pendientes se escoge la de mayor prioridad
5. Si la interrupción tiene una única fuente se inicializa a ‘0’ el flag de interrupción asociado a la misma, y si tiene múltiples fuentes no se
modifica ninguno de los flags de interrupción asociados a las mismas
6. Se inicializa a ‘0’ el registro de estado SR, activando la CPU si estaba en bajo consumo y deshabilitando las interrupciones enmascarables
7. El contenido del vector de interrupción asociado a la misma se carga en el contador de programa PC, comenzando la ejecución de la RTI
8. Finaliza la ejecución de la RTI
9. Se restaura el registro de estado SR con el almacenado en la pila
10. Se restaura el contador de programa PC con el almacenado en la pila (que apunta a la siguiente instrucción a ejecutar), continuando la
ejecución del código

PC 0xC020 0xFFFE 0xC000

0xC01E MOV.B @R4+,R7 SP 0x03FA 0xFFFC 0xFFFF Vectores


PC 0xC020 ADD.W #0x10,R7 SR 0x0000 0xFFFA 0xC06A Interupción
0xC024 XOR.W #0xA5,R7 …
TA1CCTL0 ... 0

0xC06A CLR.W R4 CCIFG

0xC06C CLR.W R7 RTI


0xC06E RETI
0x03FE 0xC042
… 0x03FC 0xC020
Pila
SP 0x03FA 0x010E

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.106


5. Interrupciones – 5.4. Esquema completo

1. Finaliza la ejecución de la instrucción actual si la CPU se encuentra activa, o se activa la CPU si se encuentra en bajo consumo
2. El contador de programa PC (que apunta a la siguiente instrucción a ejecutar) se almacena en la pila
3. El registro de estado SR se almacena en la pila
4. Si existen múltiples interrupciones pendientes se escoge la de mayor prioridad
5. Si la interrupción tiene una única fuente se inicializa a ‘0’ el flag de interrupción asociado a la misma, y si tiene múltiples fuentes no se
modifica ninguno de los flags de interrupción asociados a las mismas
6. Se inicializa a ‘0’ el registro de estado SR, activando la CPU si estaba en bajo consumo y deshabilitando las interrupciones enmascarables
7. El contenido del vector de interrupción asociado a la misma se carga en el contador de programa PC, comenzando la ejecución de la RTI
8. Finaliza la ejecución de la RTI
9. Se restaura el registro de estado SR con el almacenado en la pila
10. Se restaura el contador de programa PC con el almacenado en la pila (que apunta a la siguiente instrucción a ejecutar), continuando la
ejecución del código

PC 0xC06A 0xFFFE 0xC000

0xC01E MOV.B @R4+,R7 SP 0x03FA 0xFFFC 0xFFFF Vectores


0xC020 ADD.W #0x10,R7 SR 0x0000 0xFFFA 0xC06A Interupción
0xC024 XOR.W #0xA5,R7 …
TA1CCTL0 ... 0

PC 0xC06A CLR.W R4 CCIFG

0xC06C CLR.W R7 RTI


0xC06E RETI
0x03FE 0xC042
… 0x03FC 0xC020
Pila
SP 0x03FA 0x010E

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.107


5. Interrupciones – 5.4. Esquema completo

1. Finaliza la ejecución de la instrucción actual si la CPU se encuentra activa, o se activa la CPU si se encuentra en bajo consumo
2. El contador de programa PC (que apunta a la siguiente instrucción a ejecutar) se almacena en la pila
3. El registro de estado SR se almacena en la pila
4. Si existen múltiples interrupciones pendientes se escoge la de mayor prioridad
5. Si la interrupción tiene una única fuente se inicializa a ‘0’ el flag de interrupción asociado a la misma, y si tiene múltiples fuentes no se
modifica ninguno de los flags de interrupción asociados a las mismas
6. Se inicializa a ‘0’ el registro de estado SR, activando la CPU si estaba en bajo consumo y deshabilitando las interrupciones enmascarables
7. El contenido del vector de interrupción asociado a la misma se carga en el contador de programa PC, comenzando la ejecución de la RTI
8. Finaliza la ejecución de la RTI
9. Se restaura el registro de estado SR con el almacenado en la pila
10. Se restaura el contador de programa PC con el almacenado en la pila (que apunta a la siguiente instrucción a ejecutar), continuando la
ejecución del código

PC 0xC070 0xFFFE 0xC000

0xC01E MOV.B @R4+,R7 SP 0x03FA 0xFFFC 0xFFFF Vectores


0xC020 ADD.W #0x10,R7 SR 0x0000 0xFFFA 0xC06A Interupción
0xC024 XOR.W #0xA5,R7 …
TA1CCTL0 ... 0

0xC06A CLR.W R4 CCIFG

0xC06C CLR.W R7 RTI


0xC06E RETI
0x03FE 0xC042
PC … 0x03FC 0xC020
Pila
SP 0x03FA 0x010E

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.108


5. Interrupciones – 5.4. Esquema completo

1. Finaliza la ejecución de la instrucción actual si la CPU se encuentra activa, o se activa la CPU si se encuentra en bajo consumo
2. El contador de programa PC (que apunta a la siguiente instrucción a ejecutar) se almacena en la pila
3. El registro de estado SR se almacena en la pila
4. Si existen múltiples interrupciones pendientes se escoge la de mayor prioridad
5. Si la interrupción tiene una única fuente se inicializa a ‘0’ el flag de interrupción asociado a la misma, y si tiene múltiples fuentes no se
modifica ninguno de los flags de interrupción asociados a las mismas
6. Se inicializa a ‘0’ el registro de estado SR, activando la CPU si estaba en bajo consumo y deshabilitando las interrupciones enmascarables
7. El contenido del vector de interrupción asociado a la misma se carga en el contador de programa PC, comenzando la ejecución de la RTI
8. Finaliza la ejecución de la RTI
9. Se restaura el registro de estado SR con el almacenado en la pila
10. Se restaura el contador de programa PC con el almacenado en la pila (que apunta a la siguiente instrucción a ejecutar), continuando la
ejecución del código

PC 0xC070 0xFFFE 0xC000

0xC01E MOV.B @R4+,R7 SP 0x03FC 0xFFFC 0xFFFF Vectores


0xC020 ADD.W #0x10,R7 SR 0x010E 0xFFFA 0xC06A Interupción
0xC024 XOR.W #0xA5,R7 …
TA1CCTL0 ... 0

0xC06A CLR.W R4 CCIFG

0xC06C CLR.W R7 RTI


0xC06E RETI
0x03FE 0xC042
PC …
SP 0x03FC 0xC020
Pila
0x03FA 0x010E

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.109


5. Interrupciones – 5.4. Esquema completo

1. Finaliza la ejecución de la instrucción actual si la CPU se encuentra activa, o se activa la CPU si se encuentra en bajo consumo
2. El contador de programa PC (que apunta a la siguiente instrucción a ejecutar) se almacena en la pila
3. El registro de estado SR se almacena en la pila
4. Si existen múltiples interrupciones pendientes se escoge la de mayor prioridad
5. Si la interrupción tiene una única fuente se inicializa a ‘0’ el flag de interrupción asociado a la misma, y si tiene múltiples fuentes no se
modifica ninguno de los flags de interrupción asociados a las mismas
6. Se inicializa a ‘0’ el registro de estado SR, activando la CPU si estaba en bajo consumo y deshabilitando las interrupciones enmascarables
7. El contenido del vector de interrupción asociado a la misma se carga en el contador de programa PC, comenzando la ejecución de la RTI
8. Finaliza la ejecución de la RTI
9. Se restaura el registro de estado SR con el almacenado en la pila
10. Se restaura el contador de programa PC con el almacenado en la pila (que apunta a la siguiente instrucción a ejecutar), continuando la
ejecución del código

PC 0xC020 0xFFFE 0xC000

0xC01E MOV.B @R4+,R7 SP 0x03FE 0xFFFC 0xFFFF Vectores


PC 0xC020 ADD.W #0x10,R7 SR 0x010E 0xFFFA 0xC06A Interupción
0xC024 XOR.W #0xA5,R7 …
TA1CCTL0 ... 0

0xC06A CLR.W R4 CCIFG

0xC06C CLR.W R7 RTI


0xC06E RETI
SP 0x03FE 0xC042
… 0x03FC 0xC020
Pila
0x03FA 0x010E

Microcontroladores - Grado en Ingeniería de Sistemas de Telecomunicación - Curso 2019/2020 - [T8v1] T8.110

También podría gustarte