12345678910111213141516171819202122232425262728293031323334 |
- #ifndef BITS_MACROS_
- #define BITS_MACROS_
- /***********************************************************
- //BITS MACROS
- //PASHGAN 2009
- //CHIPENABLE.RU
- //
- //reg : имя переменной, регистра
- //bit : позиция бита
- //val : 0 или 1
- ************************************************************/
- #define Bit(bit) (1<<(bit))
- #define ClearBit(reg, bit) reg &= (~(1<<(bit)))
- //пример: ClearBit(PORTB, 1); //сбросить 1-й бит PORTB
- #define SetBit(reg, bit) reg |= (1<<(bit))
- //пример: SetBit(PORTB, 3); //установить 3-й бит PORTB
- #define SetBitVal(reg, bit, val) do{if ((val&1)==0) reg &= (~(1<<(bit)));\
- else reg |= (1<<(bit));}while(0)
- //пример: SetBitVal(PORTB, 3, 1); //установить 3-й бит PORTB
- // SetBitVal(PORTB, 2, 0); //сбросить 2-й бит PORTB
- #define BitIsClear(reg, bit) ((reg & (1<<(bit))) == 0)
- //пример: if (BitIsClear(PORTB,1)) {...} //если бит очищен
- #define BitIsSet(reg, bit) ((reg & (1<<(bit))) != 0)
- //пример: if(BitIsSet(PORTB,2)) {...} //если бит установлен
- #define InvBit(reg, bit) reg ^= (1<<(bit))
- //пример: InvBit(PORTB, 1); //инвертировать 1-й бит PORTB
- #endif//BITS_MACROS_
|