Está en la página 1de 32

UNIVERSIDAD CATÓLICA DE SANTA MARÍA

ESCUELA PROFESIONAL DE INGENIERÍA MECÁNICA,


MECÁNICAELÉCTRICA Y MECATRÓNICA

MICROCONTROLADORES Y MICROPROCESADORES
Ing. Sergio Mestas Ramos
Organización de la Memoria
 Qué son?

 Cómo se clasifican?

 Que características tienen y que labores realizan?

 Que contienen?
3

ORGANIZACIÓN DE LA MEMORIA

Al interior de un microcontrolador se pueden distinguir tres bloques de memoria.


 Memoria de Programa
Contiene el programa (conjunto de instrucciones) que controlan al microprocesador.
No volátil.
Memoria Flash. (PIC 16F877 es de 8Kx14, ATMEGA328P )
 Memoria de Datos.
∙ Memoria RAM.
∙ Guarda las variables y datos
∙ Son registros de 8 bits . (PIC 16F877 es de 368Kx8, ATMEGA328P )
∙ Es volátil
∙ Memoria EEPROM
∙ Garantiza que algunos datos estén siempre disponibles
∙ No volátil . (PIC 16F877 es de 256x8, ATMEGA328P )
∙ Gestión distinta a la RAM
4

ORGANIZACIÓN DE LA MEMORIA
5

MEMORIA DE PROGRAMA

 Su contenido se graba previamente mediante un equipo


físico denominado programador o grabador.
 Almacena todas las instrucciones del programa en
ejecución,
 El PIC16F877 tiene una memoria de programa no volátil
denominada ROM Flash que admite unas 1000
grabaciones.
 La memoria de programa está organizada en palabras de
14 bits cada una.
 Todas las instrucciones ocupan una posición de
memoria de programa.
 A la posición 0 se accederá tras un RESET.
 A la posición 4 tras una interrupción cualquiera
6

CONTADOR DE PROGRAMA

 La memoria de programa es accedida mediante el Contador


de Programa (Program Counter PC).
 Es un registro de 13 bits y actúa como puntero de la
instrucción a ejecutarse en el siguiente ciclo de instrucción.
 El PC puede direccionar 8K posiciones de memoria.
 Cada instrucción a ejecutarse es de 14 bits.
 Cada una de esas 8K posiciones corresponde a una
instrucción y por tanto, el PC es capaz de direccionar 8K
instrucciones.
 La parte baja del PC está accesible en el registro PCL que es
R/W
 La parte alta del PC se denomina PCH y no es un registro
accesible.
 Siempre que queramos modificar PCH lo tendremos que
hacer a través del registro PCLATH
7

Arquitectura de la memoria de programa y el stack

 Los 8K de memoria de programa disponible están


divididos en 4 paginas de 2K (accesibles con 11
bits)
 Si se están ejecutando instrucciones secuenciales,
el contador de programa pasará de una página a
otra sin necesidad de intervención por parte del
usuario o programador
 Pero para saltar entre páginas de la memoria de
programa deben modificarse los bits altos del PC.
Esto se realiza escribiendo en el registro PCLATH
(es un registro de situado en la memoria de datos)
8

Arquitectura de la memoria de programa y el stack (II)

En algunos dispositivos solo una


parte del mapa de memoria total
posible está implementado

Los dispositivos con solo 2K de


memoria de programa no necesitan
paginado

PIC16F876/877 PIC16F873/874
9

Modificación del contador de programa

Caso 1: cuando una instrucción utiliza PCL como destino


El resultado es un dato de 8 bits, luego la parte alta del PC se toma de PCLATH

Caso 2: ejecución de la instrucción GOTO


Los 11 bits más bajos los aporta el código de operación: posibilidad de moverse en la página de 2K
Para “ir” a otra página hay que cargar previamente el contenido de PCLATH: OJO EN EL MANEJO DE TABLAS
0

Modificación del contador de programa (II)

Caso 3: ejecución de la instrucción CALL


Los 11 bits más bajos los aporta el código de operación: posibilidad de moverse en la página de 2K
Si el subprograma está en otra página hay que cargar previamente el contenido de PCLATH

Caso 4: retorno de un subprograma


El PC está guardado en la pila (13 bits), luego no hay problemas con los cambios de página
1

PILA (STACK)

La pila permite almacenar las direcciones (PCs) a donde debe retornar el programa cuando se finaliza una llamada a una subrutina o
cuando se finaliza la ejecución de una rutina de interrupción.

Los microcontroladores de la familia PIC16 tienen una pila de 8 niveles x 13 bits, que por tanto permite concatenar como máximo 8 saltos
a subrutinas (CALLs) o ejecuciones de rutinas de interrupción (salto a 0004h).

El espacio de memoria para la pila no forma parte de la memoria de programa ni de la memoria de datos que tiene el microcontrolador. Es
un espacio de memoria totalmente independiente. El puntero de pila se puede leer ni escribir

Ningún bit de estado indica el desbordamiento de la pila

No hay instrucciones de PUSH y POP para guardar o recuperar


datos de la pila
2

Vector de RESET

El vector de RESET está siempre en la posición 0000h de la memoria de programa.

Cualquier reset (interno o externo) hará que el contador de programa pase a tener el valor 0000h y
por tanto el microcontrolador pasa a ejecutar la instrucción situada en dicha posición.

El RESET también limpia el contenido del registro PCLATH.


3

Vector de interrupción

 El vector de INTERRUPCION está siempre en la posición 0004h de la memoria de programa

 Cualquier interrupción hará que el contador de programa pase a tener el valor 0004h y por tanto el
microcontrolador pasa a ejecutar la instrucción situada en dicha posición

 El salto a la rutina de interrupción no modifica el contenido del PCLATH, por lo que cualquier
modificación que se realice del PC en la rutina de interrupción debe realizarse teniendo esto en
cuenta
4

MEMORIA DE DATOS

La memoria de datos está distribuida en 4 posibles bancos de 128 bytes cada uno, aunque no todas
las posiciones están disponibles

A cada posición de memoria se le denomina registro

Los registros se dividen en:


Registros de propósito general (General Purpose Registers, GPR)
Registros de funciones especiales (Special Function Registers, SFR), asociados a la CPU del micro
o a algún módulo periférico (puertos, temporizadores, etc.)
Mapa de la memoria de datos del
PIC16F877/876

15
Mapa de la memoria de datos del
PIC16F874/873

16
7

Direccionamiento de la memoria de datos

Para acceder a una posición de la memoria de datos, se utilizarán 9 líneas de dirección (7 para direccionar los 128 bytes y 2 más para
seleccionar el banco)

Existen 2 modos de direccionamiento para acceder a cualquiera de las posiciones de la memoria de datos:
Direccionamiento directo
Direccionamiento indirecto

Direccionamiento directo: La posición de memoria con la que se trabaja viene directamente definida en el código de la instrucción

Direccionamiento indirecto: La posición de memoria con la que se trabaja viene definida por el contenido de el registro FSR (File
Select Register) (Posición 04h, 84h, 104h ó 184h).

El direccionamiento indirecto se consigue utilizando como operador el registro INDF. Este registro no existe físicamente, sino que
direcciona al registro apuntado por FSR. Si leemos directamente el contenido de INDF (FSR=0), se lee 00h; escribir indirectamente en
INDF es equivalente a un código NOP
Direccionamiento de la memoria de datos (II)

 Tanto para el direccionamiento directo como el indirecto la dirección completa (9 bits) no se puede
obtener del código de la operación (7 bits) o del registro FSR (8 bits).
 Para direccionamiento directo, la dirección se obtiene completando la dirección incluida en el
código de la instrucción con los bits RP1:RP0 del registro STATUS
 Para direccionamiento indirecto, la dirección se obtiene completando el contenido del registro FSR
con el bit IRP del registro STATUS
Registros de Función Especiales
 Qué son?

 Que hacen?

 Que necesitan para funcionar?


Resumen de los registros de función especial Banco 0
Resumen de los registros de función especial - Banco 1
Resumen de los registros de función especial - Bancos 2 y 3
REGISTRO STATUS

 Contiene información del estado de


la ALU, del RESET y los bits de
selección de banco de memoria de
datos.

 Aunque puede ser destino de


cualquier instrucción, los bits Z, C,
BC, TO y PD no se pueden escribir
REGISTRO OPTION_REG

 Contiene bits de control del TMR0 y


del WDT, la interrupción externa INT
y del pull-up del puerto B
REGISTRO INTCON

 Contiene bits de enable y flag para el


desbordamiento del TMR0, del cambio de
puerto RB y de las interrupciones externas
por el pin RB0/INT
REGISTRO PIE1

 Contiene los bits de enable individuales


de las interrupciones de los periféricos
REGISTRO PIR1

 Contiene los bits de flag individuales de las


interrupciones de los periféricos
REGISTRO PIE2

 Contiene los bits de enable individuales de la


interrupción del módulo CCP2, de colisión del
bus SSP y de la interrupción de escritura en la
EEPROM
REGISTRO PIR2

 Contiene los bits de flag individuales de la interrupción del módulo CCP2, de colisión del bus SSP y
de la interrupción de escritura en la EEPROM
REGISTRO PCON

 Contiene los bit de flag que permiten


distinguir entre POR, BOR WDTR y
un MCLR externo
IMPORTANTE
 Memoria de programa.

 Registros

 Funcionamiento

 Memoria de datos.

 Registros

 Funcionamiento

31
PREGUNTAS

Blow your audience


away with attractive
visuals

32

También podría gustarte