paluch_gda napisał:
Ogólnie rzecz biorąc działa, ale nie mogę zaimplementować zatrzymania/uruchomienia odliczania w podprogramie Zegar:
oraz jak zrobić aby np po ustawieniu Ustawczas ponad 60 sekund pokazywał mi 1min i cośtam sekund i pokazywał to odpowiednio na lcd.
Właśnie podczas pisania wpadłem na to że gdy Jakiczas jest > 60 then Minuty +1 - to chyba to? Ale jak to odliczyć w dół?
Aby uniknąc przypadkowych błędów przy kontrolowaniu układów czasowych (w ogólności timerów) praktycznie jest posługiwac się tyko jedną zmienną ( np. "Tx") i wyrażoną w przyjętej jednostce czasu; np. w tym przykładzie w sec., nie ważne ile tego jest (tu zapomnij na chwilę że istnieją minuty).
Przy kontrolowaniu jakiegoś urządzenia możesz stosowac jedną z dwóch metod:
1. Zaprogramowaną wartośc czasu (ilośc sec.) wpisujesz do tej zmiennej (Tx) jednocześnie włączasz urządzenie. Co 1sec. decrementujesz zmienną Tx, a gdy ona osiągnie "0" wyłączasz urządzenie.
2. Druga metoda jest odwrotna: Wyzerowaną zmienną Tx incrementujesz co 1 sec i porównujesz z wartością zadaną. W momencie ich zrównania, wyłączasz urządzenie.
Jeżeli ten czas zechcesz przedstawic na display w postaci minut i sec. (np 25:04 sec), to będziesz potrzebował te wartości czasów w odpowiedni sposób sformatowac do tego tylko celu, pozostawiając zasadnicze ustawienia w niezmienionej formie. Zwykle taki process wymaga wprowadzenia dodatkowych zmiennych i relatywnie prostych zabiegów rachunkowych.
Tu "Timer" mam na myśli softwarowy process odliczania czasu; nie należy mylic z hardware Timer0, 1,lub 2, który zostaje wykorzystany do odmierzania 1 sec.
Poniżej masz przykładowy process programowania zadanej wartości timera, który możesz 'przerobic' i powtarzające sie elementy wykorzystac do programowania zakresu temperatur pracy układu (np. wielostopniowe "menu"), oraz do wyświetlenia upływu czasu albo pozostałej wartości czasu przed wyzerowaniem.
Zaloguj się, aby zobaczyć kod
e marcus