Hallo Habe schon ein bischen was in assembler gechriben. aber immer öfters wen ich mir fremdprogramme anschaue finde ich so was: ldi r16, ( 1 << PD5 ) | ( 1 << PD7 ) ldi r16, ( 1 << PD2 ) | ( 1 << PD5 ) | ( 1 << PD7 ) ldi r16, ( 1 << ISC01 ) | ( 0 << ISC00 ) | ( 0 << ISC11 ) | ( 1 << ISC10 ) ldi r16, ( 1 << INT0 ) | ( 1 << INT1 ldi r16, ( 1 << CS00 ) | ( 1 << CS01 ) | ( 1 << CS02 ) | ( 0 << WGM01 ) ldi r16, ( 0 << OCIE0 ) | ( 1 << OCIE1A ) | ( 0 << OCIE2 ) | ( 0 << TOIE0 ) O.K. ldi ist klar r16 auch aber der rest ? was soll das heißen ? bei Atmel habe ich sowas nicht gefunden... gibt des da eine gute seite die das erklärt (deutsch) ? danke
das sind bitshift befehle. (1<< PD5) schiebt eine eins um 5 stellen (weil pd5=5) nach links. | ist bitwise or. bewirkt, dass z.b im erstn befehle die bits pd5 und pd7 gesetzt werden
Hallo Tobi, also ldi R16, (1 << PD5) | (1 << PD7) bedeutet das gleiche wie ldi R16, 0b10100000 Habe ich das jetzt richtig verstanden?
Stimmt genau :) Das mit dem Shiften dient nur der besseren Lesbarkeit, auch werden Fehler vermieden, z. B. wenn man die Bitstellen abzählt um eine 1 zu setzen.
jep, genau. aber benutzt lieber die lange schreibweise der übersichtlichkeit wegen. wird ja schon vom asm berechnet und eingesetzt
mal nen link, recht informativ: http://www.avr-asm-tutorial.net/avr_de/beginner/diraus.html jetzt hab ich aber noch ne frage: wenn ich sbr r16, 1<<5 benutze, dann muss doch dieses "shifting" die umwandlung von bit-nummer zu bit-wert sein?! warum gibt das avrstudio keinen fehler, wenn ich sbr r16, 33 mache? sbr gilt doch nur für ein bit.. 33 wäre ja aber 32 und 1.. dave
Hi ich würde mal vermuten das der Assembler einfach eine Modulo-Operation bei sbr macht. Also implizit etwa sbr r16,33%8. Matthias Matthias
sbr ist eigentlich genau dasselbe wie ori, so viel ich weiss. Somit kannst du also auch mehrere Bits setzen.
sbr = set bits in register ^^^ ist für mehrere. in der ref steht, dass das nur ein OR ist. simulator bestätigt das. sbr r16,33 setzt bit 0 und 5
Hi stimmt. Ist wohl einer der doppelt benamsten AVR Befehle. ORI und SBR haben den selben OPCode und sind daher identisch. Matthias
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.