AVR C Syntax

Gast #2496483
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
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));
Gast #2496505
Uwe schrieb:
> Weil PINA0 nur als wert 0 definiert ist also steht dort
> if(0==1);

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
Moderator Persönliche Seite #2496513
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
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
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

Eine eigene Frage? Dieser Thread ist über 14 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.