Ale natknąłeś się na to co niestety przechodzi z bólem każdy początkujący w C a nie wiesz o pewnej oczywistej rzeczy, którą po raz kolejny wytłumaczę ... bo pewnie w Bluebooku umknęło ?

Do funkcji opóźniających typu _delay_xx() w AVR GCC przekazujemy TYLKO I WYŁĄCZNIE stałe dosłowne. Co ciekawe mogą to być wtedy nawet liczby zmiennoprzecinkowe np: 0.3

Pod żadnym pozorem nie można używać zmiennych a szczególnie jeszcze robić takich obliczeń w nawiasach w miejscu argumentu

... dlaczego i skąd się bierze nagle takie zwiększenie objętości kodu ? ... to dość proste ....
otóż argumentem funkcji jest liczba zmiennoprzecinkowa - która jednak, gdy podamy ją w postaci stałej dosłownej zostaje zawsze zamieniona przez kompilator na liczbę całkowitą i dzięki temu kompilator nie musi dociągać biblioteki do obsługi liczb zmiennoprzecinkowych

to stąd następuje taki przyrost kodu .... Przez dociągnięcie tej biblioteki - stąd podstawowy wniosek że przede wszystkim należy unikać jak ognia liczb zmiennoprzecinkowych - szczególnie w małych prockach .....
No zwykle w tym momencie ktoś się dziwi - to jak to ? w takim razie jak uzyskać zmienną ilość opóźnienia jeśli nie można zastosować zmiennej jako argument - ano można można .... ale z kolei tak (też ten sposób już niejednokrotnie pokazywałem na forum nie tylko w książce)

zobacz:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
jak widzisz wystarczy jedna mała funkcja i po zawodach

wtedy możesz jej użyć tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
bez obaw że ci kod przyrośnie i będzie się coś źle działo.
_________________
zapraszam na blog:
http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj
Kurs EAGLE ] [ mój kanał YT TV
www.youtube.com/mirekk36 ]