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
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
> _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++; } }
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.