Forum: Mikrocontroller und Digitale Elektronik Warum verhält sich Bascom so komisch??


von Stefan (Gast)


Lesenswert?

Hallo,

ich sitze nun 2 Tage dran und komme einfach nicht weiter ;(

Dim Befehlspeich01 As String * 9
Dim Befehl01 As String * 3
Dim Befehl01aus As Byte
Dim Befehl02aus As Byte
Dim Befehl03aus As Byte
Dim Befehl04aus As Byte



Befehlspeich01 = "12345678"

Befehl01 = Mid(befehlspeich01 , 1 , 2)
Befehl01aus = Val(befehl01)
Befehl01 = Mid(befehlspeich01 , 3 , 4)
Befehl02aus = Val(befehl01)
Befehl01 = Mid(befehlspeich01 , 5 , 6)
Befehl03aus = Val(befehl01)
Befehl01 = Mid(befehlspeich01 , 7 , 8)
Befehl04aus = Val(befehl01)
Print  Befehl01aus ; Befehl02aus ; Befehl03aus ; Befehl04aus


ich erwarte eigendlich, das in den variablen folgendes steht:

befehl01aus=12
befehl02aus=34
befehl03aus=56
befehl04aus=78

ABER in den variablen steht folgendes:

befehl01aus=12
befehl02aus=128
befehl03aus=46
befehl04aus=78

ich verstehe einfach nicht warum ;( kann mir jemand helfen??

von mue-c (Gast)


Lesenswert?

Hallo Stefan,
welchen Controller benutzt du und wie sind deine Einstellungen für die 
Stacks und den Frame?

von Stefan (Gast)


Lesenswert?

hallo,
ich benutze ein atmega8

die stacks sind so wie original von bascom vorgegeben habe sie nicht 
abgeändert.

von mue-c (Gast)


Lesenswert?

Und wie sind die im Original von Bascom vorgegeben?
Ist dies dein ganzes Programm?

von Stefan (Gast)


Lesenswert?

nein das programm ist deutlich länger insgesamt 4kb groß aber das würde 
nur verwirren hatte nur das gepostet was nicht funktioniert.

da ich noch nie die stacks geändert habe weiss ich auch nicht was bascom 
vorgibt.

von Gnu (Gast)


Lesenswert?

Stefan schrieb:
> Befehl01 = Mid(befehlspeich01 , 1 , 2)
> Befehl01 = Mid(befehlspeich01 , 3 , 2)
> Befehl01 = Mid(befehlspeich01 , 5 , 2)
> Befehl01 = Mid(befehlspeich01 , 7 , 2)

versuch es mal damit. Letztes Argument der MID Funktion ist ANZAHL der 
Zeichen.

von Maxx (Gast)


Lesenswert?

Schnapp dir ne Befehlsreferenz.

Mid ( String, Start, Länge )

Bei >= 3 Als Länge kommst du in den Überlauf des Byte Datentyps, 
deswegen ist es nicht so einfach zu erkennen durch die Werte, dass du 
einfach zuviele Zeichen nimmst bei Mid()

von Harald W. (wilhelms)


Lesenswert?

Stefan schrieb:

> nein das programm ist deutlich länger insgesamt 4kb groß aber das würde
> nur verwirren hatte nur das gepostet was nicht funktioniert.
>
> da ich noch nie die stacks geändert habe weiss ich auch nicht was bascom
> vorgibt.

Wenn Es solche Probleme gibt, ist es das beste, man kopiert die
kritischen Zeilen und schreibt damit ein neues Programm. Dann sieht
man genau, ob es an diesen Zeilen oder vielleicht am Umfeld liegt.
Gruss
Harald

von Stefan (Gast)


Lesenswert?

DANKE DANKE DANKE DANKE DANKE !!!!!!!!!!!!


Ihr seit so klasse :)

ich dachte schon ich werde bekloppt, aber dann habe ich den Befehl 
einfach falsch verstanden und dachte die zweite Zahl gibt das Ende und 
nicht die Anzahl der Zeichen an :)


Viele Dank und ein schönes Wochende :)

von lulu (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.