2016-06-04 7 views
1

Speicher in Bild-Mikrocontroller wird durch Einsen gelöscht, so erhalten wir 3FFF für ein leeres Wort (von 14 Bits). Aber 0b11 1111 1111 1111 ist ADDLW 255 gemäß dem Datenblatt. Warum nicht alles mit Nullen (NOPs) oder GOTO 0000h füllen? Was passiert, wenn die Code-Ausführung zu diesen 3FFFs kommt, wird es schließlich den Vektor 0000h zurücksetzen? Wenn ja, wird es irgendwelche Nebenwirkungen geben?leer PIC 3FFF Opcode/Anweisung (PIC12F683)

Auch Interrupt-Vektor 0004h ist 3FFF standardmäßig, bedeutet es, dass der Code danach bei Interrupt ausgeführt wird?

Antwort

2

Ein typischer FLASH (auch EEPROM) Speicher wird gelöscht, wenn alle Speicherbits auf diesen Wert gesetzt sind. Während der Programmierung von FLASH-Speicher können Bits nur auf Null gesetzt werden. Also vor der Programmierung von FLASH müssen wir eine spezielle Sequenz namens löschen, danach ist der Speicher bereit für die Programmierung.

Der Opcode "0b11 1111 1111 1111" ist ADDLW 255 und ALU sollte immer ausgeführt werden. Normalerweise übersetzt der Compiler Ihr Programm und das Programm des Programmierers in geeignete FLASH-Speicherplätze, danach wird die Speicherprüfung durchgeführt, also kümmern Sie sich nicht um falsche Opcode-Ausführung!