Forum: Mikrocontroller und Digitale Elektronik vorwärtzähler in c programm


von J.Pascal (Gast)


Lesenswert?

ich versucht ein vorwärt zähler in c zu programmieren. für das themas 
microcontreller bin ich eine anfänger. ich habe ein klein programm 
geschrieben aber es fonstioniert nicht richtig es fonstionniert 
überhaupt nicht. deshalb möchte ich das ihr mein algorithme schaut und 
sagt ihr mich was ist falsch drin



#include <avr/io.h>
#include <stdint.h>
#include <util/delay.h>
int main(void){
DDRB = 0xFF;
uint8_t I;
I=0;
schl:
        {

    PORTB = I;
  _delay_ms(1000);
     I++;
  }
 goto schl;

 return 0;
}

danke

von mr.chip (Gast)


Lesenswert?

Hallo

Ja, da ist einiges nicht so gelungen :-)

Du solltest uns vielleicht zuerst mal sagen, was dein Programm überhaupt 
tun sollte und wie es das deiner Meinung nach tut.

Gruss

Michael

von Karl H. (kbuchegg)


Lesenswert?

> _delay_ms(1000);

Schon mal in die Doku zu _delay_ms geschaut?
Da gibt es eine Beschränkung. Du kannst nicht
beliebig hohe Zahlen da hineinstopfen.
Die maximale Verzögerungszeit liegt bei 240/Taktfrequenz_in_Mhz

Wenn du deinen AVR also mit 4 Mhz betreibst, dann
ist die maximale Verzögerungszeit  240/4 also rund
60 Millisekunden.

Wenn dir das nicht reicht, dann musst du halt _delay_ms
in einer Schleife entsprechend oft aufrufen.

  for( j = 0; j < 100; ++j )
    _delay_ms( 10 );

10 * 100 macht wieder 1000 Millisekunden.

>  goto schl;

den goto solltest du dir gleich wieder abgewöhnen oder
besser gesagt: gar nicht erst angewöhnen.

   while( 1 ) {
     PORTB = I;
     for( j = 0; j < 100; ++j )
       _delay_ms(10);
     I++;
   }
}


von J.Pascal (Gast)


Lesenswert?

mein programm soll zaehlen es ist ein 8bit binär zaehler von 0 bis 255 
un es muss ein endlos schleife sein. das programm das ich geschrieben 
habe tut es nicht. Es zählt nich richtig
gruss
J.Pascal

von J.Pascasl (Gast)


Lesenswert?

danke Karl du hast mich sehr geholfen

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
Noch kein Account? Hier anmelden.