If-Anweisung in C

Gast #1116962
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 ;
Gast #1116967
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 :-)
#1116978
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;
}

Antwort schreiben

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