Ich bin begeistert, das ist echt eine sehr schöne Interrupt Routine, und Du sagtest, es geht nicht mit einem reti![]()
Ich sehe, daß Du wirklich alles auf einmal wissen willst, aber wie gesagt, das Thema machen wir irgendwann, jetzt nicht, ich sag nur dazu, das es nicht stimmt, was Du da sagst.Denn mit dem ganzen Zeug, also das Sichern der Register blinkt die LED nimmer so wie sie soll. Logisch, denn tmp hat am Ende den falschen Wert. Aber darauf wollten wir ja später kommen
Aber wenn Du denkst, daß wir Dein Code jetzt wirklich 100% haben, dann irst Du gewaltig,
es klappt zwar, man könnte aber noch sehr viel verbessern \/
Also die nächste Aufgabe (Ich hoffe Du hast Lust Dazu)
Du benutzt den status Register mit der sperre, um Dir zu merken ob die LED an oder aus ist.
Damit hast Du uns schön gezeigt, wie man Register als Variablen nutzen kann,
Man braucht keine variablen an Funktionen zu übergeben, oder irgendeinen Wert zurückzuerwarten wie bei C, sondern hat sie alle sozusagen Global zu verfügung, sie sind überall gültig in Hauptprogramm und in den Interruptroutinen.
So, aber......
Wir wollen Sparen!
Stell Dir vor, Du hast wirklich keinen Register mehr frei, Sram ist voll, und mußt das Programm so umschreiben, daß Du ohne sperre auskommst !![]()
Warum schreib ich das jetzt?
Weil Du Dir die Befehlsliste nicht genau angeschaut hast [-X
Und alle Register auch noch nicht kennst.
es gibt da Register, die PIN heißen, für jeden Port einen also bei Mega8 PINB PINC PIND
Da Du Deine LED an PORTB dranhast, ist Der Register PINB schon Deine Variable, wo der Zustand der LED gespeichert ist![]()
Wenn Du jetzt den Befehl in tmp,PINB schreibst wird der Zustand deines Portes B in tmp geschrieben, aber noch nichmals das brauchst Du,
es gibt Befehle wie sbic PINB,LED und sbis PINB,LED ,
und was meinst Du was die machen ?
Versuch das Programm jetzt so abzuändern, daß Du mit hilfe einer der Befehle sbic und sbis auskommst.
Dürfte nicht so schwer sein, denke ich, aber dadurch wird Dein Programm noch schmaler, und eleganter!
Gruß Sebastian
Lesezeichen