Operátor << – Assembler – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Operátor << – Assembler – Fórum – Programujte.comOperátor << – Assembler – Fórum – Programujte.com

 

RePRO0
Super člen
11. 5. 2011   #1
-
0
-

Zdravím,
chci se zeptat, pokud mám následující kód (jedná se o nastavení sériové linky UART - AVR v prog. jazyce C):



UCSR0A = 0;
UCSR0B = (1 << TXEN0) | (1 << UCSZ02);
UCSR0C = (1 << UCSZ00) | (1 << UCSZ01);

tak jestli je to naprosto analogické s tímto kódem:


UCSR0A = 0;
UCSR0B = 0b00001100;
UCSR0C = 0b00000110;

Nahlásit jako SPAM
IP: 83.240.104.–
Software: C; C++; C#; Pascal; Delphi; Java Webdesign: PHP; MySQL; CSS; jQuery; Ajax; Javascript; OOP
KIIV
~ Moderátor
+43
God of flame
11. 5. 2011   #2
-
0
-

proc si nenajdes na netu, co je operator << ?
mimochodem da se pouzit i makro
_BV(TXEN0) | ... (dela to to same..)

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
RePRO0
Super člen
11. 5. 2011   #3
-
0
-

Je to bitový posun... vím, co je bitový posun. Ale tady mi ten operátor nesedí. ;-) Můžeš mi to trošku vysvětlit? Vím, že se orientuješ na jednočipy... ;) Díky.

Nahlásit jako SPAM
IP: 95.82.164.–
Software: C; C++; C#; Pascal; Delphi; Java Webdesign: PHP; MySQL; CSS; jQuery; Ajax; Javascript; OOP
KIIV
~ Moderátor
+43
God of flame
12. 5. 2011   #4
-
0
-

tak na co asi bude posunuti 1 (coz je 0b00000001) o napriklad 3 pozice vlevo? prece vznikne jen 0b00001000

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
RePRO0
Super člen
12. 5. 2011   #5
-
0
-

To KIIV : Aha, takže pokud to chápu dobře, tak tento zápis znamená třeba následující:



UCSR0B = (1 << TXEN0);
UCSR0B = (1 << 3);
UCSR0B = 0b00001000;


neuvědomil jsem si hned, že pravý operand od operátoru posunutí je počet míst posunutí. A ještě bych se chtěl zeptat, jestli lze tento kód:


UCSR0B = UCSR0B & ~(1 << TXB80);


zapsat takto:


UCSR0B &= ~(1 << TXB80);

Předpokládám, že určitě, ale jen tak se ptám pro jistotu. :-)

Nahlásit jako SPAM
IP: 95.82.164.–
Software: C; C++; C#; Pascal; Delphi; Java Webdesign: PHP; MySQL; CSS; jQuery; Ajax; Javascript; OOP
KIIV
~ Moderátor
+43
God of flame
12. 5. 2011   #6
-
0
-

To RePRO : urcite to jde.. ale mohly by byt i pripady, kdy je to spatne .. ale asi to nebude moc casty (ted me nic nenapada ohledne bitovych masek... spis scitani.. treba: x *= 2 + y; je neco jinyho nez x = x * 2 + y;)

UCSR0B &= ~(1 << TXB80); je pak vynulovani bitu na pozici TXB80

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
RePRO0
Super člen
12. 5. 2011   #7
-
0
-

Přesně tak, provede se maskování... a potom se zneguje ten jeden bit v tom registru z 1 na 0. :-) Je to nulování... Tak to by bylo vše, díky. ;)

Jenom my šlo o to, proč by to nešlo udělat třeba takto: UCSR0B = 0b11110111; .. když vím, o který bit jde. Ale to bude asi tím, že nevím v kterým stavu jsou ostatní bity a abych je nepokazil... ;-) ;-) Tak čau. :)))

Nahlásit jako SPAM
IP: 95.82.164.–
Software: C; C++; C#; Pascal; Delphi; Java Webdesign: PHP; MySQL; CSS; jQuery; Ajax; Javascript; OOP
KIIV
~ Moderátor
+43
God of flame
12. 5. 2011   #8
-
0
-

To RePRO : samozrejme to jde.. ale ty nazvy bitu sou tam z jisteho duvodu - citelnosti
zkus se za rok vratit ke kodu:

DDRA = 0xFE;
DDRB = 0x00;

USCRA = 0x21;
OCRA = 0x10010100;
....

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 218 hostů

Podobná vlákna

Operator - — založil yaqwsx

Operátor -> — založil Adam

Operator&lt;&lt; — založil Gadael

Ternary operator — založil robin

C++ - friend operator — založil jupiik

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý