Necesita ayuda para entender el mapa de memoria PIC

9

Algunos antecedentes. Uso MPLABx con un PicKit2 para programar diferentes tipos de imágenes. Por el momento es el 16F887. Trato de seguir la cadena de herramientas Hi-Tech PICC Lite, pero cada vez estoy más descontento con la forma en que se ensamblan algunas cosas. Las operaciones que deberían ser relativamente rápidas (considerando el ciclo de instrucción de 500 ns a 8Mhz) están demorando hasta 20us para completar. Así que empecé a insertar mi propio código ASM para lidiar con él.

Sin embargo, tengo dificultades para entender el mapa de memoria proporcionado en la hoja de datos en la página 20.

La memoria del programa comienza a las 0005h. Sin embargo, la página 23 muestra las direcciones de archivo de los registros de propósito especial, como el puerto A, por ejemplo. La dirección del puerto A se muestra como "05h".

Estoy confundido sobre cómo diferenciar entre una ubicación de memoria 0005h y el registro de propósito especial ubicado en 05h. ¿Cómo puedo hacer referencia a los registros de propósito especial?

He realizado una programación de ensamblador bastante extensa para chips HC11 más antiguos, pero esta es mi primera incursión en la codificación asm PIC. Cualquier ayuda aquí sería apreciada.

    
pregunta Michael

2 respuestas

8

El PIC utiliza lo que se llama "Arquitectura de Harvard", lo que significa que tiene espacios de direcciones separados para instrucciones y datos.

Si una dirección se refiere a un registro o una instrucción depende del contexto en el que se usa.

Los diagramas en la sección 2.1 "Organización de la memoria del programa" se refieren a la memoria del programa o al espacio de direcciones de instrucciones. Los diagramas en la sección 2.2 "Organización de la memoria de datos" son sobre registros y registros de funciones especiales, o espacio de direcciones de la memoria de datos.

    
respondido por el Dave Tweed
3

Lo que dijo Dave, pero también quiero señalar que la memoria del programa comienza en 0, no en 5. Al reiniciar, el procesador establece el PC en 0 y comienza a ejecutarse. En una interrupción, el procesador provoca efectivamente una llamada a la ubicación 4 y desactiva el bit de habilitación de interrupción global. La ubicación de la memoria del programa 5 no es especial, aparte de esta será la segunda instrucción de la rutina de interrupción si tiene una rutina de interrupción.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas