Pages: [1]   Go Down
Author Topic: Or And  (Read 353 times)
0 Members and 1 Guest are viewing this topic.
Pavia
Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Che cosa cambia fra:

 TCCR2B &= ~(1<<CS21);

e..

 TCCR2B |= ~(1<<CS21);

Prende il registro e....

Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22973
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Un OR è una somma logica, si usa fare così quando si vuol essere sicuri che un bit assuma valore 1 in ogni caso.
1 OR 0 = 1
1 OR 1 = 1

Un AND restituisce invece 1 solo quando entrambi i bit sono a 1
1 AND 0 = 0
1 AND 1 = 1
0 AND 1 = 0

Però normalmente i codici citati NON si usano nella seconda forma che hai usato.
TCCR2B |= ~(1<<CS21);

Di solito è:
TCCR2B |= (1<<CS21);

Questa forma deve restituire 1, quindi il NOT (abbreviato dal simbolo ~) non si usa con l'OR ma solo con l'AND. Difatti questa forma:
TCCR2B &= ~(1<<CS21);
serve a porre a 0 il bit CS21 indipendentemente dal valore che ha nel registro TCCR2B
Logged


Pavia
Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si, ho sbagliato a scrivere.Grazie mille ho capito ma.... smiley-surprisesmiley
Ma posso scrivere direttamente:


TCCR2B &= (0<<CS21);

E lecito? smiley-lol suppongo di no però.....
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22973
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

No. Il segno "<<" è uno spostamento a SX del bit 1 di tante posizioni quanto è il valore rappresentato dal registro in uso.
Spostare il bit 0 equivale a non spostare nulla.
Cioè
0<<4 equivale a 0
1<<4 equivale a 16
Logged


BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21871
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Trovi di piú su
http://arduino.cc/en/Reference/BitwiseAnd
http://arduino.cc/en/Reference/BitwiseXorNot
http://arduino.cc/en/Reference/Bitshift

Sono operazioni a livello di singoli bit. Vene fatto un and/or/xor bit per bit di un bte o di un registro.

Queste operazioni vengono usate per settare o cancellare singoli bit all interno di un byte o un registro senza cambiare gli altri.

Ciao Uwe
Logged

Pages: [1]   Go Up
Jump to: