Algunos antecedentes. Uso MPLABx con un PicKit2 para programar diferentes tipos de fotos. Por el momento es el 16F887. Intento apegarme a la cadena de herramientas Hi-Tech PICC Lite, pero estoy cada vez 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 tardando hasta 20us en completarse. Así que comencé a insertar mi propio código ASM para tratarlo.
Sin embargo, tengo dificultades para comprender 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 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 a las 05h. ¿Cómo hago 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 aventura en la codificación PIC asm. Cualquier ayuda aquí sería apreciada.
Lo que dijo Dave, pero también quiero señalar que la memoria del programa comienza en 0, no en 5. En un reinicio, el procesador establece la PC en 0 y comienza a funcionar. En una interrupción, el procesador provoca efectivamente una llamada a la ubicación 4 y apaga el bit de habilitación de interrupción global. La ubicación 5 de la memoria del programa no es especial, de lo contrario, esta será la segunda instrucción de la rutina de interrupción si tiene una rutina de interrupción.
fuente