WRITEEEPROM/de
Contents |
Funktion
Schreibt den Variableninhalt in den EEPROM-Speicher.
Syntax
WRITEEEPROM var , address
Anmerkungen
var |
Name der Variablen die gespeichert werden soll. |
address |
EEPROM-Adresse an der die Variable gespeichert werden soll.
Eine neue Option ist, dass man einen Label-Namen als Adresse verwenden kann. Siehe Beispiel 2. |
Diesen Befehl gibt es aus Kompatibilitätsgründen mit BASCOM-8051.
Man kann auch schreiben :
Dim V as Eram Byte 'Im EEPROM speichern
Dim B As Byte 'normale Variable
B = 10
V = B 'Variable im EEPROM speichern
Wenn man die Zuweisungs-Version benutzt dann müssen die Datentypen gleich sein!
Laut ATMEL-Datenblatt kann die erste EEPROM-Speicherzelle mit der Adresse 0 bei einem Reset überschrieben werden. Es wird deshalb empfohlen, diese Adresse NICHT zu benutzen.
Aus Sicherheitgründen wird Register R23 auf einen 'magic value' gesetzt bevor Daten in den EEPROM-Speicher geschrieben werden.
Alle Interrupts werden disabled während in den EEPROM-Speicher geschrieben wird. Interrupts werden automatisch wieder enabled wenn die Daten geschrieben sind.
Es ist ratsam, die Brownout-Einheit zu verwenden, die es bei den meistens AVR-Mikrocontrollern gibt. Dadurch wird verhindert, dass Daten in den EEPROM-Speicher geschrieben werden obwohl die Spannung unter den angegebenen Wert sinkt.
Beim XMEGA muss man den Mode auf mapped setzen : CONFIG EEPROM = MAPPED.
Siehe auch
Assembler
NONE
Beispiel
'----------------------------------------------------------------------------------------- 'name : eeprom2.bas 'copyright : (c) 1995-2005, MCS Electronics 'purpose : shows how to use labels with READEEPROM 'micro : Mega48 'suited for demo : yes 'commercial addon needed : no '----------------------------------------------------------------------------------------- $regfile = "m48def.dat" ' Mikrocontroller $crystal = 4000000 ' Taktfrequenz $baud = 19200 ' BAudrate $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 ' default use 10 for the SW stack $framesize = 40 ' default use 40 for the frame space 'Zunächst einmal Variablen dimensionieren: Dim B As Byte Dim Yes As String * 1 'Benutzung von readeeprom und writeeprom : 'readeeprom var, address 'Eine neue Option ist, ein Label für die Adresse zu benutzen. 'Da die Daten in einer externen Datei sind und nicht im Programm sollten die EEPROM Daten 'als erstes spezifiziert werden. Dies steht im Gegensatz zu den normalen DATA Zeilen welche 'am Endes des Programms spezifiziert werden!! 'Zunächst dem Compiler mitteilen, dass wir das EEPROM nutzen wollen um die Daten zu speichern: $eeprom 'Die erzeugte EEP-Datei ist eine Binär-Datei. 'Benutzen Sie $EEPROMHEX um eine Intel Hex-Datei für die Benutzung mit AVR Studio zu erzeugen. '$eepromhex 'Label festlegen: Label1: Data 1 , 2 , 3 , 4 , 5 Label2: Data 10 , 20 , 30 , 40 , 50 'Zurückschalten zu normalen DATA-Zeilen für den Fall, dass solche verwendet werden: $data 'Der Code oben erzeugt keinen richtigen Object-Code.does not generate real object code 'Benutzung der neuen Label Option Readeeprom B , Label1 Print B 'Ausgabe einer 1 'Nachfolgende Reads lesen die nächsten Werte 'Beim ersten Mal muss das Label angegeben werden damit die Startadresse bekannt ist. Readeeprom B Print B 'Ausgabe einer 2 Readeeprom B , Label2 Print B 'Ausgabe: 10 Readeeprom B Print B 'Ausgabe: 20 'Funktioniert auch beim Schreiben: 'aber weil es Überschneidungen mit dem Programm geben kann fügen wir hier ein Stop ein. Input "Ready?" , Yes B = 100 Writeeeprom B , Label1 B = 101 Writeeeprom B 'read it back Readeeprom B , Label1 Print B 'Ausgabe: 100 'Nachfolgende Reads nächsten den nächsten Wert 'Beim ersten Mal muss das Label angegeben werden damit die Startadresse bekannt ist. Readeeprom B Print B 'Ausgabe: 101 End
Languages | English • Deutsch |
---|