Bascom Lookup Tafel: Wie?

Gast #2368402
Lesenswert?
• ▲
▼
Hallo,


ich möchte eine S förmige Rampe aus 256 Werten erzeugen. Mit dem 
folgenden Codeausschnitt für den Simulator funktioniert es:

***

$regfile = "ATtiny2313.dat"

$framesize = 32
$swstack = 32
$hwstack = 32

$crystal = 1010000



Config Pina.1 = Input
Xinp Alias Pina.1
Porta.1 = 1




Config Portb = Output

Dacsend Alias Portb





Dim Dacsend As Byte                                         'Ausgabewert
Dacsend = 0

Dim Iminus As Byte 
'Zugriffsvariable
Dacsend = 0

Dim I As Word
I = 0





Do



 Fwd:

 Incr I

  Iminus = I - 1

    Dacsend = Lookup(iminus , Rampe1)

    Waitms 25

  If I < 256 Then Goto Fwd

  If I = 256 Then I = 0



Loop

End

Rampe1:

Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 
3 , 3 , 3 , 4 , 4 , 5 , 5 , 6 , 6 , 6 , 7 , 8 , 8 , 9 , 9 , 10 , 10 , 11 
, 12 , 12 , 13 , 14 , 14 , 15 , 16 , 17 , 17 , 18 , 19 , 20 , 21 , 22 , 
23 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , 37 
, 38 , 39 , 40 , 41 , 42 , 43 , 45 , 46 , 47 , 48 , 49 , 51 , 52 , 53 , 
54 , 56 , 57 , 58 , 60 , 61 , 62 , 64 , 65 , 66 , 68 , 69 , 71 , 72 , 73 
, 75 , 76 , 78 , 79 , 81 , 82 , 84 , 85 , 87 , 88 , 90 , 91 , 93 , 94 , 
96 , 97 , 99 , 100 , 102 , 103 , 105 , 106 , 108 , 109 , 111 , 113 , 114 
, 116 , 117 , 119 , 120 , 122 , 124 , 125 , 127

Data 128 , 130 , 131 , 133 , 135 , 136 , 138 , 139 , 141 , 142 , 144 , 
146 , 147 , 149 , 150 , 152 , 153 , 155 , 156 , 158 , 159 , 161 , 162 , 
164 , 165 , 167 , 168 , 170 , 171 , 173 , 174 , 176 , 177 , 179 , 180 , 
182 , 183 , 184 , 186 , 187 , 189 , 190 , 191 , 193 , 194 , 195 , 197 , 
198 , 199 , 201 , 202 , 203 , 204 , 206 , 207 , 208 , 209 , 210 , 212 , 
213 , 214 , 215 , 216 , 217 , 218 , 220 , 221 , 222 , 223 , 224 , 225 , 
226 , 227 , 228 , 229 , 230 , 231 , 232 , 232 , 233 , 234 , 235 , 236 , 
237 , 238 , 238 , 239 , 240 , 241 , 241 , 242 , 243 , 243 , 244 , 245 , 
245 , 246 , 246 , 247 , 247 , 248 , 249 , 249 , 249 , 250 , 250 , 251 , 
251 , 252 , 252 , 252 , 253 , 253 , 253 , 253 , 254 , 254 , 254 , 254 , 
254 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255

***

Zuerst hatte ich alle 256 Werte in einem DATA Statement -> Compiler 
stürzt ab.
Dann aufgeteilt in 2 128er Blöcke (namens Rampe 1 und 2) und über Rampe1 
und Rampe2 zugegriffen -> Fehlzugriffe ab 128. (Mit Aufruf nur Rampe1, 
aber iminus über 128 zugelassen merkwürdigerweise korrekte Zugriffe).

Bei der gezeigten Version hängen zwei Datastatements direkt 
hintereinander. Trotzdem läuft die Simu korrekt durch - aber wieso?? 
Müsste nicht jeder Datenblock sein eigenes Label haben und dieses auch 
in LOOKUP auftauchen?? Und warum passen nicht 256 Werte in ein 
Statement?

Weiß jemand eine Antwort?

Grüße und Danke...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.