Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

atmega168 / Bascom - Zegar PCF8563 i kilka alarmów

Elektronik_Kraków 01 Wrz 2014 22:57 987 0
  • #1 01 Wrz 2014 22:57
    Elektronik_Kraków
    Poziom 13  

    Witam
    Ma zegarek na Atmega 168+ PCF8563 + wyświetlanie przez rejestr przesuwny.

    Chciałem do tego dodać alarmy ( 5 alarmów ), z tym, że każdy alarm może być ustawiony na więcej niż jeden dzień tygodnia. Wzorowałem się na moim starym, kupionym 22 lata temu budziku, który ma program zapisany w pamięci EPROM i układ zaczynający się od D80... W każdym razie, jak dało się radę wtedy, to teraz też powinno dać.

    Wymyśliłem coś takiego:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Generalnie kod działa, jeśli ręcznie ustawię w programie przed skompilowaniem, ale mam problem ze zrobieniem menu, w którym ustawiam dni tygodnia, gdy ma się alarm włączyć.
    Zmienna Alarm1 określa, w które dni ma się dany alarm włączyć. Czyli:
    Alarm1.1 poniedziałek
    Alarm1.2 wtorek
    Alarm1.3 środa

    Zakładam,że będą do ustawień trzy przyciski ( lub z pilota )
    wejście z funkcję oraz przejście do następnej (1)
    zwiększanie wartości zmiennej (2)
    wpisanie wartości zmiennej ( 3)
    Czyli wybieram numer dnia tygodnia (2), wpisuję wartość (3), znowu wybieram numer dnia tygodnia (2) i znowu wpisuję(3). Tak więc każdy alarm może się uruchamiać w jeden lub więcej dni.

    Mam zmienną Dzien_rotate, która w założeniu ma się zwiększać od 1 do 7,
    nie wiem jak "połączyć" jej wartość z odpowiednim bitem alarmu ( czyli dniem ). Coś, jakby rotacja bitami, przesuwanie
    Czyli chodzi mniej więcej o to:
    wybrałem dzień 1
    Dzien_rotate = 1 - Alarm1 = &B00000010
    za chwilę dodałem dzień 3
    Dzien_rotate = 3 - Alarm1 = &B00001010

    Drugi problem, to wymuszenie, aby po naciśnięciu przycisku wyświetlał najbliższy alarm, czyli, dzisiaj jest dzień 1, godzina 22:52, to ma wyświetlać alarm np. z 23:50, albo jutrzejszy, a nie np. z piątku. Zapewne trzeba zrobić porównanie dnia oraz godziny i minuty.

    0 0