Witam!
Jak w temacie...czyli chciałbym uprzejmie prosić osoby, które posiadają większą wiedzę ode mnie o sprawdzenie poprawności kodu w Bascomie, jak i schematu.
Opierając się na kodzie źródłowym pewnego zegarka binarnego, skonstruowanego przez jednego z forumowiczów(Link), skleiłem sobie kod do zegara z wyświetlaczem siedmiosegmentowym LED oraz z obsługą kalendarza. Wyświetlacz ma wspólne katody. Sposób jego multipleksacji wymyśliłem sam, jednak żeby zachować sensowną kolejność, będzie on nieco niżej.
Moje pytanie dotyczy najważniejszych części kodu, co do których działania nie mam pewności.
Cały program jest oparty na podprogramach, czyli tajemnicze elementy bez "Call" to właśnie odwołania do nich
Wszystkie zmienne obsługi DS-a są typu BYTE.
Sposób odczytywania czasu niewiele zmieniłem, zostało dodane tylko dzielenie sekund na dziesiątki i jedności, więc tu mam pewność, że kod działa.
Inaczej ma się już kod odczytu daty, który sam wymyśliłem, jak i kod zapisywania danych.
Odczyt daty:
Zapis wszystkich danych:
Może się pojawić pytanie: czym są tajemnicze funkcje warunkowe odnoszące się do zmiennej Month_century(zawiera informację o miesiącu i w skrajnym przypadku o kolejnym wieku)? Otóż, zgodnie z datasheetem układu:
w takim wypadku do liczby miesięcy dodaje mi się liczba 80. Jest to więc jakby maskowanie i spożytkowanie tego bitu. Umożliwia mi to ustawienie roku 21**, chociaż pewnie ten zegar tyle nie przetrwa.
Ys to setki roku.
Jeżeli o niczym nie zapomniałem, to poniżej daję kod odpowiedzialny za multipleksację.
Przy czym Multiplex_delay_us = Const i wynosi 250 .
Zmienne Digit, Numb i Dpen są koordynatami podprogramu Displ_case.
To chyba tyle, jeżeli chodzi o kod.
Rezystory segmentów wyświetlacza mają wartość 200Ω każdy. Zasilanie bateryjne 3V CR2032.
Zasada działania jest dosyć prosta: Reset układu powoduje odczyt i wyświetlenie(przycisk SHOW). Przycisk SET jest użyteczny przy ustawianiu zegara.
Do schematu mam jedno pytanie...:
http://mirekk36.blogspot.com/2012/04/mikrokontroler-prawidowe-zasilanie.html
Czy naprawdę muszę podłączyć jeszcze pin AVCC
Dziękuję każdemu za odpowiedź i pozdrawiam.
I przepraszam, że się tak rozpisałem.
kbw24
Jak w temacie...czyli chciałbym uprzejmie prosić osoby, które posiadają większą wiedzę ode mnie o sprawdzenie poprawności kodu w Bascomie, jak i schematu.
Opierając się na kodzie źródłowym pewnego zegarka binarnego, skonstruowanego przez jednego z forumowiczów(Link), skleiłem sobie kod do zegara z wyświetlaczem siedmiosegmentowym LED oraz z obsługą kalendarza. Wyświetlacz ma wspólne katody. Sposób jego multipleksacji wymyśliłem sam, jednak żeby zachować sensowną kolejność, będzie on nieco niżej.
Moje pytanie dotyczy najważniejszych części kodu, co do których działania nie mam pewności.
Cały program jest oparty na podprogramach, czyli tajemnicze elementy bez "Call" to właśnie odwołania do nich
Wszystkie zmienne obsługi DS-a są typu BYTE.
Sposób odczytywania czasu niewiele zmieniłem, zostało dodane tylko dzielenie sekund na dziesiątki i jedności, więc tu mam pewność, że kod działa.
Inaczej ma się już kod odczytu daty, który sam wymyśliłem, jak i kod zapisywania danych.
Odczyt daty:
Kod: text
Zapis wszystkich danych:
Kod: text
Może się pojawić pytanie: czym są tajemnicze funkcje warunkowe odnoszące się do zmiennej Month_century(zawiera informację o miesiącu i w skrajnym przypadku o kolejnym wieku)? Otóż, zgodnie z datasheetem układu:
Cytat:The century bit (bit 7 of the month register) is toggled when the years register overflows from 99–00.
w takim wypadku do liczby miesięcy dodaje mi się liczba 80. Jest to więc jakby maskowanie i spożytkowanie tego bitu. Umożliwia mi to ustawienie roku 21**, chociaż pewnie ten zegar tyle nie przetrwa.
Jeżeli o niczym nie zapomniałem, to poniżej daję kod odpowiedzialny za multipleksację.
Kod: text
Przy czym Multiplex_delay_us = Const i wynosi 250 .
Zmienne Digit, Numb i Dpen są koordynatami podprogramu Displ_case.
To chyba tyle, jeżeli chodzi o kod.
Rezystory segmentów wyświetlacza mają wartość 200Ω każdy. Zasilanie bateryjne 3V CR2032.
Zasada działania jest dosyć prosta: Reset układu powoduje odczyt i wyświetlenie(przycisk SHOW). Przycisk SET jest użyteczny przy ustawianiu zegara.
Do schematu mam jedno pytanie...:
http://mirekk36.blogspot.com/2012/04/mikrokontroler-prawidowe-zasilanie.html
Czy naprawdę muszę podłączyć jeszcze pin AVCC
Dziękuję każdemu za odpowiedź i pozdrawiam.
I przepraszam, że się tak rozpisałem.
kbw24