Está en la página 1de 30

Ing. Viviana Parraga MSc.

2019A

CAPÍTULO 1

INTRODUCCIÓN A LOS
MICROCONTROLADORES
ING.VIVIANA PÁRRAGA MSC.

VIVIANA.PARRAGAV@EPN.EDU.EC
SEMESTRE: 2019A
Ing. Viviana Parraga MSc. 2019A

CONTENIDO

Memoria de programa.

Distribución de la memoria de datos.

Direccionamiento de la memoria de datos

Registros SFR

Registro Status
Ing. Viviana Parraga MSc. 2019A

MEMORIA DEL PIC16F870

• Distribución de la memoria
• Dispone de 3 partes de memoria:
• Memoria programa (Flash): 2Kx14 palabras
• Memoria de Datos (RAM): 128 x 8 bytes
• Memoria de Datos (EEPROM): 64 x 8 bytes
• La memoria de programa y la memoria de datos tienen buses
independientes.
• La memoria de datos RAM tiene una estructura basada en 4
bancos de 128 bytes cada uno, seleccionables con los bits RP1
(STATUS<6>) y RP0 (STATUS<5>) del Registro STATUS.
Ing. Viviana Parraga MSc. 2019A

MEMORIA DEL PIC16F870


Ing. Viviana Parraga MSc. 2019A

MEMORIA DE PROGRAMA (FLASH)

El PIC 16F870 tiene un contador de programa (PC) de 13 bits capaz de


direccionar un espacio de memoria de programa de 8Kx14 palabras.
REGISTRO PC

12 11 10 9 8 7 6 5 4 3 2 1 0 213 = 8192 instrucciones

El espacio de la memoria de programa se divide en 4 páginas de 2K palabras.


Instrucción 0
2K – 2048 instrucciones
12 11 10 9 8 7 6 5 4 3 2 1 0

MEMORIA DEL
PROGRAMA 2K – 2048 instrucciones
4 páginas
8K
Palabras: 14 bits 2K – 2048 instrucciones
Instrucción 8191
2K – 2048 instrucciones
12 11 10 9 8 7 6 5 4 3 2 1 0

31
Ing. Viviana Parraga MSc. 2019A

MEMORIA DE PROGRAMA (FLASH)

El ancho del bus del programa de memoria es 14 bits. Por lo tanto, todas las instrucciones
son una sola palabra, así un dispositivo con una memoria de programa 8K x 14 dispone de
espacio para 8K instrucciones. Por lo que es mas fácil para determinar si un dispositivo
tiene suficiente memoria de programa para una aplicación deseada.
1 palabra = 14 bits

12 11 10 9 8 7 6 5 4 3 2 1 0
Instrucción 0 8K = 8 * 1024 palabras
Instrucción 1 8K = 8192 palabras
Instrucción 2

Instrucción 8190

Instrucción 8191

32
Ing. Viviana Parraga MSc. 2019A

MEMORIA DE
PROGRAMA (FLASH)

Mapa de 4
Memoria de 5
Programa
2047
2048

4095
4096

6143
6144

8191
33
Ing. Viviana Parraga MSc. 2019A

MEMORIA DE PROGRAMA

Contador de Programa (PC)


• Registro de 13 bits.
• Actúa como puntero de la siguiente instrucción a ser ejecutada
• La memoria de programa se divide en páginas de 2K palabras.
• Cuando las Instrucciones son secuenciales, el PC pasa de una página a otra
sin necesidad de realizar la instrucción de salto.
• Las instrucciones de salto y llamado a Subprogramas permiten cargar solo
11 bits en el PC ( 211 =2K).
• Para Saltos y Llamadas entre páginas los 2 bits más altos del PC deben
llenarse. Esto se realiza escribiendo en el registro PCLATH (registro de
memoria de datos).
Ing. Viviana Parraga MSc. 2019A

MEMORIA DE PROGRAMA

PC y PCLATH
• El PC se divide en dos registros: PCH (parte alta) no
accesible pero indirectamente se puede escribir a
través del registro PCLATH y PCL (parte baja) y es
un registro de la memoria de Datos.

• El PCLATH es un registro que complementa al PCL y


puede aportar 5 o 2 bits al mismo para que opere.

• Saltos o llamados a Subprogramas cargan en el PC 11


bits y PCLATH aportará con los bits que le falten
para llegar a los 13 bits.
Ing. Viviana Parraga MSc. 2019A

MEMORIA DE PROGRAMA

VECTOR DE RESET
• El vector de RESET está siempre en la posición 0000h de la
memoria de programa.
• Cualquier reset (interno o externo) provocará que el PC
pase a tener el valor 0000h y que por tanto el
microcontrolador pase a ejecutar la instrucción situada en
dicha posición.
• El RESET también limpia el contenido del registro PCLATH.
Ing. Viviana Parraga MSc. 2019A

MEMORIA DE PROGRAMA

VECTOR DE INTERRUPCION
• El vector INTERRUPCION está siempre en la posición 0004h de la memoria de
programa.
• Cualquier interrupción en un microcontrolador hará que su PC pase a tener el
valor 0004h y que por tanto el microcontrolador pase 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 con cuidado de lo que se tiene cargado en el PCLATH
Ing. Viviana Parraga MSc. 2019A

MEMORIA DE PROGRAMA

STACK (PILA DEL PC )


• Almacena las direcciones del PC 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.
• El PIC16F870 tiene una pila de 8 niveles de 13 bits, por tanto,
permite almacenar como máximo 8 saltos a subrutinas
(CALLs) o ejecuciones de rutinas de interrupción.
• La memoria para la pila (stack) no forma parte de la memoria
de programa ni de la memoria de datos que tiene el
microcontrolador.
• La pila (stack) es gestionada por el hardware.
Ing. Viviana Parraga MSc. 2019A

MEMORIA DE DATOS

• Esta memoria almacena los datos que se manejan en un programa.


Estos datos varían continuamente, por lo que esta memoria debe ser
de lectura y escritura.
• Se utiliza memoria denominada RAM que es de tipo volátil, con lo cual
los datos se borran en caso de que desaparezca la alimentación, aunque
algunos micros llevan memoria EEPROM para evitar la pérdida de los
datos en caso de corte en el suministro de corriente.
• Los tamaños son mucho más reducidos que la memoria de programa;
por ejemplo el PIC16F870 dispone de 128 bytes de datos SRAM y 64
bytes de EEPROM.

39
Ing. Viviana Parraga MSc. 2019A

MEMORIA DE DATOS

• La memoria de datos está distribuida en 4 posibles bancos de 128 bytes


cada uno. Por tanto, la máxima cantidad de memoria disponible en los
PIC16XXXX es de 512 bytes. Sin embargo, no están disponibles todas las
posiciones de memoria en todos los bancos. Por ejemplo, un PIC16F870
solo tiene disponibles 128 posiciones de memoria de datos.

La memoria de datos se organiza en bancos de


128 bytes, sólo se pueden incluir 7 bits en la
codificación. 𝟐𝟕 =128 bytes y cuenta con 2 bits
de Direccionamiento

• A cada dirección de memoria se le denomina Registro


Ing. Viviana Parraga MSc. 2019A

MEMORIA DE DATOS

1 REGISTRO= 8 bits

9 8 6 4 3 2 1 0
Registro 0
Registro 1
Registro 2

Registro 126
Registro 127
1 banco
41
Ing. Viviana Parraga MSc. 2019A

MEMORIA DE DATOS

• Se distinguen dos tipos de registro:


 Registros de funciones especiales SFR. Son los primeros registros (posiciones más bajas de cada
banco). Cada uno de ellos cumple un propósito especial en el control del PIC.
 Registros de propósito general GPR. Se pueden usar para guardar datos temporales y bloques de
operaciones. El PIC16F870 dispone de 128 GPR.

• Cuenta con cuatro bancos de memoria: Bancos 0, 1, 2 y 3.


 Los SFR aparecen de la dirección 00h a 1Fh del Banco 0, de 80h a 9Fh del Banco 1, de 100h a 10Fh en el
Banco 2 y de 180h a 18Fh del Banco 3.
 Algunos de los registros se encuentran replicados en dos o más bancos, lo que permite tener mayor
accesibilidad a los registros más utilizados y así reducir código de programa.
 Los GPR ocupan 128 posiciones de memoria. A los cuales se puede acceder, mediante un
direccionamiento Directo o Indirecto.
Ing. Viviana Parraga MSc. 2019A

MEMORIA DE DATOS

 Algunas posiciones de los Bancos 1 a 3 se mapean sobre el Banco 0 y 1, es decir cuando se apunta a uno de los
registros generales mapeados de los bancos 1 a 3 se accede al mismo del banco 0 o 1 correspondiente .

 Existen zonas de memoria no empleadas que devuelven ‘0’ en caso de lectura


Ing. Viviana Parraga MSc. 2019A SFR

Mapa de
Memoria de
Datos

GPR
Ing. Viviana Parraga MSc. 2019A

DIRECCIONAMIENTO DE LA MEMORIA DE DATOS

 Existen 2 modos de
direccionamiento para acceder a
cualquiera de las posiciones de la
memoria de datos:
*Direccionamiento directo
Direccionamiento
* Direccionamiento indirecto se necesitan 9 bits

Dir. Directo: 7 bits de la


instrucción y los otros 2
del Registro Status (RP1 Dir. Indirecto: 8 bits del Registro
y RP0) FSR y el otro bit es del Registro
Status (IRP) 45
Ing. Viviana Parraga MSc. 2019A

DIRECCIONAMIENTO DE LA MEMORIA DE DATOS

 Direccionamiento directo: La posición de memoria con la que se trabaja


viene definida en el código de la instrucción del programa y por los Register
Pointer RP1 y RP0.

 Direccionamiento indirecto: La posición de memoria con la que se trabaja


viene definida por el contenido del File Select Register FSR y por el Indirect
Register Pointer IRP.

 El FSR (Posición 04h, 84h, 104h ó 184h) actúa como puntero de la posición
de memoria con la que se pretende operar.

46
Ing. Viviana Parraga MSc. 2019A

DIRECCIONAMIENTO DIRECTO

 Se Lee el Registro contenido en el


código de la instrucción.
 Para la selección del banco activo
se usan los bits RP1 (Bit 6 de
Registro Status) y RP0 (Bit 5 de
Registro Status)

47
Ing. Viviana Parraga MSc. 2019A

DIRECCIONAMIENTO INDIRECTO
 El direccionamiento indirecto se usa cuando la dirección de la memoria de datos de la instrucción no es fija.

 En el Registro FSR (8 bits) se carga la dirección de la


posición a la que deseamos apuntar
 La instrucción se ejecuta sobre el registro FSR
complementado con el IRP (Bit 7 del Registro de
Status)

 El direccionamiento indirecto resulta útil para el manejo de tablas de datos en la memoria de datos.

48
Ing. Viviana Parraga MSc. 2019A

REGISTROS SFR

• Los Registros de Funciones Especiales (SFR) son registros usados


por el microcontrolador y los periféricos para controlar el
funcionamiento deseado del dispositivo.
• Los Registros de Funciones Especiales se clasifican en dos grupos
 Orientadas al Núcleo o CPU
 Orientadas a los Periféricos

• A continuación se detalla la Lista de SFR que posee el


microcontrolador PIC16F870
Ing. Viviana Parraga MSc. 2019A
Ing. Viviana Parraga MSc. 2019A
Ing. Viviana Parraga MSc. 2019A
Ing. Viviana Parraga MSc. 2019A

REGISTRO: STATUS

• El registro Status es el más usado de la memoria de


Datos.
• Ocupa la dirección 03h en los bancos 0, 1, 2, 3 de la
memoria de datos RAM.
• Sus bits tienen tres funciones distintas:
 Avisar el estado de la ALU (C, DC, Z)
 Indicar el estado de reset (TO, PD)
 Seleccionar el banco de memoria
Ing. Viviana Parraga MSc. 2019A

REGISTRO: STATUS

STATUS

• C: Acarreo. Se pone en 1 si hay carry en el octavo bit de una


operación realizada en la ALU
• DC: Acarreo. Se pone en 1 si hay carry en el cuarto bit de una
operación realizada en la ALU
• Z: Cero. Se pone en 1 si el resultado de una operación
anterior es cero
• PD: (Power down). Se pone automáticamente en 1L al conectar
el PIC a la alimentación, se pone en 0L al usar instrucción
SLEEP
Ing. Viviana Parraga MSc. 2019A

REGISTRO: STATUS

STATUS

• TO: (Time out). Está en 1L al conectar el PIC a la alimentación, y se


pone en 0L cuando el Watchdog se desborda.
• RP1 y RP0: Se usan para seleccionar el banco de memoria de datos.

• IRP: Selecciona el banco de direccionamiento indirecto.


Ing. Viviana Parraga MSc. 2019A

DEBER 2 (02/05/2019)

• Descargar el datasheet del PIC16F870


• Subrayar toda la información revisada en clases
• Sacar todas las siglas y colocar el significado.
• Escanear el deber desarrollado y subir al aula virtual.
• Llevar las hojas subrayadas a la siguiente clase.
• Realizar un documento a modo de resumen del primer
registro revisado (registro STATUS).

También podría gustarte