uC C-Programmierung Port setzen

#3424638
Lesenswert?

Martin Fischer schrieb:
> X hat den Wert 5...
> Ich kenne mich noch nicht so gut mit Bit-Rechnung und so aus...wie geht
> das?

So wie alles andere auch.

Eine Zuweisung ist eine Zuweisung. Das komplette Ziel (in diesem Fall 
eben ein Register) wird mit einem neuen Wert belegt.


Denk nicht so kompliziert.
1
  a = ....  neuer Wert       a kriegt als ganzes einen neuen Wert
2

3
  a |= ( 1 << BitNr );       das Bit 'BitNr' wird gesetzt (auf 1)
4
  a &= ~( 1 << BitNr );      das Bit 'BitNr' wird gelöscht (auf 0)
5

6

7
  a |= ( 1 << BitNr1 ) | ( 1 << BitNr2 ) ...  die Bits BitNr1, BitNr2 werden gesetzt

eben das kleine Einmaleins in der µC-Programmierung.
Gast #3424653
Lesenswert?

>Ich habe nur ein c++ Buch, ist das kompatibel?

Was die Grundlagen der Bitmanipulation betrifft, ist das bei C und C++ 
das selbe.

Allerdings stehe ich dem Argument nahe, das heisst, dass man erstmal C 
lernen soll ehe man C++ lernt.

Lies erstmal das Tutorial.
OP #3424673
Lesenswert?

Ja, außer BitManipulation...wozu brauchte ich das schon vorher?

"PB1" ist typ char, oder?
also die Bezeichnung?

und um die zu setzen dann: DDRB |= ( 1 << PB1 ) - PB1 Output
DDRB |= ( 0 << PB2 ) - PB2 Input

und beide werden NAcheinander gesetzt und ich kann das auch so in zwei
Zeilen schreiben?
(Firma: Schweigstill IT) Persönliche Seite #3424702
Lesenswert?

Martin Fischer schrieb:
> Aber wozu ist das & und nicht der | davor bei:DDRB &= ~( 1 << PB2 ) -
> PB2 Input

Lies gefälligst entweder Dein C++-Buch oder den schon mehrfach erwähnten 
Artikel zum Thema Bitmanipulation! Bei Deinem derzeitigen Wissensstand 
macht es überhaupt keinen Sinn, Dir noch irgendetwas über Programmieren 
oder Microcontroller zu erklären.
Gast #3424764
Lesenswert?

Georg G. schrieb:
> Die Bitpositionen mit "1" werden Ausgang, die mit "0" werden Eingang.

Falls die Registerbezeichnung DDR der Namensgebung von Atmel folgt, 
stimmt das (z.B. ATmega..). Bei den PICs ist es genau umgekehrt. Eine 
"1" im Datenrichtungsregister schaltet den Pin als Input, eine "0" als 
Output.
#3424828
Lesenswert?

Michael schrieb:
> Georg G. schrieb:
>> Die Bitpositionen mit "1" werden Ausgang, die mit "0" werden Eingang.
>
> Falls die Registerbezeichnung DDR der Namensgebung von Atmel folgt,
> stimmt das (z.B. ATmega..). Bei den PICs ist es genau umgekehrt. Eine
> "1" im Datenrichtungsregister schaltet den Pin als Input, eine "0" als
> Output.

Schön. Aber verwirr ihn nicht noch mehr. Er hat einen Atmega8. Der ist 
allerdings gerade im A...

mfg.
Gast #3425075
Lesenswert?

Martin, machst du jetzt zu jedem Einzelschritt einen Thread auf?
RTFM (read the f***ing manual)

Langsam nervst du wirklich.
Arbeite das Tutorial durch und lies den verdammten Scheiß auch, den die 
Leute dir posten und verlinken!

Ehrlich... was willst du bei Jugend Forscht???
#3425106
Lesenswert?

Martin,
ich will dich mal was fragen:
Du liest nicht die vorgeschlagenen Artikel, auch keine Bücher, hast 
sogar Angst deine Adresse per PN zu verschicken um ein oder mehrere 
Geschenke zu bekommen  (hatte da sogar vor dir  den mySmartUSB light 
dabei zu packen), nimmst absolut keine. Rat an, außer er liegt dir. 
Also, was willst du hier?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren