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



Teraz jest 22 kwi 2026, o 13:18


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 19 ] 
Autor Wiadomość
PostNapisane: 12 kwi 2014, o 20:27 
Offline
Nowy

Dołączył(a): 08 mar 2014
Posty: 24
Pomógł: 0

Witam, mam prośbę aby ktoś wytłumaczył o co chodzi z makrami upraszczającymi dostęp do portów. Mając taką sytuację jak poniżej:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Nie rozumiem o co tu chodzi. Czy to jedynie robi wyjścia czy coś jeszcze, ponieważ ja widzę to tak:
DDR(LCD_D7PORT) |= (1<<LCD_D7);
jest jednoznaczne z
DDRC |= (1<<5);
Więc kolejna moja wątpliwość, czy 5 oznacza PC5... ??

Kod źródłowy umieszczaj w znacznikach synax = c ok? //kila



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2014, o 20:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 lut 2013
Posty: 376
Lokalizacja: Kłopoty-Stanisławy
Pomógł: 33

po pierwsze - primo - kod w syntax=c

po drugie - primo - post974.html

;)

_________________
50 znaków Atnela ....



Ostatnio edytowano 12 kwi 2014, o 20:36 przez acid3, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2014, o 20:35 
Offline
Użytkownik
Avatar użytkownika

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

Zobacz ten temat
http://forum.atnel.pl/post974.html#p974

------------------------ [ Dodano po: kilkunastu sekundach ]

No i mnie wyprzedził :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2014, o 21:00 
Offline
Nowy

Dołączył(a): 08 mar 2014
Posty: 24
Pomógł: 0

Tyle, że ten post mi niewiele mówi, czytałam go już wielokrotnie ale nie rozumiem... ;/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2014, o 21:05 
Offline
Moderator
Avatar użytkownika

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

karwacka9 napisał(a):
Tyle, że ten post mi niewiele mówi, czytałam go już wielokrotnie ale nie rozumiem... ;/


to może zacznijmy od najważniejszego pytania - a wiesz jak działa #define w C ? na jakiej zasadzie tworzy się zwykłe makra ?

_________________
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: 12 kwi 2014, o 21:07 
Offline
Nowy

Dołączył(a): 08 mar 2014
Posty: 24
Pomógł: 0

Tworzy się w ten sposób że piszemy #define X 10 wtedy do x=10



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2014, o 21:17 
Offline
Moderator
Avatar użytkownika

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

karwacka9 napisał(a):
czytałam go już wielokrotnie ale nie rozumiem


no to teraz napisz czego konkretnie nie rozumiesz z tego opisu bo jak widać podstawy znasz ... albo napisz od którego miejsc nie rozumiesz lub w którym miejscu nie rozumiesz ? .... bo przy tak zadanym pytaniu to trzeba by było ci wszystko od podstaw tłumaczyć

czasem warto nauczyć się dobrze zadawać pytania ok?

_________________
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: 12 kwi 2014, o 21:30 
Offline
Nowy

Dołączył(a): 08 mar 2014
Posty: 24
Pomógł: 0

Ok a więc tak.
1. Nie rozumiem czy to jedynie ustawia na 1 wyjścia czy coś jeszcze (np.PORTY)
2.Czy dobrze rozumiem że dwie kolejne linijki poniżej są sobie równoznaczne:
DDR(LCD_D7PORT)|= (1<<LCD_D7);
DDRC|= (1<<5);
3. I jeszcze takie troche głupie pytanie ale wolę się upewnić. Mamy w deklaracjach:
#define LCD_D7PORT C
#define LCD_D7 5
nasz program wie czym jest LCD_D7PORT oraz LCD_D7 ? te informacje są zawarte w bibliotece ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2014, o 21:45 
Offline
Moderator
Avatar użytkownika

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

Zaraz ... ale ty masz Bluebooka ???

Pytam bo tam masz dokladnie to opisane to o co teraz pytasz ... zaglądał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: 12 kwi 2014, o 21:48 
Offline
Nowy

Dołączył(a): 08 mar 2014
Posty: 24
Pomógł: 0

Zaglądałam wiele razy ale nie wiem, albo mi się to wszystko już miesza, albo źle patrzę... już któryś dzień się z tym męczę... nie chce się poddawać ale ciężko to widzę... a wyświetlacz ważna rzecz...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2014, o 21:56 
Offline
Moderator
Avatar użytkownika

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

karwacka9 napisał(a):
#define LCD_D7PORT C
#define LCD_D7 5


Tak się składa że sam pisałem tę książkę i nie a możliwości abym tam nie wyjaśniał skąd się to bierze - no przecież masz to właśnie wpliku *.h biblioteki a ty pytasz....

karwacka9 napisał(a):
te informacje są zawarte w bibliotece ?


odnośnie pkt.1 to może najpierw poczytaj to:

http://mirekk36.blogspot.com/2012/01/av ... stawy.html

pkt.2 - jeśli akurat LCD_D7 jest =5 to dobrze rozumiesz ;)

_________________
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: 12 kwi 2014, o 22:04 
Offline
Nowy

Dołączył(a): 08 mar 2014
Posty: 24
Pomógł: 0

Ja to już przerabiałam i odnosiłam się do tej strony wielokrotnie. Tyle że ja po prostu nie rozumiem co w tych makrach jest upraszczającego. Żeby stworzyć to makro trzeba stworzyć dwie definicje:
#define LCD_D7PORT C
#define LCD_D7 5
poza tym linijka poniżej wcale się nie skraca wręcz moim zdaniem wydłuża:
DDR(LCD_D7PORT)|= (1<<LCD_D7);
A ja rozumiem to w ten sposób że jedynie ustawiamy DDRx (rejestry wyjściowe) na jedynki co w moim odczuciu oznacza poniższy zapis (który jest krótszy) :
DDRC |= (1<<D5);
Więc albo rozumiem i już nie wiem o co w tym chodzi albo nie rozumiem nic a nic :)



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

Dołączył(a): 01 cze 2013
Posty: 56
Pomógł: 1

Co jest upraszczającego?

Tylko popatrz, że gdzieś dalej w swojej funkcji będziesz potrzebował wystawić 1 albo 0 na konkretnym pinie i wszystko było by fajnie, gdybyś LCD miał zawsze podłączony pod ten sam port. A co jeżeli masz dostępne np. 2 piny z portu C i resztę z A? Będziesz teraz przeglądał cały kod i zmieniał DDRC na DDRA? Chyba lepiej, żeby procek zrobił to za Ciebie, a Ty tylko na samym początku w definicji zmienisz. Nie musisz przeglądać całego kodu, tylko 1 linijkę.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2014, o 22:59 
Offline
Nowy

Dołączył(a): 08 mar 2014
Posty: 24
Pomógł: 0

i tu tylko o to chodzi ?? Sądziłam że nie o to bo to za łatwe ale dzięki wielkie ;p



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2014, o 23:15 
Offline
Użytkownik

Dołączył(a): 01 cze 2013
Posty: 56
Pomógł: 1

W zasadzie to i bez makr można to załatwić, ale dzięki temu, zamiast pisać pełne nazwy wystarczy jedna literka. To jest chyba jedno z najprostszych zastosowań makra.

Czyli zamiast pisać
#define LCD_D7PORT PORTC

robisz

#define LCD_D7PORT C



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2014, o 23:17 
Offline
Nowy

Dołączył(a): 08 mar 2014
Posty: 24
Pomógł: 0

to jeszcze jedno pytanie jeśli definicje wystarczą to po co makra poniżej??
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 kwi 2014, o 23:55 
Offline
Użytkownik

Dołączył(a): 01 cze 2013
Posty: 56
Pomógł: 1

Po to, żeby nie pisać całej nazwy, tylko jedną literkę/cyferkę. W tym przypadku jest proste działanie ale myślę , że można dużo bardziej skomplikowane efekty uzyskać podobnie jak w wielu programach na PC w których można tworzyć makra.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 kwi 2014, o 00:04 
Offline
Nowy

Dołączył(a): 08 mar 2014
Posty: 24
Pomógł: 0

Masz na myśli cyferki w definicjach?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 kwi 2014, o 00:09 
Offline
Użytkownik

Dołączył(a): 01 cze 2013
Posty: 56
Pomógł: 1

Tak, wystarczy Ci wtedy zapis
#define LCD_D7PORT A
#define LCD_D7 6

i użycie makra. Nie wpisujesz pełnej nazwy w definicji.



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

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