Академический Документы
Профессиональный Документы
Культура Документы
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
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
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
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
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
13
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
15
UNIVERSIDAD CATLICA DE SANTA MARA PROGRAMA PROFESIONAL DE INGENIERA MECNICA, MECNICA-ELCTRICA Y MECATRNICA
17
18
19
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