PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Labelsprünge über variable



andysafe
27.11.2004, 14:44
Ich habe folgendes Problem.
Es ist irgendwie einfach nicht möglich an GOTO, GOSUB,RESTORE,READEEPROM eine variable als Sprungziel zu übergeben.
Also entweder funktioniert das wirklich nicht, oder ich stelle mich zu dumm an.
Wäre schön wenn mir da mal jemand helfen könnte.

MfG Andreas

x-ryder
27.11.2004, 17:55
ne variable mit goto und gosub zu übergeben sollte mit

ON Var GOTO/GOSUB Label

gehen.

und an restore kann man keine variable übergeben sondern nur ein label:

restore hallo
...
hallo:
Data 10, 20, 30, 40, 50

mit readeeprom ist es:

Dim Var as Byte
Readeeprom Var, 0 'von der ersten Stelle im EEPROM ein Byte lesen

Ich hoffe ich hab geholfen...

Martin

andysafe
29.11.2004, 09:26
Das trifft es leider nicht so ganz.
Das ganze ist für ein grafisches Display mit KS108 gedacht.
Ich wollte mir einen Zeichensatz im 5x7 Formatals Datenblöcke ablegen
Ungefähr so

1:
Data 0,66,127,64,0
2:
data 66,97,81,73,70

Weiterhin wird der vom AD eingelesene Wert umgerechnet, das ergibt ja dann einen Spannungswert der dann in einer Zeichekette liegt.
Als nächstes wird diese Zeichenkette zerlegt und dann so jedes Zeichen auf dem Display ausgegeben werden.
Also nehmen wir an der Wert wäre 3,15

i=left(Zeichenkette,1)

und jetzt soll in abhängigkeit von i das Datenpaket eingelesen werden
also in diesem Fall die 3, und dann in einer For Next Schleife abgearbeitet(auf Display ausgeben).

for x=0 to 4
ausgabe=lookup x,i
portb=ausgabe
gosub ausführen
next

Das ganze will aber so nicht funktionieren.
Mfg Andreas

29.11.2004, 11:51
Hallo

Versuche es mal über eine einizige Tabelle zu lösen. Dafür mußt du, für jedes Zeichen den Einsprung berechnen und dann die 5 passenden Sätze auslesen.


Hier mal ein kurzes schnelles Beispiel, was noch verbessert werden kann.
Die Data zeilen stimmen nicht.



Dim B1 As Byte , I As Byte
Dim X As Byte
Dim Ausgabe As Byte
Dim Zeichen As Byte
Dim Temp As Byte
Dim Temp_high As Byte


Zeichen = "7"

Temp = Asc(zeichen) 'Asc Code Des Zeichen Holen
Temp = Temp - 48 'Offset abziehen, da "0" den ASC Code 48 hat
Temp = Temp * 5 'Einsprung berechnen da immer 5 bytes pro Zeichen benötigt werden

Temp_high = Temp + 4
For X = Temp To Temp_high 'Ende festlegen
Ausgabe = Lookup(x , Dta2) 'Code holen
Print Ausgabe
Next
End 'end program

Dta2:
Data 23 , 66 , 127 , 64 , 0 'Zeichencode für 0 Einsprung mit 0
Data 12 , 97 , 81 , 73 , 70 'Zeichencode für 1 Einsprung mit 5
Data 28 , 66 , 127 , 64 , 0 'Zeichencode für 2 Einsprung mit 10
Data 3 , 97 , 81 , 73 , 70 'Zeichencode für 3 Einsprung mit 15
Data 78 , 66 , 127 , 64 , 0 'Zeichencode für 4 Einsprung mit 20
Data 11 , 97 , 81 , 73 , 70 'Zeichencode für 5 Einsprung mit 25
Data 94 , 66 , 127 , 64 , 0 'Zeichencode für 6 Einsprung mit 30
Data 51 , 97 , 81 , 73 , 70 'Zeichencode für 7 Einsprung mit 35
Data 27 , 66 , 127 , 64 , 0 'Zeichencode für 8 Einsprung mit 40
Data 44 , 97 , 81 , 73 , 70 'Zeichencode für 9 Einsprung mit 45


MFG
Dieter

andysafe
03.12.2004, 08:39
Hallo Dieter
das ist ja ein supertip, gleich ausprobiert und funktioniert prima.
Ich kam leider jetzt erst dazu mir das anzusehen.

Muß es nur noch ein bißchen anpassen , da ich ja auch das ganze Alphabet(Groß und Kleinschreibung)dabei haben möchte.

Vielen Dank erstmal
Mfg Andreas