Hallo, bin dabei das Tutorial AVR GCC durchzulesen. da ich ziemlich schlecht beim Programmierung bin, verstehe ich dieses Code nicht : #define MEINBIT0 0 #define MEINBIT2 2 uint8_t i; extern test1(); // Funkion test1 aufrufen, wenn Bit 0 in Register PINA gesetzt (1) ist i = PINA; // Inhalt in Arbeitsvariable i = i & 0x01; // alle Bits bis auf Bit 0 ausblenden (bitweise und) // falls das Bit gesetzt war, hat i den Inhalt 1 if ( i != 0 ) { // Ergebnis ungleich 0 (wahr)? test1(); // dann muss Bit 0 in i gesetzt sein -> Funktion aufrufen } // verkürzt: if ( ( PINA & 0x01 ) != 0 ) { test1(); } // nochmals verkürzt: if ( PINA & 0x01 ) { test1(); } // mit definierter Bitnummer: if ( PINA & ( 1 << MEINBIT0 ) ) { test1(); } // Funktion aufrufen, wenn Bit 0 und/oder Bit 2 gesetzt ist. (Bit 0 und 2 also Wert 5) // (Bedenke: Bit 0 hat Wert 1, Bit 1 hat Wert 2 und Bit 2 hat Wert 4) if ( PINA & 0x05 ) { test1(); // Vergleich <> 0 (wahr), also mindestens eines der Bits gesetzt } // mit definierten Bitnummern: if ( PINA & ( ( 1 << MEINBIT0 ) | ( 1 << MEINBIT2 ) ) ) { test1(); } // Funktion aufrufen, wenn Bit 0 und Bit 2 gesetzt sind if ( ( PINA & 0x05 ) == 0x05 ) { // nur wahr, wenn beide Bits gesetzt test1(); } // Funktion test2() aufrufen, wenn Bit 0 gelöscht (0) ist i = PINA; // einlesen in temporäre Variable i = i & 0x01; // maskieren von Bit 0 if ( i == 0 ) { // Vergleich ist wahr, wenn Bit 0 nicht gesetzt ist test2(); } // analog mit not-Operator if ( !i ) { test2(); } // nochmals verkürzt: if ( !( PINA & 0x01 ) ) { test2(); } ist es normal das ein Anfänger solches Code nicht kapiert? Fragen : ->Wo wird die Funktion test1() deklariert?oder ist es schon im <avr/io.h> definiert? ->wozu dient "extern"? -> welche Verkürzung ist besser? Please lacht mich nicht aus! :-(((
Also nimm' es nicht persönlich. Wenn man eine Sprache schlecht kann,versteht man nicht viel. Wenn Du in C noch nicht fit bist, hilft ein C Tutorial und lernen. Doppelt blöd ist es natürlich, wenn zusätzlich Du noch nicht so gut den Mikrocontroller kennst.
deklaration test1: ganz oben. Das ist die Deklaration. Was Du suchst ist die Definition, die in dem Beispiel nicht drinsteht und für das Beispiel auch unerheblich ist. extern: bedeutet, dass die Funktion test in einem anderen Source-file definiert ist und hier nur steht wie man sie aufruft Verkürzung: Diejenige, die Du nach einem halben Jahr noch lesen kannst. Ansonsten: gegen schlecht Programmieren hilft nur: üben. Für C üben würde ich einen PC empfehlen, da ist es einfacher, Fehler zu finden als auf dem µC, wo Du im Extremfall nur siehst, dass Du nichts siehst.
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.