Hallo habe folgendes kleines Problem Ich versuche einen Timer zu bauen der von einer vorgegebenen Zeit bis 0 runterzählt. Ich setze den Timer so auf ldi r16, 0 out TCCR1A, r16 ori r16, (1<<WGM12) out TCCR1B , r16 Starte in mittels eines Pushbuttons in r26, TCCR1B ori r26, (1<<CS12) out TCCR1B, r26 Das klappt! Jetzt möchte ich ihn so stoppen in r26, TCCR1B ori r26, (0<<CS12) |(0<<CS11) |(0<<CS10) out TCCR1B, r26 Das klappt nicht (Kontroll-LED blinkt munter weiter) Wo ist der Denkfehler?
>Das klappt nicht (Kontroll-LED blinkt munter weiter) > >Wo ist der Denkfehler? 1 oder 0 ist immer noch 1;)
Peter Jänsch schrieb: > ori r26, (0<<CS12) |(0<<CS11) |(0<<CS10) überlegt doch mal wie ein "oder" arbeitet 1 or 0 = 1 du kannst also mit einem oder niemals ein bit löschen!!! (versucht mal mit UND)
Peter Jänsch schrieb: > Wo ist der Denkfehler? Das du denkst das Gegenteil von Wert OR ( 1 << Bit ) wäre Wert OR ( 0 << Bit ) Hinweis: wenn man eine 1 um zb 4 Stellen nach links schiebt, erhält man eine Zahl in der genau das 4. Bit auf 1 gesetzt ist. Wenn man aber eine 0 um zb. 4 Stellen nach links schiebt, erhält man .... immer noch 0. Eine 0 kann man schieben sooft und in welche Richtung man will, sie bleibt immer 0. Bitmanipulationen
Oha da hatte ich wohl eine totale Blockade!!! Mit UND gehts. Natürlich Danke für die kleinen Schläge auf den Hinterkopf
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.