Stránka 2 z 2

Napsal: 12 pro 2010, 13:48
od pokrivnik
Andrea píše:Kdybys napsal, že reaguje jen dioda odpovídající ta, tak to bych věděla proč.
Jj maš pravdu, reaguje iba ta, som sa sekol, už som to menil toľko krát...

V čom je chyba?

Napsal: 12 pro 2010, 13:54
od Andrea
(1<<PB1) je 2, výsledkem (PINB & (1<<PB1)) je tudíž buď 0 nebo 2, nikdy ne 1.

Napsal: 12 pro 2010, 14:04
od pokrivnik
Andrea píše:(1<<PB1) je 2, výsledkem (PINB & (1<<PB1)) je tudíž buď 0 nebo 2, nikdy ne 1.
Tak tomu teraz nechápem, môžeš vysvetliť? Ďakujem :)

Napsal: 12 pro 2010, 14:23
od Andrea
A co nechápeš? << je rotace vlevo, & je bitový AND, (1<<PB1) je rotace 1 o PB1 bitů doleva, PB1 je 1, takže výsledek je 2, a když uděláš bitový AND 2ky s čímkoliv, tak výsledek je 0 nebo 2.

Napsal: 12 pro 2010, 14:56
od pokrivnik
Andrea píše:A co nechápeš? << je rotace vlevo, & je bitový AND, (1<<PB1) je rotace 1 o PB1 bitů doleva, PB1 je 1, takže výsledek je 2, a když uděláš bitový AND 2ky s čímkoliv, tak výsledek je 0 nebo 2.
Ahaa, tak ja som to pochopil tak že v tomto prípade

#define tl (PINB & (1<<PB1))
#define ta (PINB & (1<<PB0))

bude tl definovať tlačítko pripojené k portu PB1 a ta bude definovať tlačítko pripojené k portu PB0, a keď hocikde v programe napíšem tl alebo ta bude to predstavovať daný pin

Napsal: 12 pro 2010, 15:04
od Andrea
To by to muselo být napsané nějak takhle:
#define tl ((PINB >> PB1) & 0x01)
#define ta ((PINB >> PB0) & 0x01)

Napsal: 12 pro 2010, 15:15
od pokrivnik
Vďaka, vidím že to musím poriadne naštudovať :roll:

Napsal: 12 pro 2010, 15:22
od Andrea
To jo, u jednočipů jsou ty bitové operace docela důležité a hojně používané.

Napsal: 13 pro 2010, 18:18
od Atlan
kebz netestoval tak hlupo odmienku TL==1 tak bz na to neprsiel.. kebz len testoval if (tl) tak bz mu to islo ..na druhej strane sa nieco naucil :D

Napsal: 13 pro 2010, 20:10
od Andrea
bzbzbz :roll:

Napsal: 14 pro 2010, 08:43
od Atlan
lepsie ako i/y :D hlupo nastavena klavesnica.... vratme sa k teme jo

Napsal: 15 pro 2010, 17:27
od WLAB
Jabych tedy radeji pouzival necu ve smyslu:


#define TL (PINB & 0x04) /*0x04 maska tlacitka TL*/

a vyhodnocoval bych to jako

if (TL) .....

je to rychlejsi, a myslim, ze i prehlednejsi. Rozumny kompliator na to stejne pouzije na AVRku instrukce bitovych operaci, ikdyz ten C zapis operuje s celym slovem.