Hallo, ich versuche ein programm zu schreiben, dass beliebige bitfolgen aus dem flash liest und diese dann einfach ausgibt. dazu habe ich mir das tutorial auf dieser seite durchgelesen und ein programm danach geschrieben, aber es funzt zum verrecken nicht. zwischendurch werden irgendwelche bitfolgen ausgegeben, aber nicht das was ich haben will. das ganze soll mal ein lichtspiel werden, die anordnung der leds kann man in der angehängten datei sehen. eigentlich dürfte es ja kein prob sein, die daten abwechselnd auf port b bzw c auszugeben. (bei nem AT90S4433) es soll jetzt so sein, dass ich ein paar bytes in den flash schreibe, die dann in einer endlosschleife ausgegeben werden, therotisch kein ding, aber praktisch.... g wenn sich jetzt vielleicht mal jemand das prog anschauen könnte und mir sagen könnte wo da die fehler sind, wär das schon sehr praktisch! ich danke jetzt schonmal für jeden hinweis! gruß martin
du testest zwar auf ein Ende-Zeichen (0), aber das kommt in der Datentabelle gar nicht vor. Also läuft es immer munter weiter, wenn der flash-Bereich zu Ende ist, gehts wieder auf Adresse 0 mit dem Programmcode als Daten weiter. Unprogrammierte Zellen haben den Wert 0xff, insofern ist deine Datentabelle nicht terminiert. Schreib ganz hinten noch ein .db 0 ran, dann sollte es funktionieren.
danke! jetzt tut's zumindest besser als vorher, aber eigentlich müsste die prozedur einen eintrag nach dem andren abarbeiten, tut sie aber nicht, sonder er gibt kurz 0xff aus, und nach nem bestimmten abstand wieder. wie kann das sein?
.db 0bxxxxxxxx .db 0byyyyyyyy macht im Speicher 11111111 xxxxxxxx 11111111 yyyyyyyy Der Speicher ist doch 16-bittig! also besser .dw 0byyyyyyyyxxxxxxxx
ok, angenommen wir haben ein programmabschnitt daten: .db 0byyyyyyyyxxxxxxxx wenn ich jetzt sage ldi ZL, LOW(daten*2) ldi ZH, HIGH(daten*2) lpm was ist dann in r0 ? und wenn ich jetzt sage adiw ZL,1 lpm was kommt dann? kanns sein, dass erst ein byte aus der adresse gelesen wird (xxxxxxxx), und dann nach "adiw ZL,1" das andere (yyyyyyyy) ? aber in welcher reihenfolge?
ja, an der ganzen Sache mit den 16bit ist was dran, lange nichts mehr in Assembler gemacht :-) Aber so wirds was: .db 0b11110110, 0b11110110 .db 0b11101101, 0b11101101 .db 0b11011011, 0b11011011
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.