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
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));
> PINA ist nur als Konstante Adresse definiert
stimmt natürlich nicht da wird noch ne input oder output Operation
gemacht.
if(inp(0x31) & ( 0<<0));
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
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
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)^^
Frank M. schrieb: > Nein. PINA0 ist eine Konstante(!) 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.
cyblord ---- schrieb: > Frank M. schrieb: > >> Nein. PINA0 ist eine Konstante(!) > > Nicht das dies schon vorher angemerkt worden wäre. Weiß ich, habs gelesen. Aber manchmal muss man etwas wiederholen (und es auch mit einem besonderen Satzzeichen (!) kennzeichnen), damit es über den langen Weg vom Auge ins Gehirn auch ankommt ;)
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...).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.