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



Teraz jest 22 lut 2026, o 02:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 3 kwi 2013, o 22:20 
Offline
Użytkownik

Dołączył(a): 25 gru 2012
Posty: 128
Pomógł: 0

Witam
Zmieniam sobie przyciskami wartość zmiennej d. W zależności czy d jest większe czy mniejsze od 64, zostaje wykonane zadanie A lub B. Załóżmy, że w danym momencie d=65; więc zostanie wykonane zadanie A. Kolejne przyciśnięcie przycisku PLUS spowoduje, że d=66 i znowu zostanie wykonane zadanie A. Jak zrobić, żeby zadanie A zostało wykonane tylko raz dla (d=65;). Dla kolejnych d większych od 65 nie potrzebuję za każdym razem wykonywać zadania A.
Podobnie w drugą stronę dla d malejących.
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: 3 kwi 2013, o 22:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

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


Autor postu otrzymał pochwałę

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2013, o 22:34 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 6
Lokalizacja: Piła
Pomógł: 1

ja bym wstawił dodatkową zmienną np. spr=0, która po wykonaniu zadania A otrzymałaby wartość 1. Dopiero zadanie B zerowałoby tą wartość. W warunku dopisałbym if ((d>64) && (spr==0)) { zadanie A; spr=1;}
Dla warunku z zadaniem B analogicznie jak dla A.

Ledes w twoim przykładzie gdy zwiększymy d do 66 i wrócimy do 65 instrukcja się wykona i tak cały czas może się wykonywać.


Autor postu otrzymał pochwałę

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2013, o 22:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Aha, nie zrozumiałem kolegi, że d może zmieniać się nieprzewidywalnie w górę i dół. Więc trzeba dołożyć flagę jak pisze kolega wyżej która będzie ustawiona na 1 jeżeli program już "wszedł" do tego ifa a na 0 w przeciwnym przypadku i dodatkowy warunek w if-ie sprawdzający flagę.


Autor postu otrzymał pochwałę

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 07:54 
Offline
Użytkownik

Dołączył(a): 25 gru 2012
Posty: 128
Pomógł: 0

Dzięki za odpowiedzi, które utwierdziły mnie w przekonaniu, że bez dodatkowej zmiennej się nie obędzie.

Próbowałem if(d==65) ale problem w tym, że gdy ustawię d=65; to zadanie A (obsługa wyświetlacza LCD) wykonywana jest cały czas i wyświetlacz mruga.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 08:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

A może by wystarczyło wprowadzenie nowej wartości dla zmiennej d, np:

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: 4 kwi 2013, o 11:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

A jak po wykonaniu d=0 znowu d urośnie do 65? Zadanie A będzie wykonane znowu... To nie jest dobra droga...
Zadanie B to samo.

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 14:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

No tak ...... nie spojrzałem na resztę kodu :oops: moja wina ....

To pozostaje tylko flaga ......

------------------------ [ Dodano po: 8 minutach ]

qutrit napisał(a):
to zadanie A (obsługa wyświetlacza LCD) wykonywana jest cały czas


I zawsze będzie mrugał bo jest bez przerwy odświeżany ;) , natomiast jak słyszę słowa lub widzę słowa wyświetlacz LCD to od razu na myśl mi przychodzi timer ........
Z drugiej strony po co wyświetlać coś raz a później już nigdy nie korzystać z wyświetlacza ........

Niech lepiej kolega sprecyzuje co ma zamiar zrobić tymi A i B bo coś mi się wydaje że problem będzie można rozwiązać innaczej ........ ale do tego potzrebne są szczegóły .....



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: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO