wo kann ich Details zu Assembler finden (evtl. Tutorial)

OP #1087334
Lesenswert?
• ▲
▼
Hallo,

seit ein paar Tagen bin ich stolzer Besitzer eines STK500 und fang jetzt 
an die berühmten Lämpchen blinken zu lassen usw. . Bei einigen Listings 
ist mir aufgefallen, dass ich bestimmte Bits eines Registers anscheinend 
so setzen kann:

; ADC initialisieren: Single Conversion, Vorteiler 128

    ldi     temp1, (1<<REFS0)                   ; Kanal 0, interne 
Referenzspannung 5V
    out     ADMUX, temp1
    ldi     temp1, (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0)
    out     ADCSRA, temp1

die Möglichkeit bistimmte Bits im ADCSRA so zu setzen ist mir nicht 
bekannt. Gibt es irgendwo im Netz eine Seite wo man solche Sachen (und 
vielleicht noch andere nützliche) nachlesen kann oder vielleicht ein 
Buch wo das erklärt wird?

Danke!
Persönliche Seite
Lesenswert?
• ▲
▼
@ Roger

Atmel hat die Datenblätter zu den AVRs online und den Assembler 
Instruction Set mit der Beschreibung, welche Assemblerbefehle verstanden 
werden. Das AVR Tutorial wurde ja schon genannt. In der Hilfe vom 
AVR-Studio sind auch Hinweise.

Bei den Assemblerbefehlen sind nur bestimmte Kombinationen von Anweisung 
und Operanden möglich. Das betrifft hier den Fall, wie man Konstanten in 
ein Prozessorregister schafft (z.B. mit ldi "LoaD Immediate").

ADCSRA wird zwar als Register bezeichnet, aber es ist genau genommen 
kein Prozessorregister, sondern ein im Speicherbereich abgebildetes 
Register der Hardwareperiferie.

Nach ADCSRA wird hier mit OUT geschrieben (je nach Lage des Registers im 
Speicher ist ggf. ein anderer Befehl nötig). Bei Out ist aber die 
direkte Angabe des Wertes als Operand nicht erlaubt, daher oben der 
Umweg über temp1 als Arbeitsregister.
Gast
Lesenswert?
• ▲
▼
Durchblättere doch einfach mal die Hilfe des AVR-Studios. Da gibt es 
Kapitel über Direktiven, Operatoren des Präprozessors und Vieles mehr. 
Sämtliche erforderlichen Informationen sind da drin. Einfach mal etwas 
drin "surfen".

~
Gast
Lesenswert?
• ▲
▼
>aber da steht das oben genannte leider auch nicht drin.

Ohne jetzt erkannt zu haben, worauf Deine Frage genau abzielt:

Im AVRStudio4 Menupunkt Hilfe --> AVRTools UserGuide

Dort Inhalt --> AVR Assembler --> User's Guide --> Expressions

Dort steht (unter anderem), was "<<" und "|" bedeuten.

Am bestens liest Du aber diesen User's Guide komplett. So viel ist es 
gar nicht, und dann kann Dich nix mehr erschüttern ;-)

Die Bezeichnungen der Bits "ADEN" und der Register "ADCRS" etc. kannst 
Du dem Register Summary ganz hinten im Datenblatt Deines Controllers 
entnehmen. Definiert sind die Kürzel in der DEF-Datei (z. B. M8.DEF für 
den ATmega8), die Du per Include in Deine Sourcedatei einbindest. Tipp: 
Mal im Editor öffnen und studieren.

Zu der Notation

ldi temp1, (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0)

gibts übrigens kaum eine bessere Alternative, weil man so wunderbar 
direkt sieht, welche Bits gesetzt sind, und weil man nur die 0 oder 1 an 
der passenden Stelle in eine 1 bzw. 0 zu verwandeln braucht, wenn man 
mal ein Bit ändern will.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.