Цитата(smk @ May 12 2008, 17:51)

/* Установка и сброс бит в регистрах ввода-вывода с помощью макроса */
#define SETBIT(ADDRESS,BIT) (ADDRESS |= (1<<BIT))
#define CLEARBIT(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))
/* Макрос для проверки одного бита в области ввода-вывода */
#define CHECKBIT(ADDRESS,BIT) (ADDRESS & (1<<BIT))
/* Пример использования */
if(CHECKBIT(PORTD,PIND1)) /* Проверка, PIND1 = 1? */
{
CLEARBIT(PORTD,PIND1); /* Сброс PIND1 порта D*/
}
if(!(CHECKBIT(PORTD,PIND1))) /* Проверка, PIND1 = 0? */
{
SETBIT(PORTD,PIND1); /* Установка PIND1 порта D */
}
Очень похоже на
Код
#define inp(port) (port)
#define outp(val, port) (port) = (val)
#define inb(port) (port)
#define outb(port, val) (port) = (val)
#define sbi(port, bit) (port) |= (1 << (bit))
#define cbi(port, bit) (port) &= ~(1 << (bit))
которые не рекомендованы к применению
Deprecated List:
Код
Global SIGNAL
Do not use SIGNAL() in new code. Use ISR() instead.
Global ISR_ALIAS
For new code, the use of ISR(..., ISR_ALIASOF(...)) is recommended.
Global timer_enable_int
Global enable_external_int
Global INTERRUPT
Global inp
Global outp
Global inb
Global outb
Global sbi
Global cbi
Это все описано в документации к avr-libc.