REVISANDO EL MAPA DE MEMORIA DE PROGRAMA Y LA PILA (STACK) DE LOS uC
P16F87X
DE LA OBSERVACION DE LAS FIGURAS (2-1, 2-5 DE LA HOJA DE DATOS MOSTRADAS AL FINAL
DE ESTE DOCUMENTO Y DEL EJEMPLO 2-1) DEBEN OBTENER MUCHOS DATOS Y COMPLETAR LOS SIGUIENTES LITERALES:
1. LA MEMORIA DE PROGRAMA HA SIDO SEGMENTADA POR EL FABRICANTE EN
BLOQUES LAMADOS: Pginas 2. CADA UNO DE ESTOS BLOQUES TIENE UNA LOGITUD DE: 2k bits. 3. CADA BLOQUE TIENE UN RANGO DE DIRECCIONES QUE INICIA EN: 0x0 Y FINALIZA EN: 0X7FFF 4. ESTOS RANGOS DE DIRECCIONES SON VALORES RELATIVOS (INCOMPLETOS) LOS CUALES QUEDAN CALIFICADOS (O COMPLETOS) AL AGREGAR LOS DOS BITS MAS SIGNIFICATIVOS CONTENIDOS EN EL REGISTRO: PCLATH CUANDO SE EJECUTA UNA DE LAS INTRUCCIONES GOTO/CALL. 5. CADA VES QUE EL REGISTRO PCL ES UTILIZADO COMO DESTINO LOS 5 BITS MAS SIGNIFICATIVOS DE PC SON TOMADOS DESDE LOS 5 BITS MENOS SIGNIFICATIVOS DEL REGISTRO: PCLATH. 6. PORQUE RAZON A LA POSICION 0X0H DE LA MEMORIA DE PROGRAMA SE LE LLAMA VECTOR DE RESET: Porque es a partir de esta posicin en donde se empieza a ejecutar el programa, ya sea cuando energizamos el PIC o por un reset causado por el WDT 7. PORQUE RAZON A LA POSICION 0X04H DE LA MEMORIA DE PROGRAMA SE LE LLAMA VECTOR DE INTERRUPCION: Porque la direccin 0x04 es la que utilizamos para atender una rutina de interrupcin. 8. CADA VES QUE SE EJECUTAN LAS INSTRUCCIONES: RETFIE, RETLW, CALL, RETURN EL VALOR ACTUAL DEL REGISTRO PC ES GUARDADO EN: STACK 9. CUANTOS NIVELES FISICOS DE ANIDAMIENTO TIENEN EL STACK DE LOS MICROCONTROLADORES 16F87X: 8 niveles 10. CON SUS PROPIAS PALABRAS EXPLIQUE EL FUNCIONAMIENTO DEL SEGMENTO DE CODIGO MOSTRADO EN LA FIG. 2-1. El programa comienza en la posicin de memoria 0x500, luego colocamos un cero en el bit 4 y un uno el bit 3 del registro PCLATH , con eso seleccionamos la pagina 01. Lugo desde la pagina 0 hacemos un llamado a la subrutina SUB1_P1 que se encuentra en la pagina 1 (0x800-0xFFF) luego retorna a la pagina cero.