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



Teraz jest 19 kwi 2024, o 07:40


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 26 sty 2019, o 11:03 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 22 paź 2016
Posty: 13
Lokalizacja: Poznań
Pomógł: 0

Witam,

Mam takie szybkie pytanie ponieważ potrzebuję rozwiać wątpliwość, chodzi o ustawianie stanu na porcie a konkretnie o zapis
Założenie jest takie, żeby na PB0, PB1 i PB2 była 1 a na reszcie 0
Jeżeli zrobię zapis typu:

PORTB = (1<<PB0);
PORTB = (1<<PB1);
PORTB = (1<<PB2);

Jeżeli program będzie się realizował to ustawi 1 na porcie PB0 ale na reszcie portów ustawi zero, później ustawi 1 na PB1 i na reszcie zero, następnie ustawi 1 na PB2 a na reszcie zero, żeby nie stworzył się nam wachlarz stanów to stosujemy zapis:

PORTB |= (1<<PB0);
PORTB |= (1<<PB1);
PORTB |= (1<<PB2);

Przy takim zapisie na każdym bicie odwrócimy wartość z 0 na 1 i jest wszystko ok
a teraz pytanie co w przypadku takiego zapisu?

PORTB = 0b00000111;
w takim wypadku chyba nie muszę stosować | bo odrazu za jednym razem ustawiam cału port prawda? czy się mylę? i również mógłbym zapisać to w takiej postaci?:

PORTB = (1<<PB0) | (1<<PB1) | (1<<PB2);

rozumiem, że jeżeli chodzi o ustawienie 0 to &=~ ustawia 0 nie ruszając innych pinów a sama ~ zmieni stan naszego i reszty?

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sty 2019, o 11:15 
Offline
Moderator
Avatar użytkownika

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

Jest DOKŁADNIE tak jak piszesz - wszystko się zgadza

_________________
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: 26 sty 2019, o 11:26 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

Sprawdź w pliku .lss po kompilacji czy przypadkiem jak dasz po sobie ustawianie portów w obrebie tego samego rejestru optimalizacja nie skróci tego do pojedynczego zapisu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sty 2019, o 11:29 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 22 paź 2016
Posty: 13
Lokalizacja: Poznań
Pomógł: 0

Dzięki chłopaki za potwierdzenie :)



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

Dołączył(a): 22 cze 2013
Posty: 988
Lokalizacja: Byram, MS 39272
Pomógł: 55

Swego czasu popularnym było i w pewnych kręgach nadal jest używanie kodu szesnastkowego do zapisu liczb w programach. W tym zwłaszcza tego co ma być wysłane do portów. Zobacz na zapis binarny 11000011. Możemy to podzielić na dwie czwórki bitów. 1100 oraz 0011. W zapisie szesnastkowym 1100 to C (Dec 12), a 0011 to 3. Zatem całą liczbę możesz zapisać jako C3. Znam takich ludzi, którzy widząc liczbę w zapisie HEX automatycznie widzą ją bit po bicie :).
Także Twój przykład możesz zapisać na czter y(jakby się uprzeć to i pięć) różne sposoby w zależności o stopnia zboczenia programistycznego.

_________________
Pomysły na podpis - wyślij SMSa +1 769 243 0011



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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