2016-06-04 1 views
1

La mémoire des microcontrôleurs PIC est effacée par ceux de sorte que nous obtenons 3FFF pour un mot vide (de 14 bits). Mais 0b11 1111 1111 1111 est ADDLW 255 selon la fiche technique. Pourquoi ne pas tout remplir avec des zéros (NOPs) ou GOTO 0000h? Que se passe-t-il si l'exécution du code parvient à ces 3FFF, arrivera-t-il à réinitialiser le vecteur 0000h éventuellement? Si oui, y aura-t-il des effets secondaires?Opcode/instruction PIC 3FFF vide (PIC12F683)

Également le vecteur d'interruption 0004h est 3FFF par défaut, cela signifie-t-il que le code après il sera exécuté sur interruption?

Répondre

2

Une mémoire type FLASH (également EEPROM) est effacée lorsque tous les bits de la mémoire sont réglés sur celui-ci. Pendant la programmation de FLASH, les bits de la mémoire ne peuvent être mis à zéro. Donc avant la programmation de FLASH nous devons faire une séquence spéciale nommée effacement, après que la mémoire est prête à être programmée.

L'opcode "0b11 1111 1111 1111" est ADDLW 255 et ALU doit toujours l'exécuter. Normalement, le compilateur traduit votre programme et les opcodes du programme du programmeur en emplacements de mémoire FLASH appropriés, après que la vérification de la mémoire est faite, donc ne vous souciez pas de l'exécution incorrecte des codes d'opération!