7-Segmentanzeige mit Atmega8 will nicht

OP #2930872
Hallo, ich bin gerade dabei mich mit uC zu beschäftigen.
Nun nach dem ich weiß wie man eine LED an und ausschaltet und ein delay 
einbaut wollte ich versuchen, eine 7-Seg. Anzeige anzusteuern.

Hier mal der Code um Zahlen anzuzeigen:
#ifndef F_CPU
#define F_CPU 8000000UL
#endif
#include <avr/io.h>
#include <util/delay.h>

void wait_seconds (uint8_t s)
{
  for(;s>0;s--)
  {
    uint8_t ms = 0;
    for(;ms<20;ms++)
    {
      _delay_ms(50);
    }
  }

}
void digit (char z)  //PD1 geht nicht
{
  if (z=1) {PORTD=0x00 | (1<<PD3) | (1<<PD4);}
      //if (z=2) {PORTD=0x00 | (1<<PD7) | (1<<PD4 ) | (1<<PD5 ) | 
(1<<PD2) | (1<<PD0);}

}
int main(void)
{
  DDRD=0xFF;

  while(1)
  {
  digit(1);
  wait_seconds(3);
  PORTD=0x00;
  wait_seconds(3);

  }
}



so... wenn man das jetzt startet Blinkt die 1 auf der Anzeige
wenn ich jedoch die zweite Zeile in der digit funktion wieder 
einbinde(// entfernen) zeigt er mir die 2 an.. obwohl ja immernoch 
digit(1) da steht und so nur der Fall für die 1 zutrifft!?
#2931428
Max B. schrieb:
> gibt es auch einen if ausdruck mit einem = ?
Das "==" hat mit der "if"-Abfrage direkt nichts zu tun. Entscheidend ist 
das Ergebnis. Und das ist "true", wenn das, was in er Klammer passiert 
nicht 0 ist. Wie es dazu kommt, ist völlig egal.

"z = 2" weist z den Wert 2 zu. Damit ist z dann nicht 0 und das Ergebnis 
der "if"-Auswertung ist true.

Du kannst auch direkt true reinschreiben: if(true) oder if(1) oder 
if(!0).
Oder if(z+1) oder if(z).
Alles, was nicht 0 ist, ist true.

HildeK schrieb:
> Wenn du versehentlich "if (2=z)" schreibst, meckert der Compiler.
Und da meckert der Compiler, weil einer Konstanten(2) etwas zugewiesen 
wird. Das geht natürlich nicht. Das gibt aber auch an jeder anderen 
Stelle Mecker.
2 = z;
Geht auch nicht.

mfg.

Antwort schreiben

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