Servus an alle ich versuche mit den registern zu arbeiten und so die lampal an zu steuern also im end effekt möchte ich überprüfen ob der Stackpointer richtig arbeitet das programm soll folgendes tun: wenn ich die taste 7 drücke soll er es im r30 ablegen und wenn ich die taste 0 drücke im r28 die led 3 soll nur dann leuchten, wenn beide gleichzeitig gedrükt sind. im AVR Studio 4.14 hab ich es geschrieben, assembliert und simuliert es funktioniert wie ich es haben will doch der praxis test widerlegt es ich drücke taste 7 und led 3 leuchtet ich drücke taste 0 und led 3 leuchtet soll sollte es nicht sein! könnt ihr mir bitte helfen??? ich kann meinen fehler nicht finden :-(
Habe mir den Code jetzt nicht so genau angeschaut. Aber Du weißt, daß die LEDs low-aktiv sind. Also eine LED leuchtet wenn der entsprechende Ausgangspin low ist.
Hallo, dann aber eher zufällig? tst r28 breq led_a tst r28 brne wow tst r30 breq led_a tst r30 brne wow2 hier springst Du nach wow bzw. wow2 wow: tst r30 breq led_a rcall led dort rufst Du als Subroutine led auf led: sbi portb,1 pop r28 pop r30 rjmp haupt led holr 2 Register vom Stack, die nie gesichert wurden, Du holst also die Rückspringadresse vom Stack, die mit rcall led dort abgelegt wurde. Dann springst Du nach haupt zurück. Ist das so Absicht, um Stackspielereien zu machen? Anmerkung: wozu gibst Du die Interrupts frei, wenn Du keine benutzt? tst r28 breq led_a tst r28 brne wow Wozu hier 2x tst r28? Die Srünge ändern die Flags nicht, tst r28 breq led_a brne wow macht also genau das Gleiche. tst r28 breq led_a rjmp wow macht auch das Gleiche, hat aber den großen Vorteil, daß man nicht einem Programmverlauf danach zu folgen versucht, den es da garnicht geben kann. Spätestens wenn man nach ein paar Monaten in sowas reinschaut, wundert man sich darüber... Gruß aus Berlin Michael
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.