AVR C Syntax

Gast #2496483
Lesenswert?

Ich hätte mal eine sicher sehr schnell beantwortete Frage (oder auch 2):

Es geht um die Syntax eines AVR C Codes, genauer gesagt um eine if 
Anweisung.

1. Wieso werden diese Schreibweisen nicht richtig umgesetzt?
                    if(PINA0==1);
                    if(PIN & (0<<PINA0));

Es geht hier nur um darum, ein besseres Verständnis für die 
Programmierung zu erhalten.

Mfg Markus Eder
Gast #2496493
Lesenswert?

Weil PINA0 nur als wert 0 definiert ist also steht dort
if(0==1);

PIN ist gar nicht definiert höchstens PINA.

PINA ist nur als Konstante Adresse definiert je nach typ des µCs z.B. 
0x31
Also steht da z.B.
if(0x31 & ( 0<<0));
Moderator Persönliche Seite #2496513
Lesenswert?

Markus schrieb:
> Aber wenn ich jetzt beim durchstepen durch den Programmverlauf PINA0 auf
> High setze würde ja if(1==1) dastehen und trotzdem wird nicht in die if
> Anweisung gesprungen

Nein. PINA0 ist eine Konstante(!) und nicht der Wert des Bits im 
Portregister. PINA0 ist konstant und bleibt konstant 0, denn es 
beschreibt nur die Position des Bits im Register PINA.

Also:

   PINA0  ist immer 0
   PINA1  ist immer 1
   PINA2  ist immer 2
   PINA3  ist immer 3
   ...
   PINA7  ist immer 7

Es ist übrigens ziemlich sinnfrei, die if-Zeile mit einem Semikolon 
abzuschließen. Damit wird im Fall "Bedingung ist wahr" ein leeres 
Statement ausgeführt - also nichts. ;-)

Gruß,

Frank
Gast #2496517
Lesenswert?

Frank M. schrieb:
> Es ist übrigens ziemlich sinnfrei, die if-Zeile mit einem Semikolon
> abzuschließen. Damit wird im Fall "Bedingung ist wahr" ein leeres
> Statement ausgeführt - also nichts. ;-)

sollte ja nur eine Veranschaulichung sein... aber ich wollte für die 
simple Frage jetzt nicht viel Code reinschreiben.
Aber danke für die Hilfe die Erklärung erinnert mich jetzt wieder an 
paar so Dinge die ich schon mal irgendwo so gelesen hab (und ist auch 
leicht verständlich)^^
Gast #2496552
Lesenswert?

cyblord ---- schrieb:
> Nicht das dies schon vorher angemerkt worden wäre. Entweder er liest die
> Posts nicht oder ihm ist nicht klar, dass eine Konstante Konstante
> heißt, weil sich ihr Wert niemals ändert.

Nicht gerade hilfreich, aber egal.
Trotzdem nochmal DANKE, auch für die Geduld (mit jemandem der 
anscheinend seine eigenen Posts nicht ließt...).

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