Может поможет ?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено semen 21 апреля 2005 г. 10:10
В ответ на: ?Оптимальный алгоритм сравнения двух бит на ассемблере АВР отправлено ВМФ 21 апреля 2005 г. 09:41


#ifndef __BIT_H__
#define __BIT_H__

#if !defined(__GNUG__)&&!defined(_MSC_VER)&&!defined(__IMAGECRAFT__)
#define __GNUG__
#endif //__GNUG__

#ifdef __cplusplus
extern "C" {
#endif
// Маска Бита (bit = 0..7)
#define BIT_M(bit) (1 << (bit))
// Маска инверсная Бита (bit = 0..7)
#define BIT_MN(bit) (~BIT_M(bit))
// Устанивить Бит (bit = 0..7)
#define BIT_SET(reg,bit) (reg |= BIT_M(bit))
// Очистить Бит (bit = 0..7)
#define BIT_CLEAR(reg,bit) (reg &= BIT_MN(bit))
// Проверить Бит (bit = 0..7)
#define BIT_TEST(reg,bit) (reg & BIT_M(bit))
// Копировать Бит из reg1 в reg2 (bit = 0..7)
#define BIT_COPY(reg1,bit1,reg2,bit2) ((BIT_TEST(reg1,bit1))?BIT_SET(reg2,bit2): BIT_CLEAR(reg2,bit2))
// Копировать с Инверсией Бит из reg1 в reg2 (bit = 0..7)
#define BIT_COPY_INV(reg1,bit1,reg2,bit2) ((BIT_TEST(reg1,bit1))? BIT_CLEAR(reg2,bit2):BIT_SET(reg2,bit2))
// Инвертировать Бит (bit = 0..7)
#define BIT_INVERT(reg,bit) (reg ^= BIT_M(bit))
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
#ifdef __cplusplus
}
#endif
#endif //__BIT_H__

 

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru