Tak zrobię. Przy okazji - już teraz zdradzę zaplecze swojego pytania. Kilka (naście?) lat temu (kiedy będąc "wolnym strzelcem" miałem jeszcze na to czas) realizowałem sporo projektów na AVR-ach przy użyciu kompilatora Basica (Bascom AVR). Wśród nich znalazła się również ta centraalka alarmowa ->
https://serwis.avt.pl/manuals/AVT5252.pdfPo 10 latach sięgnąłem po nią, bo dzieciak zażyczył sobie alarmu do pokoju. Po wspomnianych 10 latach robię upgrade firmware-u
bo trzeba wprowadzić tryby pracy (przynajmniej rozdział na biuro i sypialnię dziecka) oraz obsługę wielu użytkowników (przynajmniej dziecko, mama, tata). I jeszcze kilka innych bajerów.
W swoich prostych urządzeniach (za czasów Bascoma) nie posiłkowałem się funkcjami. Wszystko oparte było na sub-ach (procedurach) i call-owaniu do nich. Ponadto operowałem wyłącznie na zmiennych globalnych. Być może Bascom wspierał funkcje, a jeśli funkcje, to może i podział na zmienne lokalne i globalne. Nie korzystałem z tego. Optymalizacja kodu leżała zatem w moich rękach. Zmienne starałem się deklarować jako możliwie uniwersalne, i jeśli jakaś nie była krytyczna, używałem jej wielokrotnie w różnych procedurach. Wiedziałem, że jeśli wykonuje się dana część kodu, w danym momencie, "współdzielenie" zmiennej nie będzie miało złych następstw (a pamięć mikrokontrolera była wykorzystywana w miarę, na moje możliwości, optymalnie).
Z innego z kolei projektu pamiętam, że próbowałem duży plik .bas podzielić na osobne pliki, opcjonalnie załączane (korzystając z Bascomowego dobrodziejstwa #include). Pamiętam, że z nieznanych mi wtedy przyczyn (zdaje się, że mimo poprawnej kompilacji), nie chciało mi działać to poprawnie. Przeniesione na powrót do jednego dużego pliku .bas znów wszystko zaczęło działać poprawnie.
C wraz z dobrodziejstwem tworzenia funkcji, z całym inwentarzem zasięgu zmiennych i możliwości wypychania funkcji do zewnętrznych plików - bibliotek, pozwoli uczynić kod dużo bardziej przejrzystym, zwięzłym i optymalnym. I choć siadając do kodu, który pisałem 10 lat temu, nie stanowi dziś dla mnie problemu nawet mocne przemodelowanie całości (widać, to co pisałem miało swój porządek, ręce i nogi), to korci mnie, by przenieść kod (choćby w celach ćwiczebnych) z basica do C, przy okazji stworzyć osobną bibliotekę z wszelakimi funkcjami przydatnymi w budowaniu centralek alarmowych), tak, by główny kod, korzystający z tej biblioteki stał się maksymalnie przejrzysty i zwięzły, a modernizacja firmware-u stała się jeszcze prostsza i przyjemniejsza.
PS. Jeśli zamieszczenie linku do .pdf-a koliduje z regulaminem, link usunę (dajcie znać proszę).
Pozdrawiam
Mariusz