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



Teraz jest 30 mar 2026, o 16:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 17 lip 2013, o 20:17 
Offline
Użytkownik

Dołączył(a): 10 lip 2013
Posty: 93
Lokalizacja: Puławy
Pomógł: 0

Jest coś takiego jak operator trójargumentowy:
?: czyli: pin(cośtam)? wartość jeśli prawda : wartość jeśli fałsz;

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: 17 lip 2013, o 20:42 
Offline
Użytkownik

Dołączył(a): 12 mar 2013
Posty: 34
Pomógł: 0

Cytuj:
Zapis
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
nie daje przecież wartości 1 czy 0 tylko inną w zależności czy użyjemy PD2, PD3 czy jeszcze innej


Co twoim zdaniem zwraca taki zapis?
Opisz bardziej Twój problem, bo go nie rozumiem, staraj się także używać [syntax] przy wklejaniu kodu.

_________________
/*Animus aeger semper errat*/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lip 2013, o 21:06 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

robiw napisał(a):
Zapis (PIND&(1<<PD2)) nie daje przecież wartości 1 czy 0 tylko inną w zależności czy użyjemy PD2, PD3 czy jeszcze innej, więc nie da sie tego zapisu podstawić tak po prostu zamiast jedynki "1" po prawej stronie, czyli (1<<Index).


A właśnie że się da - bo w C to jest jednoznaczne TRUE albo FALSE

i to jest właśnie piękne w C - a nie uświadczysz tego za bardzo w innych językach ...

chyba że źle opisałeś swoje potrzeby

w każdym razie nie ważne czy będzie tak:

if( PIND & (1<<PD2) )

czy tak

if( PIND & (1<<PD3) )

zawsze warunek będzie spełniony zero jedynkowo, czyli albo TRUE albo FALSE nie ważne czy wynikiem wyrażenia w warunku będzie 2,4,8, czy 128 - to zawsze będzie TRUE , a zawsze gdy będzie 0 to będzie FALSE

a od tego już niedaleka droga do użycia ciut bardziej złożonej instrukcji warunkowej

? :

aby pozbyć się IF'a

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lip 2013, o 21:16 
Offline
Użytkownik

Dołączył(a): 12 mar 2013
Posty: 34
Pomógł: 0

Cytuj:
Zwraca 0b00000000 lub 0b00000100 w zależności od stanu wyprowadzenia PD2

no tak, mój błąd...
w takim razie możesz spróbować zrobić:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


wtedy: sprawdzasz stan na PD2, potem przesuwasz bity o PD2 w prawo, przez co uzyskujesz 0b00000001 albo 0x00, potem ustawiasz to na miejsce index.
Nie jestem pewien czy to zadziała i sam jestem ciekaw wyniku :)

_________________
/*Animus aeger semper errat*/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lip 2013, o 21:29 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

robiw napisał(a):
Uuuu. to, to musze przemyśleć, bo mi jakoś dziwnie wygląda


Może i na pierwszy rzut oka dziwnie wygląda ;) ale jak widzisz nie dla Antstatycznego, który zachłysnął się językiem C - i już mu tak zostało - teraz biedak musi się nauczyć z tym żyć ;) Połknął chyba ostatnio za duży kawałek słonia ;)

a na poważnie to bardzo dobra podpowiedź o ile spełnia to założenia twojego

zmienna.index

- niestety popełniasz wciąż błąd - że próbujesz myśleć po bascomicznemu i tłumaczyć coś na bascoma ..... stąd te niepewności

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lip 2013, o 17:32 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

robiw napisał(a):
AS4.18 zapodziało się (to była najlepsza wersja swoja drogą)

Jest ciągle dostępne choć ciężko dostrzec ten link:
http://www.atmel.com/tools/STUDIOARCHIVE.aspx
Przetestuj na AS4.19

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lip 2013, o 19:53 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

GwynBleidD napisał(a):
Ło matko, co za zapis...to warunek z przesunięciem po prawej stronie?


Cytuj:
Zmienna|=( ( PIND&(1<<PD2))==(1<<PD2) ) )<<index;


to się wykorzystuje prawie w każdym języku ;) ... to wyrażenie w czerwonych nawiasach przyjmuje wartość BOOL czyli albo 0 albo 1

inny przykład takich działań to:

zmienna = a > b;

;) zmienna zawsze przyjmie wartość = 1 gdy a większe od b

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



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

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