7-Segmentanzeige mit Atmega8 will nicht

OP #2930872
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.