A co to w ogóle jest to:
Timer1;
w tym drugim przykładzie ???
Poza tym twoje pytanie powinno brzmieć troszkę inaczej, dlaczego użyty jest taki kod, który zajmuje więcej pamięci Flash, skoro można go napisać prościej i zajmuje mniej miejsca ???
Wtedy odpowiedziałbym ci, że "nie wszystko złoto co się świeci"
a dokładniej mówiąc nie każdy kod w C napisany krócej wykonuje się szybciej. A zwróć uwagę, że to jest obsługa timerów programowych - i trzeba się starać żeby była wykonywana w przerwaniu JAK NAJSZYBCIEJ. I to co widzisz to jest właśnie taka optymalizacja pod kątem szybkości kosztem nieco większego kodu w pamięci FLASH.
W nowej książce będziesz miał BARDZO dobitny przykład takiej optymalizacji kodu procedury obsługi przerwania, które wysyła próbki po I2S do przetwornika DAC TDA1543
....
wiem - pozostaje pytanie "dlaczego?" - no dlatego że jak sam widzisz powołujesz do życia zmienne lokalne a przecież to MUSI wydłużyć nieco kod, za to zysk jest taki, że jakbyś znał asembler i podejrzał co stało się po kompilacji i przeanalizował to okazałoby się, że jest mniej odwołań do pamięci a więcej działań na rejestrach - co znacznie przyśpiesza wykonanie procedury obsługi całego przerwania.
I takich optymalizacji będzie trzeba się powoli uczyć
_________________
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 ]