Hallo, in AVR Studio setze ich PINA auf HIGH. Die Abfrage if ( i != 0 ) ergibt doch eine "1", also wahr. Jetzt muss demnach Funktion test() angesprungen werden. Im Simulator wird PINA mit "1" angezeigt. Warum wird der Funktionsaufruf test() übersprungen? Bin neu in C. Fehlt irgendwo ein { oder ; oder sonst was? Nach der if-Abfrage springt der Befehlszähler sofort auf PORTB +=akku; Danke meinen Helfern. Udo #include <avr\io.h> uint8_t i, akku=9; int main( void ) { while(1) { // 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 (logisches und) // falls das Bit gesetzt war, hat i den Inhalt 1 if ( i != 0 ) // Ergebnis ungleich 0 (wahr)? { int test1(); // dann muss Bit 0 in i gesetzt sein -> Funktion aufrufen } akku+=1; PORTB +=akku; .................................................................... Hier geht es weiter in der While-Schleife // FUNKTIONEN test1() und weitere int test1(); { PORTB=0x55; } return 0 ;
Deine Funktion schreibt man so: int test1() { PORTB=0x55; return 0; } und ruft man so auf: test1(); also ohne das int davor. Das Du compilieren konntest, grenzt an ein Wunder :-)
Hi, also der unten stehende Code macht das was du da oben machen willst, allerdings ist mir nicht klar, warum du eine Funktion aufrufst in der PORTB gesetzt wird und 2 Zeilen später setzt du wieder den PORTB neu ??? #include <avr\io.h> void test(); int main( void ) { uint8_t i, akku=9; while(1) { i = PINA; if (i & 0x01) { test1(); } akku+=1; PORTB +=akku; . . . } return 0; } void test(); { PORTB=0x55; }
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.