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



Teraz jest 27 kwi 2024, o 12:10


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
 Tytuł: AVR początki
PostNapisane: 3 cze 2013, o 22:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 mar 2013
Posty: 71
Lokalizacja: Kraków
Pomógł: 5

Na samym początku chciałbym prosić wszystkich o wyrozumiałość ponieważ jestem dopiero początkujący w programowaniu mikrokontrolerów AVR.
Mam następujący problem (przedstawie go możliwie jak najprościej).
Więc przykładowo:
w programie posiadam zmienną x która przybrała akurat wartość 0x1F czyli u mnie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

mam też tablicę wieloelementową która zawiera wartości od 0x01 do 0xFF:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Mam teraz pytanie: w jaki sposób mógłbym sprawdzić to, że wartość mojej zmiennej (która oczywiście w programie może zmieniać swą wartość) jest równa takiemu a nie innemu mojemu elementowi w tablicy, u mnie akurat teraz przykładowo ma on wartość 0x1F. Czyli np.:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

w jaki sposób mógłbym to sprawdzić ?
Będę Wszystkim Bardzo Wdzięczny za pomoc.



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

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

Pętla for po tablicy i porównujesz element po elemencie ze zmienną x. W przypadku zgodności zwracasz indeks tablicy.

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 cze 2013, o 22:24 
Offline
Użytkownik

Dołączył(a): 17 sty 2013
Posty: 327
Lokalizacja: Białystok
Pomógł: 14

jeżeli wiesz z którym elementem tablicy zrób tak:
Kod:
if (x==tab1[0]) LED_ON;


pod 0 podstawiasz o który element tablicy chodzi, jeżeli chcesz sprawdzić wszystkie to jak kolega wyżej pętla for, a zamiast 0 zmienną z pętli



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

Dołączył(a): 09 mar 2013
Posty: 71
Lokalizacja: Kraków
Pomógł: 5

Hmm... myślę że pomysł z pętlą for byłby bardzo dobry, nie bardzo tylko rozumiem w jaki sposób zwrócić indeks tablicy, czy mógłby ktoś poratować jakimś prostym przykładem ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 cze 2013, o 09:30 
Offline
Nowy

Dołączył(a): 09 maja 2013
Posty: 14
Pomógł: 0

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

Jako argument podajesz nazwę tablicy (jest to równoznaczne z adresem jej pierwszego elementu). Potem pętlą for sprawdzasz po kolei czy któryś element tablicy zgadza się z tą wartością, jeśli tak to zawracasz jego indekst, a jeśli żaden się nie zgadza to w ostatnim wykonaniu pętli, na jej końcu zostanie zwrócona wartość -1 (Przykładowo, możesz wybrać inną)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 cze 2013, o 09:46 
Offline
Moderator
Avatar użytkownika

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

adrspo95 ---> bardzo dobry przykład tylko taka mała uwaga, na końcu ten IF

if(i== 14)

jest już nie potrzebny wystarczy samo

return -1

a dodatkowo żeby pamiętać o oszczędności na typach (pamięci RAM) to rezultat funkcji dałbym typu int8_t a nie int

_________________
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: 5 cze 2013, o 10:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 mar 2013
Posty: 71
Lokalizacja: Kraków
Pomógł: 5

Bardzo Panowie Dziękuję za pomoc wszystko już działa jak należy, niemniej jednak pojawił się kolejny problem :( nie za bardzo wiem w jaki sposób "wyciągnąć" wartość z zmiennej i (czyli np. 0x1F) a nie nr. indeksu w momencie kiedy po sprawdzeniu ma taką samą wartość jak druga moja zmienna czyli w tym przypadku 0x1F



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 cze 2013, o 10:37 
Offline
Moderator
Avatar użytkownika

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

A co to znaczy "wyciągnąć" wartość zmiennej ? ... bo teraz to trochę zakręciłeś ;)

_________________
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: 5 cze 2013, o 10:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 mar 2013
Posty: 71
Lokalizacja: Kraków
Pomógł: 5

Chciałbym wartość tej zmiennej czyli np. 0x1F (a nie nr. indeksu ) użyć pózniej w innym miejscu w programie.

------------------------ [ Dodano po: 1 minucie ]

No i wszystko jasne :) Bardzo Dziękuję.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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