Hallo, da man Ja nicht dierekt per Sbi oder Cbi auf die Bits des TIMSK registers zugreifen kann geht das ja nur mit out TIMSK, xxx ich möchte aber zum auschalten einzelner bits die anderen nicht verändern da andere Timer auch auf das Register zugreifen. zum einschalten geht das mit: in tempL,TIMSK ori tempL,(1<<OCIE1A) out TIMSK, tempL Das Bit ausschalten geht leider so nicht: in tempL,TIMSK ori tempL,(0<<OCIE1A) out TIMSK, tempL dann habe ich das versucht was auch geht in templ,TIMSK andi tempL, 0B11101111 out TIMSK, tempL gibt es auch noch andere Methoden oder schreibweisen?
Mach dir mal klar, was ORI ist (--> Boolesche Algebra). Dann wird aus > in tempL,TIMSK > ori tempL,(1<<OCIE1A) > out TIMSK, tempL nämlich > in tempL,TIMSK > andi tempL,~(1<<OCIE1A) > out TIMSK, tempL
>Das Bit ausschalten geht leider so nicht:> >in tempL,TIMSK >ori tempL,(0<<OCIE1A) >out TIMSK, tempL >dann habe ich das versucht was auch geht > >in templ,TIMSK >andi tempL, 0B11101111 >out TIMSK, tempL sowas in der Art (kenne mich in ASM nicht aus) also ne eins reinschiften und dann bitweise negieren, das ganze mit und verknüpfen! in templ,TIMSK in temp2,(1<<OCIE1A) neg temp2 andi tempL, temp2 out TIMSK, tempL
Hi
1 | in temp1,TIMSK |
2 | cbr temp1,1<<OCIE1A |
3 | out TIMSK, tempL |
MfG Spess
Gast wrote: > in templ,TIMSK > in temp2,(1<<OCIE1A) > neg temp2 > andi tempL, temp2 > out TIMSK, tempL Kann man machen. Das neg kann man aber auch gleich in (1<<OCIE1A) verrechnen, dazu war die Tilde in meinem Beispiel gedacht.
Hi 'neg' ist falsch. Wenn schon dann 'com'. MfG Spess
ICh mache sowas gerne mit EOR: in temp1,TIMSK ldi temp2, 0b00010000 ;OCIE1A eor temp1, temp2 out TIMSK, temp1 Toggelt das Bit OCIE1A. Das Bit kippt nach jedem Aufruf in die andere Richtung. Grüße Björn
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.