Programmgröße?

Gast #1515455
Lesenswert?

Hallo, allerseits!

Ich habe (um eine grobe Software-PWM zu programmieren [und um das 
Prinzip dahinter zu verstehen]) mal folgendes programmiert:
1
#include <avr/io.h>
2
#include <util/delay.h>
3

4
int main(void){
5
DDRB=0xff;
6
char a=0;
7
char b=10;
8

9

10
while(1){
11

12
for (char c=0;c<10;c++)
13
  {
14

15
    PORTB=255;
16
    _delay_ms(a);
17
    PORTB=0;
18
    _delay_ms(b);
19
    
20
  a++;
21
  b--;
22
  } 
23
for (char c=0;c<10;c++)
24
  {
25
  
26
    PORTB=255;
27
    _delay_ms(a);
28
    PORTB=0;
29
    _delay_ms(b);
30
  
31
  a--;
32
  b++;
33
  }
34
}
35
return 0;
36
}

Das Programm macht genau was es soll, nämlich ein paar LEDs am PORTB 
ein- und ausfaden lassen. Allerdings bläst der Compiler das Programm 
ganz schön auf; für diese wenigen Schleifen gehen schonmal 4 KB ins Land 
:(

Woran könnte das ligen? am Compiler? (Ich habe -Os als Optimierung an)

Ich benutze das AVR-Studio in Version 4.13.

Danke für eventuelle Antworten!

Gruß,
NrDesign
Gast #1516594
Lesenswert?

Ich habe den Code jetzt abgeändert, nun klappt alles.
[code}
#include <avr/io.h>
#include <util/delay.h>

void delay(char zeit) {
for (char x=0;x<zeit;x++)
 {
_delay_ms(1);
}
}
int main(void){
DDRB=0xff;
char a=0;
char b=10;



while(1){
for (char c=0;c<10;c++)
  {

    PORTB=255;
    delay(a);
    PORTB=0;
    delay(b);

  a++;
  b--;
  }
for (char c=0;c<10;c++)
  {

    PORTB=255;
    delay(a);
    PORTB=0;
    delay(b);

  a--;
  b++;
  }
}
return 0;
}
[/code]

Vielen Dank für eure Tipps!

Gruß,
NrDesign

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