Forum: Compiler & IDEs AVR C-Programmierung > logischer (Bit-) Operationen?


von Werner D. (dorni)


Lesenswert?

Jeder Anfang ist schwer!

Anleitungen und Literatur zu C sind ja vielfach zu finden. Doch wenn es 
zur Controller-Schnittstelle geht, fehlt mir noch ein Nachschlagewerk!
Wo finde ich eine Erklärung wie z.B. zu diesem Befehl:

    PORTD=~k;

oder

for(i==; i<KMAX;i++)  _delay_loop_2(DELAY_CNT);

Der for-Befehl ist noch OK, aber _delay . . . . .

von Uhu U. (uhu)


Lesenswert?

PORTD=~k

~ ist die bitweise Negation: ~0xf0 ergibt 0x0f

_delay_loop_2(DELAY_CNT)

ist entweder eine Funktion, oder ein Macro, dem der Parameter DELAY_CNT 
übergeben wird.

von Hegy (Gast)


Lesenswert?

Da hättst du etwas mehr zu sagen sollen, womit du rumkachelst. Wird wohl 
der AVR-GCC sein.

PORTD=~k;
heißt (s. Datenblatt), daß alle 8 Pinne des Ports D (PD0...PD7) mit dem 
invertierten (~) Wert von Var. k beschrieben werden. Die Bitoperation 
'~' sowie !, |, & usw. steht in jeder C-Literatur. PORTD und PD0 und 
andere controllerspezifische Eigenarten und Bezeichnungen stehen im 
Datenblatt und wurden so in die C-Library übernommen.

Und beim Thema C-Library bzw. Header-Files, kukk dir mal die Headerfiles 
"von innen" an. Da steht dann auch in ..../avr/utils/delay.h das 
_delay_loop_2() erklärt. Es ist eine Verzögerungsschleife (aktives 
Warten), die DELAY_CNT Milisekunden wartet. Wertebereich von 
_delay_loop_2() s. Headerfile oder hier:
http://www.nongnu.org/avr-libc/user-manual/group__util__delay.html

Wichtige Links, durchsehen lohnt auf jeden Fall!
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
http://www.nongnu.org/avr-libc/
http://www.mikrocontroller.net/articles/Linksammlung#C

von Werner D. (dorni)


Lesenswert?

Danke für Eure Hilfe.
Hat mir weitergeholfen auch wenn man auch schon auf so mancher 
Internetseite war.

Bei dieser Gelegenheit hab ich noch weitere interessante Seiten 
gefunden:

http://www.wachtler.de/ck/Inhalt.html
http://www.netzmafia.de/skripten/ad/thomas-c/

Noch frohe Ostern
Werner

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
Noch kein Account? Hier anmelden.