Hallo, ich schreibe in eine Variable 8bits, also 1 Byte und versuche ihn dann anschließen per ERAM in den EEPROM zu speichern. Byte - HEX - ASCII 01010110 56 V Lade ich mir nun den EEPROM des Tinys auf meinen PC und betrachte diese Datei, finde ich kein "V" in dieser. Also gehe ich davon aus das er nicht richtig speichert. Sehe ich das richtig?
1 | A = "01010110" |
und du denkst wirklich, du könntest einen ganzen String in einer Byte-Variablen speichern? Warum schreibst du es denn nicht als
1 | A = 56 |
wenn du schon nicht die korrekte Schreibweise für Bitkonstanten kennst.
Ich kenne mich mit Bascom nicht aus, aber das:
> A = "01010110"
Ist ganz sicher eine Zeichenkette, kein Byte.
Stefan us schrieb: > Ich kenne mich mit Bascom nicht aus, aber das: > >> A = "01010110" > > Ist ganz sicher eine Zeichenkette, kein Byte. OK, C ist jetzt sicher nicht die Ausgeburt an Pingeligkeit, wenn es um Datentypen geht. Aber was der BASCOM Compiler alles akzeptiert, erstaunt mich dann doch immer wieder.
Hallo, so sollte es funktionieren: Dim Text As Eram String * 10 ' oder z.B. Dim Count As Eram Byte Text = "ABC123xyz" 'count = 64 'oder bei Deinem Code A = &B01010110 Gruß
> Aber was der BASCOM Compiler alles akzeptiert, > erstaunt mich dann doch immer wieder. Mich auch. Und mit jeder Frage zu Bascom in diesem Forum wächst meine Abneigung dagegen. Wer braucht überhaupt Bascom? Also ob Assembler, C und C++ nicht ausreichen würden...
stefanus schrieb: >> Aber was der BASCOM Compiler alles akzeptiert, >> erstaunt mich dann doch immer wieder. > > Mich auch. Und mit jeder Frage zu Bascom in diesem Forum wächst meine > Abneigung dagegen. Wer braucht überhaupt Bascom? Also ob Assembler, C > und C++ nicht ausreichen würden... Fragt ein Ami, warum man eine andere Sprache braucht als Englisch! Na, weil die nichts anderes können.
stefanus schrieb: > Mich auch. Und mit jeder Frage zu Bascom in diesem Forum wächst meine > Abneigung dagegen. Wer braucht überhaupt Bascom? Also ob Assembler, C > und C++ nicht ausreichen würden... Du hast bestimmt auch nur 3 Paar Unterhosen. Und mit jedem weiteren Paar steigt deine Abneigung dagegen.
Bussard schrieb: > Hallo, so sollte es funktionieren: > > Dim Text As Eram String * 10 ' oder z.B. Dim Count As Eram Byte > > Text = "ABC123xyz" > 'count = 64 > > 'oder bei Deinem Code A = &B01010110 > > Gruß Danke :) Wie speichere ich PINB.0-7 als Byte in den eeprom?
Theend, schön langsam wirds lächerlich
1 | $regfile = "attiny2313.dat" |
2 | $crystal = 8000000 |
3 | $hwstack = 40 |
4 | $swstack = 16 |
5 | $framesize = 32 |
6 | |
7 | 'CONFIG |
8 | Dim A As Byte 'zum speichern |
9 | Dim Ae As Eram Byte 'eeprom |
10 | |
11 | 'START |
12 | |
13 | A = 56 |
14 | Ae = A |
15 | |
16 | End |
oder
1 | Ae = 56 |
oder
1 | A = &B01010110 |
2 | Ae = A |
oder eben auch
1 | Ae = PINB |
Zuweisung ist Zuweisung. Was immer du an Ae zuweist (das als ERAM Variable im EEPROM liegt), das wird auch dort gespeichert. Egal wo du den 8 Bit Wert her hast. Eine Zuweisung besteht aus einer Seite links vom = und einer Seite rechts vom =. Die Seite links vom = ist die Variable im EEPROM. Alles was dieser zugewiesen wird, landet auch dort. Rechts vom = kannst du haben was du willst. Die rechte Seite der Zuweisung wird ausgewertet, ergibt so einen Wert und der wird der links angegebenen Variablen zugewiesen. Und wenn es leicht geht, dann sollte die rechte Seite dann auch einen Wert ergeben, der im Datentyp so einigermassen mit dem Datentyp der Variablen auf der linken Seite übereinstimmt.
1 | Dim A As Byte |
2 | A = "01010110" |
links vom = steht eine Variable ('A'), die so definiert ist, dass sie 1 Byte speichern kann. Rechts vom = steht ein String. Ist ein String dasselbe wie ein Byte? Nein, ist er nicht. Ein String ist eine Zeichenkette und besteht als solche aus mehreren Bytes - pro Buchstabe 1 Byte. Daher ist diese Zuweisung Quatsch (zumindest in diesem Zusammenhang). Denn der String wird als ganzes nun mal nicht in dieses 1 Byte passen. Lass dich nicht davon verleiten, das im String nur die Zeichen '0' und '1' vorkommen. Das hat an sich überhaupt nichts zu sagen. Das ist nach wie vor einfach nur ein Text. Ein String ist immer ein String, unabhängig davon was im String-Text steht. Da hätte genausogut auch
1 | A = "test" |
stehen können, das würde für die Operation, die bei der Zuweisung abläuft, keinen Unterschied machen.
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.