Вы находитесь на странице: 1из 28

UNIVERSIDAD CATLICA DE SANTA MARA PROGRAMA PROFESIONAL DE INGENIERA MECNICA, MECNICA-ELCTRICA Y MECATRNICA

MICROCONTROLADORES
ORGANIZACION DE LA MEMORIA

Contador de programa
La memoria de programa est basada en un registro de 13 bits que acta como puntero de la instruccin que se debe ejecutar en el siguiente ciclo de instruccin Este registro de 13 bits se denomina Contador de Programa (Program Counter) y su acrnimo es PC Con este contador de programa de 13 bits se pueden direccionar 8K posiciones de memoria. Debido a que la codificacin de las instrucciones son de 14 bits y para aprovechar las ventajas de la arquitectura Harvard, cada una de esas 8K posiciones corresponde a una instruccin y por tanto, el contador de programa es capaz de direccionar 8K x 14 posiciones 8Kinstrucciones. La parte baja del PC est accesible en el registro PCL. Este registro se puede leer y escribir La parte alta del PC se denomina PCH y no es un registro accesible. Siempre que queramos modificar PCH lo tendremos que hacer a travs del registro PCLATH
2

Arquitectura de la memoria de programa y el stack


Los 8K de memoria de programa disponible estn divididos en 4 paginas de 2K (accesibles con 11 bits) Si se estn ejecutando instrucciones secuenciales, el contador de programa pasar de una pgina a otra sin necesidad de intervencin por parte del usuario o programador Pero para saltar entre pginas 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)

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

Modificacin del contador de programa


Caso 1: cuando una instruccin utiliza PCL como destino El resultado es un dato de 8 bits, luego la parte alta del PC se toma de PCLATH

Caso 2: ejecucin de la instruccin GOTO Los 11 bits ms bajos los aporta el cdigo de operacin: posibilidad de moverse en la pgina de 2K Para ir a otra pgina hay que cargar previamente el contenido de PCLATH: OJO EN EL MANEJO DE TABLAS

Modificacin del contador de programa (II)


Caso 3: ejecucin de la instruccin CALL Los 11 bits ms bajos los aporta el cdigo de operacin: posibilidad de moverse en la pgina de 2K Si el subprograma est en otra pgina 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 pgina

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 ejecucin de una rutina de interrupcin. Los microcontroladores de la familia PIC16 tienen una pila de 8 niveles x 13 bits, que por tanto permite concatenar como mximo 8 saltos a subrutinas (CALLs) o ejecuciones de rutinas de interrupcin (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 Ningn bit de estado desbordamiento de la pila indica el

No hay instrucciones de PUSH y POP para guardar o recuperar datos de la pila

Vector de RESET
El vector de RESET est siempre en la posicin 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 instruccin situada en dicha posicin. El RESET tambin limpia el contenido del registro PCLATH.

Vector de interrupcin
El vector de INTERRUPCION est siempre en la posicin 0004h de la memoria de programa Cualquier interrupcin har que el contador de programa pase a tener el valor 0004h y por tanto el microcontrolador pasa a ejecutar la instruccin situada en dicha posicin El salto a la rutina de interrupcin no modifica el contenido del PCLATH, por lo que cualquier modificacin que se realice del PC en la rutina de interrupcin debe realizarse teniendo esto en cuenta

Informacin de calibracin
En algunos dispositivos, especialmente en aquellos que tienen la opcin de utilizar como oscilador la red RC interna, viene grabada en la memoria de programa una informacin de calibracin Esta informacin es programada por MICROCHIP cuando el dispositivo est en la fase final de test Dicha informacin de calibracin est programada habitualmente al final de la memoria de programa y est programada como una instruccin RETLW, donde el valor literal es la informacin de calibracin La utilizacin de este valor permite a la aplicacin mejores resultados

10

Memoria de datos

La memoria de datos est distribuida en 4 posibles bancos de 128 bytes cada uno, aunque no todas las posiciones estn disponibles A cada posicin de memoria se le denomina registro Los registros se dividen en: Registros de propsito general (General Purpose Registers, GPR) Registros de funciones especiales (Special Function Registers, SFR), asociados a la CPU del micro o a algn mdulo perifrico (puertos, temporizadores, etc.)

11

12

Mapa de la memoria de datos del PIC16F877/876

13

Mapa de la memoria de datos del PIC16F874/873

Direccionamiento de la memoria de datos


Para acceder a una posicin de la memoria de datos, se utilizarn 9 lneas de direccin (7 para direccionar los 128 bytes y 2 ms 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 posicin de memoria con la que se trabaja viene directamente definida en el cdigo de la instruccin Direccionamiento indirecto: La posicin de memoria con la que se trabaja viene definida por el contenido de el registro FSR (File Select Register) (Posicin 04h, 84h, 104h 184h). El direccionamiento indirecto se consigue utilizando como operador el registro INDF. Este registro no existe fsicamente, 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 cdigo NOP
14

Direccionamiento de la memoria de datos (II)


Tanto para el direccionamiento directo como el indirecto la direccin completa (9 bits) no se puede obtener del cdigo de la operacin (7 bits) o del registro FSR (8 bits). Para direccionamiento directo, la direccin se obtiene completando la direccin incluida en el cdigo de la instruccin con los bits RP1:RP0 del registro STATUS Para direccionamiento indirecto, la direccin se obtiene completando el contenido del registro FSR con el bit IRP del registro STATUS

15

UNIVERSIDAD CATLICA DE SANTA MARA PROGRAMA PROFESIONAL DE INGENIERA MECNICA, MECNICA-ELCTRICA Y MECATRNICA

MICROCONTROLADORES REGISTRO DE FUNCIONES ESPECIALES

17

Resumen de los registros de funcin especial Banco 0

18

Resumen de los registros de funcin especial Banco 1

19

Resumen de los registros de funcin especial Bancos 2 y 3

REGISTRO STATUS
Contiene informacin del estado de la ALU, del RESET y los bits de seleccin de banco de memoria de datos. Aunque puede ser destino de cualquier instruccin, los bits Z, C, BC, TO y PD no se pueden escribir

20

REGISTRO OPTION_REG
Contiene bits de control del TMR0 y del WDT, la interrupcin externa INT y del pullup del puerto B

21

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

22

REGISTRO PIE1
Contiene los bits de enable individuales de las interrupciones de los perifricos

23

REGISTRO PIR1
Contiene los bits de flag individuales de las interrupciones de los perifricos

24

REGISTRO PIE2
Contiene los bits de enable individuales de la interrupcin del mdulo CCP2, de colisin del bus SSP y de la interrupcin de escritura en la EEPROM

25

REGISTRO PIR2
Contiene los bits de flag individuales de la interrupcin del mdulo CCP2, de colisin del bus SSP y de la interrupcin de escritura en la EEPROM

26

REGISTRO PCON
Contiene los bit de flag que permiten distinguir entre POR, BOR WDTR y un MCLR externo

27

Gracias

Вам также может понравиться