Pages: [1]   Go Down
Author Topic: bitToggle()  (Read 901 times)
0 Members and 1 Guest are viewing this topic.
Manchester, New Hampshire
Offline Offline
Edison Member
*
Karma: 4
Posts: 1368
Propmaker
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I noticed when working on my current project that there's nice defines for setting and clearing a bit, but none for toggling a bit.  I think this #define based on the others would do the job, but I haven't tested it:

Code:
#define bitToggle(value, bit) ((value) ^= (1UL << (bit)))
Logged

Global Moderator
Netherlands
Online Online
Shannon Member
*****
Karma: 227
Posts: 14010
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

you should write a test program for it smiley-wink  - it looks ok.

if you are interested in bithacks check - http://graphics.stanford.edu/~seander/bithacks.html
Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3322
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

These are my defines:

Code:
#define SetB(PORT, BIT) ((PORT) |= 1<< (BIT))
#define ClrB(PORT, BIT) ((PORT) &= 1<< (BIT))
#define TogB(PORT, BIT) ((PORT) ^= 1<< (BIT))
#define TestB(PORT, BIT) ((PORT) & (1<<BIT))

Not compatible with Arduino Pin numbers.
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Pages: [1]   Go Up
Jump to: