READEEPROM/de
Inhaltsverzeichnis |
Funktion
Liest einen Wert aus dem EEPROM-Speicher und speichert ihn in einer Variablen.
Syntax
READEEPROM var , address
Anmerkungen
var |
Name der Variable in die gespeichert werden soll. |
Address |
EEPROM-Adresse an der die Daten gelesen werden sollen. |
Den Befehl gibt es aus Kompatibilitätsgründen mit BASCOM-8051.
Man kann auch ERAM-Variable statt READEEPROM benutzen:
Dim V as Eram Byte 'Im EEPROM speichern
Dim B As Byte 'normale Variable
B = 10
V = B 'store variable in EEPROM
B = V 'Liest aus dem EEPROM
Bei Verwendung der Zuweisungsversion müssen die Datentypen übereinstimmen!
Laut ATMEL-Datenblatt kann die erste EEPROM-Adresse 0 während eines Rest überschrieben werden und sollte daher NICHT benutzt werden.
Man kann ERAM-Variablen auch mit Indizes benutzen:
Dim ar(10) as Eram Byte
Wenn das Adress-Label in nachfolgenden Reads weggelassen wird dann muss ein neuer READEEPROM-Befehl verwendet werden. Es funktioniert nicht in einer Schleife:
Readeeprom B , Label1
Print B
Do
Readeeprom B
Print B Loop
Until B = 5
Das funktioniert nicht weil kein Pointer erhalten bleibt. Das funktioniert:
ReadEEprom B , Label1 ' Label angeben
ReadEEPROM B ' Lesen an der nächsten EEPROM-Adresse
ReadEEPROM B ' Lesen an der nächsten EEPROM-Adresse
ODER
Dim Next_Read as Integer
Dim In_byte as Byte
Dim Eerom_position as Integer
Eerom_position = 20 ' Setzen der EEPROM-Startadresse
For Next_Read = 1 To 5 Step 1 ' Anzahl zu lesender EEPROM-Werte
Readeeprom In_byte , eeprom_position ' Variable benutzen als Pointer zur EEPROM_Adresse
Call another_sub_routine '
Incr Chr_pos_font ' Setzen des Pointers für den nächsten EEPROM-Wert
Next
Beim XMEGA muss man den Mode 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 |
---|