Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 30 mar 2026, o 22:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
PostNapisane: 12 sty 2014, o 01:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sty 2013
Posty: 426
Pomógł: 36

Witam.
Napisałem prosty programik do zegarka. Moje pytanie brzmi- czy dobrze wykorzystuje mechanizm jakim są funkcje, czy robię jakiś karygodny błąd?
Oto program

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 02:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Witam

Poprzedź zmienne które używasz w przerwaniu i funkcjach
specyfikatorem volatile
np.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


inaczej możesz mieć kłopoty :lol:


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 09:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sty 2013
Posty: 426
Pomógł: 36

Teraz jest ok? Ale bardziej interesuje mnie to, czy dobrze używam funkcji.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 10:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Jeśli chodzi o posługiwanie się funkcjami to jest OK


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 10:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sty 2013
Posty: 426
Pomógł: 36

Dzięki bardzo. O to właśnie mi chodziło :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 11:47 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Użycie funkcji jak najbardziej, ale to co w jednej jest to już niekoniecznie,
dokładnie chodzi mi o tą:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

a bardziej dokładnie chodzi mi o jeden warunek
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Skąd kolega przyjął założenie że przerwanie timera będzie się wykonywać minimalnie 1 raz na obrót pętli while? gdyby wystąpiło 2 razu przerwanie na jednym cyklu pętli while to zmienna "sekundy" mogłaby przyjąć wartość 61 i żaden warunek się nie wykona. Wtedy ta zmienna musiała by być doliczona do 255 i od nowa liczona. Jeśli byś rozbudował program w pętli while to takie coś zdarzało by się częściej. Jeśli program był by docelowo taki jak jest teraz to ok, chociaż wciśnięcie przycisku też może spowalniać pętlę.


Autor postu otrzymał pochwałę

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 13:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sty 2013
Posty: 426
Pomógł: 36

Zapewne lepszym wyjściem będzie zrobienie czegoś takiego?

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 14:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

O ile dobrze rozumiem funkcja zmien() służy do obsługi przycisków,
jeśli tak to musiałbyś zadbać o drgania styków przed
zwiększaniem zmiennych w niej zawartych.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 14:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

kaka0204 napisał(a):
Zapewne lepszym wyjściem będzie zrobienie czegoś takiego?

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Godziny i minuty tak samo bo bedzie ci zle liczylo czas

Wysłane z telefonu


Autor postu otrzymał pochwałę

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 14:34 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

kaka0204 napisał(a):
Zapewne lepszym wyjściem będzie zrobienie czegoś takiego?

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Dokładnie tak. Będziesz miał 100% pewność że nigdy nie przekroczy zakresu. Co do drgań styków na przyciskach to zależy, ja nigdy nie stosowałem eliminacji i zawsze dobrze mi chodziło. Ale oczywiście możesz zamontować ta obsługę. Na blogu Pana Mirka masz projekt gdzie można na kilka sposobów to wyeliminować.


Autor postu otrzymał pochwałę

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 16:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sty 2013
Posty: 426
Pomógł: 36

Cytuj:
O ile dobrze rozumiem funkcja zmien() służy do obsługi przycisków,
jeśli tak to musiałbyś zadbać o drgania styków przed
zwiększaniem zmiennych w niej zawartych.

Tak, to jest tylko "pokazowo", gdyż głównie zależało mi na ukazaniu jak piszę funkcje, a nie co się w nich znajduje :)

majster napisał(a):
Godziny i minuty tak samo bo bedzie ci zle liczylo czas

Ok :)

Jeszcze jedno. Czy można tu gdzieś zastosować funkcję z argumentem? Bo niestety nie za bardzo rozumiem jak takie funkcję robić.

Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 16:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Funkcje z argumentami w zasadzie nie wiele się różnią od funkcji bez argumentów
tylko argumentami :lol:

Taki żarcik

W Twoim przykładzie ciężko użyć takich funkcji choć nie żeby to było nie możliwe
ale przy bardziej rozwiniętym projekcie zaoszczędzisz troszkę bitów pamięci

Na siłę (zaznaczam na siłę) tak dla przykładu można by napisać funkcję wyświetl()
z argumentem
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


może coś ci to pomoże w zrozumieniu argumentów ale uwierz mi
to samo przychodzi z czasem (i przy analizie kodów innych ) sam się tak uczę :)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 17:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

A odwolujesz sie do niej tak:

wyswietl(0,3);

Cyfry 0 i 3 zostana podstawione w miejsce lcd_locate(0,3);

Wysłane z telefonu


Autor postu otrzymał pochwałę

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2014, o 17:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sty 2013
Posty: 426
Pomógł: 36

W sumie niczym innym się ona nie różni do lcd_locate() :)
Dzięki za pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO