Allgemeines zum
EEPROM
EEPROM-Daten festlegen
Weiteres Beispiel
Viele PICs besitzen EEPROM-Zellen, in denen jeweils 1 Byte gespeichert werden kann. Im Unterschied zu den normalen Daten-Speicherzellen vergessen die EEPROM-Speicherzellen die in ihnen gespeicherten Informationen nicht beim Ausschalten der Stromversorgung. Hier lassen sich also Werte speichern, die immer wieder benötigt werden - z.B. Kalibrierdaten.
Oftmals ist es zweckmäßig, EEPROM-Daten schon beim Brennen des PIC in den EEPROM zu schreiben. Das ist leicht möglich, da für das PIC-Programmiergerät (den Brenner) sowohl der Flash-.Programmspeicher wie auch der EEPROM-Datenspeicher zugänglich sind.
Für den PIC-Brenner ist der EEPROM eines PIC16F/PIC12Fxxx ein Speicherbereich, der an der Adresse 2100h beginnt. Wenn man dem Brenner anweist, ein bestimmtes Byte in den Speicher an der Adresse 2100h zu brennen, so brennt er es in die erste EEPROM-Zelle (also in die EEPROM Adresse 00h). Die danach folgenden Adressen liegen entsprechend dahinter.
++HINWEIS++
Die EEPROM-Startadresse
2100h gilt für PICs der Serien PIC16Fxxx und PIC12Fxxx . Bei den PIC18Fxxx
ist die Startadresse für EEPROM-Daten dagegen F00000h.
Um schon im Assembler-Programm Daten für
den EEPROM festzulegen, genügt es mit einem ORG-Befehl zu Adresse
2100h zu gehen, und danach die Daten zu definieren. Der nachfolgende Programmausschnitt
aus einem Lernbeispiel zeigt
das:
;voreingestellte Daten für den EEPROM ab der Zelle 00h org H'2100' ; Adresse des EEPROM für den Brenner de B'00000001' ; 0 de B'00000011' ; 1 de B'00000111' ; 2 de B'00001111' ; 3 de B'00011111' ; 4 de B'00111111' ; 5 de B'01111111' ; 6 de B'11111111' ; 7 de B'00011000' ; 8 de B'00100100' ; 9 de B'01000010' ; 10 de B'10000001' ; 11 de B'01000010' ; 12 de B'00100100' ; 13 de B'00011000' ; 14 de B'00000000' ; 15 |
Beim Assemblieren erzeugt der Assembler
dann ein HEX-File, in dem auch die Informatiuon über die festgelegten
EEPROM-Daten enthalten ist. Der Brenner brennt dann alles in den PIC.
Natürlich können die Daten später
vom Programm im PIC manipuliert werden (es sei denn das wurde in der Konfiguration
explizit verboten.)
Das folgende Beispiel schreibt einen nullterminierten
String in den EEPROM ab Zelle 00h
;voreingestellte Daten für den EEPROM ab der Zelle 00h org H'2100' ; Adresse des EEPROM für den Brenner de "Hallo World", 0 ; einen nullterminierten String |
...