excray napisał: Wybaczcie moje marudzenie ale takie makro wymaga co najmniej dodatkowych dwóch "difajnów". Proponowane "ułatwienie" spowodowało że musimy zamiast 11 znaków wklikać 50 i na dodatek w czasie analizowania skakać po dokumencie aby zobaczyć co oznacza makro a później co oznaczają poszczególne definicje z makra.
Wszystko zalezy, z jakiego edytora korzystasz, wiele dobrych ma autouzupełnianie - po wpisaniu no 3 znaków pojawia się lista wyboru. Idea polega na tym, że kod ma być czytelny, a nie napisany w sposób, który spowoduje, że sam piszący po trzech dniach się nie połapie.
@
htfhere Od opóźnien to jest timer, kod nie powinien być blokujący - sprawdzamy, czy upłynął określony czas i jeśli nie - wracamy do pętli głównej, z ktorej wskoczymy następnym razem i znowu sprawdzimy czy minął odpowiedni czas. Ja to impementuję w ten sposób, że mam stos w pamięci z elementów czterobajtowych - 2 bajty na opóźnienie i dwa bajty na adres w który trzeba skoczyć po upłynięciu danego czasu. Licznik czasu jest zmniejszany w pierwszym elemencie w przerwaniu timera, a pozostałe elementy mają ustawione różnice czasu w stosunku do elementu poprzedającego.
Oto kod zarządcy takiego stosu:
Zaloguj się, aby zobaczyć kod
A to jest komplementarny kod do LCD(zawiera jeszcze trochę dodatków pozwalających na jednoczesne lub alternatywne używanie tych samych linii do innych zadań, lub wręcz wyłaczenie obsługi LCD po wykryciu masy na odpowiednim pinie. Jest tu także feature polegające na reinicjalizacji LCD po odłaczeniu od działającego układu i ponownym podłaczeniu - czasem się przydaje w urządzeniach, w ktorych są wibracje na złaczach):
Zaloguj się, aby zobaczyć kod
Zaloguj się, aby zobaczyć kod
Oczywiście nie jest to kod gotowy do uzycia przez kogoś, kto nie ma zestawu moich makr i bardziej zapadających w pamięci nazw rejestrów podzielonych na przydatność - np. dolna połówka (8 szt.) ma ograniczenia co do trybu natychmiastowego, natomiast swietnie się nadaje jako szybszy magazyn wartości uzytych w przerwaniu rejestrów niż stos.