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



Teraz jest 15 lis 2024, o 13:28


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 19 mar 2021, o 18:53 
Offline
Użytkownik

Dołączył(a): 11 sty 2015
Posty: 166
Pomógł: 24

Wartość RXEN jest zdefiniowana jako makra w bibliotekach <avr/io.h>

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


i kompilator widzi to jako konkretną wartość liczbową np. 4.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2021, o 18:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

W eclipse można podejrzeć wartość RXEN najeżdżając wskaźnikiem myszy. Wyświetli się Macro Expansion, naciskając F2 otrzymasz dodatkowe informacje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2021, o 22:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1164
Lokalizacja: Kraków
Pomógł: 93

edwardkraweznik napisał(a):
co daje przesunięcie któregokolwiek zera w lewo ?
Nie zera. Przesuwasz jeden. (1<<x) przesuwa 1 o x miejsc w lewo.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
oznacza, że po tej operacji
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Wiesz, dlaczego?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2021, o 00:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sie 2015
Posty: 205
Lokalizacja: UK
Pomógł: 10

edwardkraweznik napisał(a):
nie wiem skąd te 1 tam skoro Initial Value 0 0 0 0 0 0 0 0 ?


Jeden tam przecież wpisujesz. Jeżeli masz rejestr 8-bitowy o nazwie ABC, który ma wartość zero po resecie to taki zapis :

ABC = (1<<3);

Oznacza "Wpisz do rejestru ABC wartość jeden (0000 0001) i przesuń o 3 miejsca w lewo, tzn. 0000 1000".

------------------------ [ Dodano po: 3 minutach ]

Innymi słowami, wykonaj operację w nawiasie i przypisz otrzymaną wartość do rejestru ABC. Bo wydaje mi się, że intuicyjnie (0b 0000 0001 << 3) jest w miarę jasne ;)


Autor postu otrzymał pochwałę

_________________
MMT Technologies



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2021, o 10:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

Makowka napisał(a):
Oznacza "Wpisz do rejestru ABC wartość jeden (0000 0001) i przesuń o 3 miejsca w lewo, tzn. 0000 1000".

Innymi słowami, wykonaj operację w nawiasie i przypisz otrzymaną wartość do rejestru ABC. Bo wydaje mi się, że intuicyjnie (0b 0000 0001 << 3) jest w miarę jasne ;)

Powyższe słowa oddają sens działania "przesuń". Wg. mnie omawiane zagadnienie jest działaniem logicznym XOR(wstaw TRUE w wyznaczonym miejscu bajtu(rejestrze) bez zmiany innych bitów tego bajtu). Też próbuję zrozumieć podstawianie bitów w bajcie, oraz pokrewny temat - maskowanie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2021, o 10:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2019
Posty: 145
Pomógł: 37

Wirnick napisał(a):
XOR

W powyższych działaniach ma zastowanie bitowa suma logiczna (alternatywa, OR), ktrórej operatorem jest "|" albo "bitor".
Alternatywa wykluczająca (XOR) jest całkiem innym działaniem logicznym, posiadającym swój własny operator "^" lub "xor"
Więcej: https://en.wikipedia.org/wiki/Bitwise_operations_in_C

_________________
Think for yourself and question authority.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2021, o 11:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sie 2015
Posty: 205
Lokalizacja: UK
Pomógł: 10

Wirnick napisał(a):
Wg. mnie omawiane zagadnienie jest działaniem logicznym XOR(wstaw TRUE w wyznaczonym miejscu bajtu(rejestrze) bez zmiany innych bitów tego bajtu).

To w ramach doprecyzowania, jeżeli mamy analogiczną sytuację z rejestrem ABC, tak jak opisałem wyżej, zapis:

ABC |= (1<<3);

Oznacza, że wartość 0b0000 1000 zostanie "zORowana" ;) z aktualną wartością rejestru. Czyli, na przykład, jeżeli rejestr ABC ma wartość 0b0101 0101 na start, to:

ABC = ABC | (1<<3); // Zapis analogiczny do |=

Ostatecznie:
0b0101 0101 | 0b0000 1000 wyniesie 0b0101 1101 i taka też wartość zostanie zapisana do ABC.

_________________
MMT Technologies



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2021, o 11:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

fofex napisał(a):
W powyższych działaniach ma zastowanie bitowa suma logiczna (alternatywa, OR), ktrórej operatorem jest "|" albo "bitor".
Moje założenie było specjalnie fałszywe, by dojść do prawdziwej tezy. Dziękuję!!! Przesunięciem bitów w bajcie zajmują się funkcje ROR lub ROL(doczepiam się do nazewnictwa).



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 0 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