Gast
#2368402
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...