Вот процедура, которая переворачивает любой бит в любом порту:
Код
inline void toggle_bit(volatile unsigned char* port, unsigned char bit)
{
*port ^= (unsigned char)(1<<bit);
}
или так, что может оказаться оптимальнее
Код
inline void toggle_bit2(volatile unsigned char* port, unsigned char bit_mask)
{
*port ^= bit_mask;
}
Использовать так:
Код
toggle_bit(&P2, 3);
toggle_bit2(&P2, 1<<3);
ПС:
A ^= B означает A = A^B или A = A XOR B