Probleme beim Binär hoch bzw runter zählen

Gast #3492803
Lesenswert?
• ▲
▼
1
#include <avr/io.h>
2
#include <util/delay.h>
3

4
void ioinit(void);
5

6
// Hauptprogramm
7
int main(void) {
8
    unsigned char i;   
9
 int zaehler=1;
10
    ioinit();   
11
 
12
    // Endlosschleife
13
    while (1) {
14
      
15
      if(zaehler==0)
16
    {
17
      do {
18
        PORTC = i;
19
        i++;
20
        if(i ==254){zaehler=1;}
21
      }while(zaehler==1);
22
    }
23
    
24
      if(zaehler==1)
25
    {
26
      do 
27
      {i--;
28
        PORTC = i;
29
        
30
        if(i ==1){zaehler=0;}
31
      } 
32
      while(zaehler==0);
33
    }
34
    
35
    }   
36
 
37
    return 0;
38
}
39
 
40
// Initialisierung
41
void ioinit(void)
42
{
43
    DDRC = 0xff;    // PortD als Ausgang deklarieren
44
    PORTC = 0x00;   // Ports auf LOW schalten
45
    
46
}


Juten Abend, ich weis es ist bestimmt ganz simple, nur ich hänge schon 
seid 2 stunden dran :( ich möchte port c binär hoch und runter zählen, 
nur das automatische runter bzw hoch zählen klappt nicht, entweder er 
zählt standig nur hoch oder nur runter, jenachdem was ich ihm als 
startwert für den zaehler vorgebe
Gast #3492823
Lesenswert?
• ▲
▼
1
if(zaehler==0)
2
    {
3
      do {
4
        PORTC = i;
5
        i++;
6
        if(i ==254){zaehler=1;}
7
      }while(zaehler==1);
8
    }


wenn i == 254 setzt du zaehler auf 1, anschließend wird die Bedingung 
der do-while Schleife geprüft (zaehler==1), die dadurch 'true' ist.
--> Endlosschleife in der do-while
Schmeiß die do-while Schleifen mal raus, die brauchst du eigtl nicht.
Genauso kannst du dir i sparen und direkt PORTC hochzählen.


Probier mal ob dieser Code funktioniert:
1
while(1)
2
{
3
   if(zaehler==0)
4
    {
5
        if (PORTC < 255)
6
            PORTC++;
7
        else
8
            zaehler = 1;
9
    }
10
    
11
      if(zaehler==1)
12
    {
13
        if (PORTC > 0)
14
            PORTC--;
15
        else
16
            zaehler = 0;
17
    }
18
}



lg
Chris
Gast #3492838
Lesenswert?
• ▲
▼
das klappt wunderbar, sorry, ich habe bisher nur mit dem verfluchten 
arduino programmiert und versuche jetzt auf "normales" c umzuschwenken 
;) das der fehler so simple ist hätte ich echt nicht gedacht. vielen 
vielen dank :)

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.