Algum plano de fundo. Eu uso o MPLABx com um PicKit2 para programar diferentes tipos de fotos. No momento é o 16F887. Eu tento seguir a cadeia de ferramentas Hi-Tech PICC Lite, mas estou ficando cada vez mais insatisfeito com a forma como algumas coisas são montadas. Operações que devem ser relativamente rápidas (considerando o ciclo de instruções de 500ns a 8Mhz) estão demorando até 20us para serem concluídas. Então, comecei a inserir meu próprio código ASM para lidar com isso.
No entanto, estou tendo dificuldades para entender o mapa de memória fornecido na folha de dados na página 20.
A memória do programa começa às 0005h. No entanto, a página 23 mostra endereços de arquivos de registradores de fins especiais, como a Porta A, por exemplo. O endereço da porta A é mostrado como "05h".
Estou confuso sobre como diferenciar entre um local de memória 0005h e o registro de finalidade especial localizado às 05h. Como faço para referenciar os registros de finalidade especial?
Eu fiz uma programação de montadores bastante extensa para chips HC11 mais antigos, mas esta é minha primeira aventura na codificação ASM PIC. Qualquer ajuda aqui seria apreciada.
O que Dave disse, mas também quero salientar que a memória do programa começa em 0, não em 5. Em uma redefinição, o processador define o PC como 0 e começa a executar. Em uma interrupção, o processador efetivamente causa uma chamada para o local 4 e desativa o bit de ativação de interrupção global. O local da memória do programa 5 não é especial; caso contrário, será a segunda instrução da rotina de interrupção, se você tiver uma rotina de interrupção.
fonte