vorwärtzähler in c programm

Gast #503343
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
#503347
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++;
   }
}

Gast #503348
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren