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



Teraz jest 30 mar 2026, o 12:44


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 24 sie 2014, o 12:10 
Offline
Nowy

Dołączył(a): 06 lut 2014
Posty: 8
Pomógł: 0

Witam,
mam problem ze zrozumieniem prostej linii kodu.

Kod:
...
while( !( UCSRA & (1<<UDRE) ));
UDR = data;


Rozłożę ten tenmat na czynniki pierwsze i prosze o opinie.

Kod:
// PIERWSZY KROK
UCSRA & (1<<UDRE)
// jezeli bit UDRE w rejestrze UCSRA jest ustawiony na 1 to zwraca mi liczbe w systemie binarnym rowna: 0b10000
// w przeciwnym wypadku zwracane jest 0b0

// DRUGI KROK
// negujemy liczbe 0b10000 - wynik: 0b01111 (prawda, powinien byc fałsz)
// negujemy liczbe 0b0 - wynik: 0b1 (prawda)


Gdzie jest błąd myślowy?

Dziekuje



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sie 2014, o 12:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lut 2014
Posty: 101
Pomógł: 4

Wykrzyknik ! jest po to by zanegować wyrażenie zawarte w nawiasie ,pętla będzie wykonywana tylko ,gdy różna od 0
,czyli warunek musi być prawdziwy.
Wtedy char Data ,będzie równe zawartości UDR.

Jest też wyjaśnione w nocie PDF z tego co pamiętam ,sekcja UART.

Zerknij na wartości rejestrów i rejestrów flagi.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sie 2014, o 12:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Operator wykrzyknika jest operatorem logicznym nie bitowym (~), wobec czego negując dowolną wartość różną od zera w wyniku będzie 0.

Tylda zadziałałaby tak jak to opisałeś, ale '!' działa inaczej ;)


Autor postu otrzymał pochwałę


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

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