Dave Hansen give me a better solution I think, 
here a cut / paste of his anwser

--- begin included file ---
#define BIT(p,b)                (b)

#define PORT(p,b)               (PORT ## p)
#define PIN(p,b)                (PIN ## p)
#define DDR(p,b)                (DDR ## p)

#define MASK(b)                 (1 << (b))

#define Set_Port_Bit(p,b)       ((p) |= MASK(b))
#define Clr_Port_Bit(p,b)       ((p) &= ~MASK(b))
#define Tgl_Port_Bit(p,b)       ((p) ^= MASK(b))

#define Get_Port_Bit(p,b)       (((p) & MASK(b)) != 0)

#define Set_Output(io)          Set_Port_Bit(PORT(io),BIT(io))
#define Reset_Output(io)        Clr_Port_Bit(PORT(io),BIT(io))
#define Toggle_Output(io)       Tgl_Port_Bit(PORT(io),BIT(io))
#define Get_Output(io)          Get_Port_Bit(PORT(io),BIT(io))

#define Get_Input(io)           Get_Port_Bit(PIN(io),BIT(io))

#define Tristate(io)            Clr_Port_Bit(DDR(io),BIT(io))
#define Drive(io)               Set_Port_Bit(DDR(io),BIT(io))

--- end included file ---


A little example:

#define LED  B,6

Set_Ouput(LED);

I tweaked this a bit, to rename some stuff, but it's work fine,
and it's easy to use. 

I guess Dave win the contest ;) 


Thanks




_______________________________________________
AVR-GCC-list mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list

Reply via email to