Zitat von "Pesi"Alles anzeigenHallo Digitali,
willkommen im Forum (ich begrüße Dich jetzt hier einfach mal ganz "frech", obwohl es nicht mein Thread ist :wink:)
Ist auch interessant, der Ansatz - aber soooviel Speicher können die paar Zeilen doch auch nicht brauchen...? - also, ich weiß jetzt natürlich nicht, was Bascom da an Bytes draus macht
Ich kenn' mich mit Bascom nicht so aus (mache Assembler), aber nur zum Verständnis: die Zeilen
[code:1]
Select Case Ez
Case 32 : Beginn_zeichen = 156
Case 42 : Beginn_zeichen = 162
Case 65 : Beginn_zeichen = 0
Case 66 : Beginn_zeichen = 6
Case 67 : Beginn_zeichen = 12
Case 68 : Beginn_zeichen = 18
Case 69 : Beginn_zeichen = 24
Case 70 : Beginn_zeichen = 30
Case 71 : Beginn_zeichen = 36
Case 72 : Beginn_zeichen = 42
Case 73 : Beginn_zeichen = 48
Case 74 : Beginn_zeichen = 54
Case 75 : Beginn_zeichen = 60
Case 76 : Beginn_zeichen = 66
Case 77 : Beginn_zeichen = 72
Case 78 : Beginn_zeichen = 78
Case 79 : Beginn_zeichen = 84
Case 80 : Beginn_zeichen = 90
Case 81 : Beginn_zeichen = 96
Case 82 : Beginn_zeichen = 102
Case 83 : Beginn_zeichen = 108
Case 84 : Beginn_zeichen = 114
Case 85 : Beginn_zeichen = 120
Case 86 : Beginn_zeichen = 126
Case 87 : Beginn_zeichen = 132
Case 88 : Beginn_zeichen = 138
Case 89 : Beginn_zeichen = 144
Case 90 : Beginn_zeichen = 150
End Select
[/code:1]
könnte man sich doch mit Beginn_zeichen = (EZ-65)*6 sparen, oder? (also ob die Syntax jetzt genau für Bascom stimmt, weiß ich nicht...)
Weil es geht ja nur drum, aus dem Ascii-Code den Tabellenzeiger zu generieren? - und so ne einfache Rechnung braucht halt doch weniger Speicher und Rechenzeit als so ne riesige Mehrfachauswahl....?
und unten, kann man da nicht statt Ti von 1 bis 9 zu zählen, statt dessen dann von 0 bis 8 zählen und statt der Mehrfachauswahl "Dout = Dat(a1).Ti" usw. schreiben? - und oben halt mit "Ze(0) = 127" statt "Ze(1) = 127" anfangen (oder gehen Arrays in Bascom mit 1 los?)
dann wären's schon wieder viele Byte weniger, dann müsste das doch auch mit nem kleineren Atmel gehen...?
Dann wäre das evtl. auch fürn Andy interessant - ist hiermit (mit deinem Aufbau) ja bewiesen, dass Bascom schnell genug für sowas ist....
viele Grüße, Pesi
Hallo Pesi,
danke fuer den Hinweis!
Die Select-Case habe ich rausgeschmissen, den Zeichensatz vervollstaendigt und Deinen ersten Vorschlag in der Form uebernommen. Ich habe mein erstes Posting dahingehend editiert und etwas am Code noch optimiert. Einen Fehler habe bei der Gelegenheit auch entdeckt.
Arrays gehen in Bascom nur mit 1 los. Ich habe mir das nochmal in der Hilfe angeschaut: "The maximum number of elements is 65535. The first element of an array is always one. This means that elements are 1-based."
Aber was dort so richtig Speicher frisst ist meine folgende Variablendeklaration:
Dim Dat(1530) As Byte
Ein Zeichen besteht aus 6 Bytes. Bei 1530 Bytes kann ich also einen Text mit 255 Zeichen rausschieben. Diese Bytes werden dann bitweise Dat(x).0 bis Dat(x).7 in der Timer_ISR rausgeschoben.
Mit freundlichen Gruessen
Digitali