DATA/de

From MCS Wiki AVR
Jump to: navigation, search

Contents

Funktion

Spezifiziert konstante Werte die durch READ-Befehle gelesen werden.

 

 

Syntax

DATA var [, varn]

 

 

Anmerkungen

var

Numerische- oder Zeichenketten-Konstante.

 

Es wird das interne Registerpaar R8 und R9 verwendet um dan DAtenzeiger zu speichern.

 

Um ein " Zeichen in einer DATA-Zeile zu speichern kann man


DATA $34

benutzen.

 

Das $-Zeichen sagt dem Compiler dass ein ASCII-Zeichen folgt.

Dies kann auch benutzt werden um Sonderzeichen zu speichern, die nicht mit dem Editor geschrieben werden können wie zum Beispiel chr(7).

 

Eine andere Möglichkeit, ASCII-Sonderzeichen in einer Zeichenkette einzuschließen ist, {XXX} zu benutzen. Man muss genau 3 Ziffern benutzen, die das ASCII-Zeichen representieren. Zum Beispiel ist 65 die ASCII-Zahl für den Buchstaben A.

 

DATA "TEST{065}"

 

Wird gelesen als TESTA.

 

 

Während :

DATA "TEST{65}" gelesen wird als:

 

TEST{65} weil nur 2 Ziffern geschrieben wurden statt 3.

 

{xxx} funktioniert nur mit Zeichenkettenkonstanten. Es funktioniert auch bei einer normalen Zeichenkettenzuweisung.

 

s = "{065}" . Weist der Zeichenketten-Variablen s ein A zu.

 

 

Weil der DATA-Befehl es auch ermöglicht, eine EEP-Datei für das EEPROM zu generieren wurden die Direktiven $DATA und $EEPROM eingeführt. Lesen Sie die Beschreibungen dieser Direktiven um mehr über den DATA-Befehl zu lernen.

 

Die DATA-Zeilen dürfen nicht durch den normalen Programmablauf zugegriffen werden weil die DATA-Zeilen zu den Byte-Represantionen der Daten umgewandelt werden.

 

Wenn der Programmlauf in den DATA-Bereich kommt dann ergibt das unvorhersehbare Ergebnisse

Deswegen sollten - wie in QB - die DATA-Zeilen am besten am Ende des Programms plaziert werden oder an einer Stelle wo sie nicht vom Programmablauf erreicht werden.

 

Dieses ist ein korrektes Beispiel:

 

Print "Hallo"

Goto jump

DATA "test"

 

Jump:

'Weil wir über den Datenbereich springen gibt es keine Probleme.

 

Das folgende Beispiel führt zu Problemen:

Dim S As String * 10

Print "Hallo"

Restore lbl

Read S

 

DATA "test"

 

Print S

 

 

Wenn der END-Befehl benutzt wird dann muss er VOR den DATA-Bereichen geschrieben werden.

 

 

 

Unterschied zu QB

Integer und Word Konstanten müssen mit  %-Zeichen enden.

Long Konstanten müssen mit dem  &-Zeichen enden.

Single Konstanten müssen mit dem  !-Zeichen enden.

Double Konstanten müssen mit dem  #-Zeichen enden.

 

 

Siehe auch

READ , RESTORE , $DATA , $EEPROM , LOOKUPLOOKUPSTR , LOOKDOWN

 

 

Beispiel


'-----------------------------------------------------------------------------------------
'name : readdata.bas
'copyright : (c) 1995-2005, MCS Electronics
'purpose : demo : READ,RESTORE
'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
 
Dim A As Integer , B1 As Byte , Count As Byte
Dim S As String * 15
Dim L As Long
Restore Dta1 'Zeiger auf gespeicherte Daten setzen
For Count = 1 To 3 'Für jedes Datenelement
Read B1 : Print Count ; " " ; B1
Next
 
Restore Dta2 'Zeiger aud Datentabelle setzen
For Count = 1 To 2 'Für jedes Datenelement
Read A : Print Count ; " " ; A
Next
 
Restore Dta3
Read S : Print S
Read S : Print S
 
 
Restore Dta4
Read L : Print L 'long type
 
 
'demonstration of readlabel
Dim W As Iram Word At 8 Overlay ' location is used by restore pointer
'note that W does not use any RAM it is an overlayed pointer to the data pointer
W = Loadlabel(dta1) ' loadlabel expects the labelname
Read B1
Print B1
End
 
 
Dta1:
Data &B10 , &HFF , 10
Dta2:
Data 1000% , -1%
 
Dta3:
Data "Hello" , "World"
'Zu beachten: Integer-Werte (>255 or <0) müssen mit einem %-Zeichen enden.
'Auch zu beachten: Der Datentyp muss dem Datentyp der Variablen im READ-Befehl entsprechen.
 
Dta4:
Data 123456789&
'Zu beachten: LONG-Werte müssen mit einem &-Zeichen enden.
'Auch zu beachten: Der Datentyp muss dem Datentyp der Variablen im READ-Befehl entsprechen.

Languages   English Deutsch  
Personal tools
Namespaces
Variants
Actions
Navigation
In other languages
Language