Hallo, ich bin gerade an einem kleine ASM project dran, ich hab vor kurzem angefangen zu lerne, jetzt hab ich ein Prog getippt, das alle 0,01sec in eine Interruptroutine springen soll und dort ein Bit eines Ports auf Hi setzt, nur es tut sich nichts, abe ich kann ums verrecken den fehler nicht finden, könnt ihr mir sagen was hier nicht stimmt? Grüße teslanikola
>;Interupt Config II >sei >ldi temp,0b10000010 >out tccr1a,temp >ldi temp,0xb4 >out tcnt1l, temp >ldi temp,0xe2 >out tcnt1h, temp >;Stack einrichten >ldi temp,low(ramend) >out spl,temp Außerdem richtet man ERST den Stack ein und initialisiert die Peripherie BEVOR man ihr erlaubt Interrupts auszulösen. >;Hauptprogramm >Main: > ldi temp,0b00000001 > out portd,temp > ldi temp,0b00000000 > out portb,temp >End: rjmp End >;Interuptroutine >t1int: > ldi temp,0b00000001 > out portb,temp >Reti Das ist nicht ganz sauber Was passiert wenn zwischen > ldi temp,0b00000000 und > out portb,temp ein Interrupt auftritt? Keine Ahnung was du eigentlich willst, aber für größere Programme würde ich nicht das gleiche Register in der Interruptroutine und dem Hauptprogramm benutzen ohne es zu sichern!
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.