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...
Du kannst das auch auf mehrere Data-Befehle aufteilen. Der Compiler schreibt einfach alles, was hinter einem Data-Befehl steht direkt so in den Flash. Beispiel: Data 123, 198, 96, 41 Macht das Selbe wie Data 123, 198 Data 96 Data 41 Labels für jedes Data brauchst Du nicht. Gruß Jonathan
Danke - das erklärt das beobachtete Verhalten. Dann ist es wohl auch unmöglich, zwei völlig getrennte Tafeln mit unterschiedlichen Labels zu nutzen. Gruß
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.