Hallo zusammen,
bin gerade dabei mein altes Canda Starterkit-Board zu entsorgen
und verbaue damit auch einen alten Atmel 90S8515 ...
Lange rede kurzer Sinn wenn ich das folgende Code segment
verwende sind das mal locker 4000 Bytes die der Flash mehr
braucht...
Mag ein Anfängerfehler sein, doch irgendwie kapier ich's nicht
Wo braucht der soviel Speicher ?
(der restliche Code ist erheblich grösser braucht aber
summa summarum nur 2600 bytes)
Macht der die setLed routine inline ? (Compiler optimierung steht bei
-Os)
1 | void setLed(uint8_t delay,uint8_t bit1,uint8_t bit2)
|
2 | {
|
3 | PORTB=0xff;
|
4 | PORTB&= ~ ( 1 << bit1);
|
5 | if ( bit2 < 8 )
|
6 | {
|
7 | PORTB&=~(1<< bit2);
|
8 | }
|
9 | while (delay > 100 )
|
10 | {
|
11 | _delay_ms(100);
|
12 | delay-=100;
|
13 | }
|
14 | _delay_ms(delay);
|
15 | }
|
16 |
|
17 | void animate1(void)
|
18 | {
|
19 | uint8_t i;
|
20 | for ( i = 0 ; i < 4 ; i++ )
|
21 | {
|
22 | setLed(200,0,7);
|
23 | setLed(200,1,6);
|
24 | setLed(200,2,5);
|
25 | setLed(200,3,4);
|
26 | }
|
27 | }
|
28 |
|
29 | void animate2(void)
|
30 | {
|
31 | uint8_t i;
|
32 | for ( i = 0 ; i < 4 ; i++ )
|
33 | {
|
34 | setLed(200,0,1);
|
35 | setLed(200,1,2);
|
36 | setLed(200,2,3);
|
37 | setLed(200,3,4);
|
38 | setLed(200,4,5);
|
39 | setLed(200,5,6);
|
40 | setLed(200,6,7);
|
41 | setLed(200,7,0);
|
42 | }
|
43 | }
|
Helft mir mal bitte auf die Sprünge - Danke