-
Bei deinen tabellen, da sitze ich irgendwie auf der leitung. Da habe ich noch nicht verstanden, wo dein Problem ist.
Nehmen wir mal an, du hättest eine solche Tabelle mit 256 Werten:
Crc8_daten:
Data 0 , 94 , 188 , 226 , 97 , 63 , 221 , 131 , 194 , 156
Data 126 , 32 , 163 , 253 , 31 , 65 , 157 , 195 , 33 , 127
Data 252 , 162 , 64 , 30 , 95 , 1 , 227 , 189 , 62 , 96
Data 130 , 220 , 35 , 125 , 159 , 193 , 66 , 28 , 254 , 160
Data 225 , 191 , 93 , 3 , 128 , 222 , 60 , 98 , 190 , 224
Data 2 , 92 , 223 , 129 , 99 , 61 , 124 , 34 , 192 , 158
Data 29 , 67 , 161 , 255 , 70 , 24 , 250 , 164 , 39 , 121
Data 155 , 197 , 132 , 218 , 56 , 102 , 229 , 187 , 89 , 7
Data 219 , 133 , 103 , 57 , 186 , 228 , 6 , 88 , 25 , 71
Data 165 , 251 , 120 , 38 , 196 , 154 , 101 , 59 , 217 , 135
Data 4 , 90 , 184 , 230 , 167 , 249 , 27 , 69 , 198 , 152
Data 122 , 36 , 248 , 166 , 68 , 26 , 153 , 199 , 37 , 123
Data 58 , 100 , 134 , 216 , 91 , 5 , 231 , 185 , 140 , 210
Data 48 , 110 , 237 , 179 , 81 , 15 , 78 , 16 , 242 , 172
Data 47 , 113 , 147 , 205 , 17 , 79 , 173 , 243 , 112 , 46
Data 204 , 146 , 211 , 141 , 111 , 49 , 178 , 236 , 14 , 80
Data 175 , 241 , 19 , 77 , 206 , 144 , 114 , 44 , 109 , 51
Data 209 , 143 , 12 , 82 , 176 , 238 , 50 , 108 , 142 , 208
Data 83 , 13 , 239 , 177 , 240 , 174 , 76 , 18 , 145 , 207
Data 45 , 115 , 202 , 148 , 118 , 40 , 171 , 245 , 23 , 73
Data 8 , 86 , 180 , 234 , 105 , 55 , 213 , 139 , 87 , 9
Data 235 , 181 , 54 , 104 , 138 , 212 , 149 , 203 , 41 , 119
Data 244 , 170 , 72 , 22 , 233 , 183 , 85 , 11 , 136 , 214
Data 52 , 106 , 43 , 117 , 151 , 201 , 74 , 20 , 246 , 168
Data 116 , 42 , 200 , 150 , 21 , 75 , 169 , 247 , 182 , 232
Data 10 , 84 , 215 , 137 , 107 , 53
Von diesen hast du jetzt 4 Stück im Flash liegen.
Also
Crc8_daten:
...
Crc8_daten1:
...
Crc8_daten2:
...
Crc8_daten3:
...
Dein Programm soll jetzt mal die eine mal die andere Tabelle für die Bearbeitung benutzt werden.
Die tabellen können natürlich auch in Include Files stehen. Im Programm sähe das dann so aus:
$include "Crc8_daten.inc"
$include "Crc8_daten1.inc"
$include "Crc8_daten2.inc"
$include "Crc8_daten3.inc"
In jedem File steht dann ein Label und ein Satz von 256 Daten.
Ist dies soweit korrekt?
-
genau ich habe 4 Tabellen die per Include reingeschrieben werden.
Die Anzahl der Daten in der Tabelle sind aber variabel.
Nun müsste ich sowas wie
Mein Problem ist, dass ich ja im Lookup Aufruf keine Variable sondern direkt ein Label angeben muss.
Aber um die Frage ob deine bisherige Aufführung korrekt ist kurz zu beantworten: Ja bis auf die Tatsache, dass die Anzahl der Daten variieren kann.
-
Wenn du die daten per Lookup holen willst, ist es sehr lästig, wenn du 4 verschiedene Label hast. Es hindert dich aber niemand, einfach alles über das erste Label zu machen. Dann sehe ich zwei Möglichkeiten, wie du an die nötigen Offsets kommst:
1. Du weißt, wieviele Werte bei jedem Label abgespeichert sind und kannst die Anzahl in einem Array abspeichern.
Anzahl(1) = 100
Anzahl(2) = 200
Anzahl(3) = 300
Anzahl(4) = 400
Dann würde ich mir noch die Start Offsets abspeichern, damit du zwischendrin nicht soviel rechnen musst:
Offset(1) = 0
Offset(2) = Anzahl(1)
Offset(3) = Offset(2) + Anzahl(2)
Offset(4) = Offset(3) = Anzahl(3)
Das 97. Element der tabelle 4 bekommst du dann mit:
Aktuelle_tabelle = 4 'wird irgendwo in deinem Programm gesetzt
Aktuelles_Element = 97 'wird in einer Schleife hochgezählt
Index = Offset(aktuelle_Tabelle) + aktuelles_element
Wert=Lookup(Index,Label1)
2. Wenn du die Anzahl der Elemente nicht kennst, kannst du sie zur Compilezeit berechnen lassen. Das geht über Loadlabel(Label).
Offset(1) = 0
Offset(2) = Loadlabel(label2) - loadlabel(label1)
Offset(3) = Loadlabel(label3) - loadlabel(label1)
Offset(4) = Loadlabel(label4) - loadlabel(label1)
Danach geht es genau so weiter wie oben.
-
Du sagtest dass es über Lookup sehr lästig wäre. Das sagt mir, dass es 'ne andere Möglichkeit gibt welche vielleicht leichter ist. Welche wäre das denn?
Denn Lookup habe ich nur benutzt da ich keine gute/besser Alternative kannte bzw. kenne.
-
Ich würde Lookup() nur benutzen, wenn ich wahlfrei auf die Daten zugreifen möchte. Also an beliebige Stellen, nicht die Daten einen nach dem anderen so wie sie gespeichert wurden.
Ich habe es mir zwar noch nicht anzeigen lassen, aber ich denke, dass ein Restore mit anschliessendem Read schneller sein sollte. Das geht aber nur sequentiell durch alle Daten.
-
Es ist gewissermaßen sequentiell und zwar wie folgt:
Portd = Lookup(offset , Schema)
Offset = Offset + 1
Porta = Lookup(offset , Schema)
Dann kommt der nächste Datensatz. Tabelle sieht bspw. so aus:
Data &B00000100 , &B00000000
Data &B00001000 , &B00000000
Data &B00010000 , &B00010000
Data &B00000100 , &B00000000
Data &B00001000 , &B00010000
Data &B10010000 , &B11111111