Hier ein paar Macros die ich in verschiedenen AVR Foren gefunden habe:
*************************************************
// Init:
DDRA &= ~_BV(0); //Bit 0 = Input
PORTA |= _BV(0); //Pull-Up for Bit 0 on
DDRB |= _BV(4); //Using PortB bit4 for output
//check input bit0 on PORTA
if( (PINA & _BV(0)) == 0)
{
action_key(); //key is pressed
}
//Setting the output bit 4 on PortB
PORTB |= _BV(4);
//Clear the output bit 4 on PortB
PORTB &= ~_BV(4);
// toggle bit 2 on PortB
PORTB ^= _BV(PB2);
******************************************************************
#define LED_RED(onoff) \
do { \
if (on) PORTB |= _BV(PB2);\
else PORTB &= ~_BV(PB2); \
} while(0)
****************************************************
Man kann Binärzahlen mit folgendem Macro schreiben:
#define BIN8(b7,b6,b5,b4,b3,b2,b1,b0) ((unsigned char)\
(b0 << 0)\
| (b1 << 1)\
| (b2 << 2)\
| (b3 << 3)\
| (b4 << 4)\
| (b5 << 5)\
| (b6 << 6)\
| (b7 << 7))
z.B.:
x = BIN8(0,0,0,0,0,0,1,0);