jak zrobić datę w bascomie?

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
haterkmp
Użytkownik
Posty: 652
Rejestracja: 08 sie 2008, 11:47
Lokalizacja: Wałbrzych

jak zrobić datę w bascomie?

Post autor: haterkmp » 05 kwie 2010, 11:00

witam kolegów i kolezanki
mam pytanie kwestii programistycznej. mianowicie jak zrobić kalendarz w bascomie? chodzi mi o wyświetlanie przy zegarze daty w formacie DD-MM-YY (albo YYYY)? od razu mówię że bez użycia dayoftheyear i tak dalej bo chodzi o attiny2313...

keruseykaryu

Post autor: keruseykaryu » 05 kwie 2010, 15:45

Poszerzyć liczniki HH:MM:SS do YY(YY)-MM-DD-HH:MM:SS. Jak przeskoczy 23:59:59 na 00:00:00 to przeniesienie dodać do DD. Gdzie tu trudność?
No i więcej informacji podaj, bo się czeski film zrobi, i znów będzie dyskusja poza-tematem...

Awatar użytkownika
haterkmp
Użytkownik
Posty: 652
Rejestracja: 08 sie 2008, 11:47
Lokalizacja: Wałbrzych

Post autor: haterkmp » 06 kwie 2010, 13:10

za prosto... styczeń ma 31 dni a luty 28. chodzi mi o to czy są jakieś "bascomowe myki" czy robić to na if`ach i liczyć 4 lata ale to też nie zda egzaminu... chodzi mi o jakiś algorytm na wieczny kalendarz albo stuletni bo są implementacje np w C czy w Pascalu. ale jak to zrobić w bascomie? tutaj mam coś takiego:
dzień tygodnia = ([23m/9] + d + 4 + y + [z/4] - [z/100] + [z/400] - 2 (if m >= 3) ) mod 7

gdzie
[ ] oznacza dzielenie bez reszty z zaokrągleniem w dół
mod - funkcja modulo
m - numer miesiąca (od stycznia = 1 do grudnia = 12)
d - numer dnia miesiąca
z = y - 1 jeśli m < 3,
z = y w pozostałych przypadkach
jak to wcisnąć w bascoma? albo w asm...

[ Dodano: 2010-04-06, 14:20 ]
może inaczej... czy taki tiny2313 poradzi sobie z obliczeniem takiego bądź co bądź skomplikowanego równania? bo modulo liczy i inne funkcje arytmetyczne też. może inny procek?

[ Dodano: 2010-04-06, 14:25 ]
no poza tym jeszcze jakoś bym chciał to wyświetlić w takim formacie DD.MM.YYYY

Awatar użytkownika
Kulpina
Użytkownik
Posty: 2037
Rejestracja: 28 lip 2005, 16:57
Lokalizacja: Sanok
Kontakt:

Post autor: Kulpina » 06 kwie 2010, 13:43

W bascomie się w to nie bawiłem, ale w C takie coś robiłem i powiem, że jest to masakra :D Chyba i w Bascomie nie ma żadnych funkcji do tego... Po prostu pisać ify i tyle :mrgreen: ale kto wie ;) może już ktoś ten problem przed nami rozwiązał

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 06 kwie 2010, 13:48

Bascom może nie chcieć przetrawić tak skomplikowanego równania, ale po rozbiciu bo na kilka prostszych powinno działać bez problemu.
Procesor może mieć problemy z dużymi liczbami.
Do dzielenia są trzy polecenia. Pierwsze dzieli jak kalkulator, ze znakami po przecinku. Drugie daje liczbę, a trzecie resztę jak przy dzieleniu z resztą.

Jeśli ma tu być wyświetlone na LCD, to bez problemu możesz kolejno wysłać do niego zmienne. Pamiętaj, że jeśli liczba jest mniejsza od 10, to przed nią należy wysłać jeszcze zero lub pusty znak.
Jeśli data ma być w formacie DD.MM.RRRR to po co liczyć dzień tygodnia.

Awatar użytkownika
haterkmp
Użytkownik
Posty: 652
Rejestracja: 08 sie 2008, 11:47
Lokalizacja: Wałbrzych

Post autor: haterkmp » 06 kwie 2010, 14:17

no właśnie gdyby miał być LCD to bez problemu jest program w C więc bym się nie bawił. ale ja chce to wysłać na VFD 7-segmentowy i nie znalazłem nic ciekawego. chyba będę się zarzynał na if`ach od np 01.01.1990 albo 2k... zobaczę ile będzie żarło pamięci ewentualnie przy zaniku napięcia wrzucę datę do eeproma albo zasosuje jakiegoś rtc... słyszałem też że całe to "dayoftheyear" w bascomie przy mega8 jest strasznie pamięciożerne... to prawda?

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 06 kwie 2010, 14:17

haterkmp pisze:może inaczej... czy taki tiny2313 poradzi sobie z obliczeniem takiego bądź co bądź skomplikowanego równania? bo modulo liczy i inne funkcje arytmetyczne też. może inny procek?
przetrawi, ale...pod jednym warunkiem
wszystkie operacje musisz zrobić odpowiednio w matematycznej kolejności ale w oddzielnych linijkach. w całości nie policzy za Boga. próbowałem juz podobnie skomplikowanych wzorów matematycznych. wszystko trzeba liczyć oddzielnie żeby miec kolejno wyniki.

Awatar użytkownika
haterkmp
Użytkownik
Posty: 652
Rejestracja: 08 sie 2008, 11:47
Lokalizacja: Wałbrzych

Post autor: haterkmp » 06 kwie 2010, 14:47

o kolejności oczywiście pamiętam ale w sumie myślę co faktycznie mi to da że będę wiedział jaki jest dzień tygodnia... chyba będę ciął if`y od 2000 roku a przetępny rok będzie liczony po prostu kolejną zmienną...
a taki pcf8563 czy jakiś inny potrafi mi dać datę w BCD czyli jakoś można by to wykorzystać... zamiast wywalać zmienne w kodzie dwójkowym z tabeli to mogę dawać przecież BCD na wyświetlacz... trza pokombinować :mrgreen:

ODPOWIEDZ