Tema 4 LA MEMORIA DE PROGRAMAS Introducción (1) Como es habitual en todos los µprocesadores y µcontroladores el programa que se ejecutará, se encuentra grabado en una memoria no volátil, estando este programa formado por diferentes instrucciones del repertorio del micro. A diferencia de otros microcontroladores en los cuales una instrucción se puede componer de varios códigos de operación, y ser diferentes en tamaño, en los PIC las instrucciones solo poseen un único código de operación (CO), siendo el ancho de las mismas único. El orden en que se ejecutan las instrucciones es secuencial comenzando desde la dirección mas baja. DPE DESARROLLO DE PROYECTOS 2 Introducción (2) ¾ El formato de las instrucciones del PIC 16f84 es el mostrado en la figura de la izquierda. ¾ Como se puede comprobar independientemente del tipo de instrucción todas tienen un tamaño de 14 bits. ¾ Todas las instrucciones solo poseen un C.O (opcode). DPE DESARROLLO DE PROYECTOS 3 Introducción (3) De lo expuesto anteriormente se deduce que la memoria en el PIC 16f84 tiene una anchura de 14 bits. En este dispositivo, la memoria de programa implementada es de 1Kx14bits. Siendo 0000h la primera dirección y 03FFh la última dirección disponible. • El elemento que almacena la dirección de la próxima instrucción a ejecutar es el CONTADOR DE PROGRAMAS • Todos los microcontroladores PIC de la gama media poseen un contador de programas de 13 bits, pudiendo direccionar 4 páginas de 2Kx14 bits cada una. Ya que el 16F84 solo posee 1Kx14 bits, los 3 bits de mayor peso del PC no se tienen en cuenta, por lo cual a todos los efectos las direcciones 0000h, 0400h, 0800h, 0C00h, 1000h, 1400h, 1800h, 1C00h son la misma. El contador de Programas (1) El contador de programas se forma por la unión de 2 registros de 8 bits cada uno llamados PCH y PCL. Ambos registros están implementados en la memoria RAM del microcontrolador PCL se encuentra en la dirección 02h y duplicado en la 82h. Los cinco bits de mayor peso del PC se corresponden con los 5 bits de menor peso del PCLATCH, implementado en la dirección 0Ah de RAM y duplicado en la dirección 8AH. DPE DESARROLLO DE PROYECTOS 5 El contador de Programas (2) ¾ En las instrucciones de ruptura de secuencia GOTO y CALL, los 11 bits de menor peso corresponden al código de operación, mientras que los 2 bits de mayor peso, los suministran respectivamente los bits 4 y 3 del PCLATCH, que están direccionando una de las 4 posibles páginas de la memoria de programas. ¾ Un RESET del microcontrolador hace que el valer 0000h, y será la instrucción que haya primera que se ejecute. DPE DESARROLLO DE PROYECTOS 6 valor del PC pase a en esta dirección la La Memoria de Programas (1) MEMORIA DISPONIBLE Como se puede apreciar la memoria del PIC 16f84 comienza en la dirección 0000h y hasta la 1FFFh. EL VECTOR DE RESET La primera instrucción que se ejecuta tras un reset es la que ocupa la dirección 0h. Ya que como habíamos indicado anteriormente tras el reset el PC queda a 0000h. DPE DESARROLLO DE PROYECTOS 7 La Memoria de Programas (2) VECTORES DE INTERRUPCIÓN Un detalle importante de la memoria de programas, es que tiene reservada la dirección 04h para el vector de interrupciones. Este vector es único, y sirve para atender a todas la interrupciones. Debido a esto, en la dirección 0h deberemos incluir una instrucción de salto hasta la dirección 05h, que es donde deberá comenzar el programa de usuario. DPE DESARROLLO DE PROYECTOS 8 La Memoria de Programas (3) PALABRAS DE IDENTIFICACIÓN Los pic de la gama media disponen de 4 posiciones de memoria situadas en las posiciones 2000h a 2003h, reservadas para las palabras de identificación ID. Estas palabras se graban durante el proceso de grabación, empleándose sólo los 4 bits de menor peso, y se utilizan para indicar el código del dispositivo, el número de serie, la versión del programa etc DPE DESARROLLO DE PROYECTOS 9 La Memoria de Programas (4) PALABRA DE CONFIGURACIÓN Los PIC de la gama media tienen una posición de memoria de programa reservada ( 2007h), dicha posición se escribirá durante el proceso de grabación. La información está contenida tal y como muestra la figura. DPE DESARROLLO DE PROYECTOS 10 La Memoria de Programas (5) LA PALABRA DE CONFIGURACIÓN Bits 13:4 CP Protección de Código 1= Protección desactivada 0= Protección activada, cuando este bit está activado, el microcontrolador no puede ser leido ni sobrescrito, cualquier intento de cambio de este bit provoca que se borre la memoria de programa. Bit 3 PWRTE, Activación del temporizador “Power Up” 1= desactivado 0= activado. DPE DESARROLLO DE PROYECTOS 11 La Memoria de Programas (6) LA PALABRA DE CONFIGURACIÓN Bits 2 WDTE Habilitación del Watchdog 1= Perro guardián activado 0= Perro guardián desactivado Bits 1 y 0 FOSC1 Y FOSC0 BITS DE SELECCIÓN DE OSCILADOR 11 Oscilador RC 10 Oscilador HS (8MHz-20MHz) 01 Oscilador XT (100KHz – 4MHz) 00 Oscilador LP (bajo consumo 32Hz-200Hz) DPE DESARROLLO DE PROYECTOS 12