[an error occurred while processing this directive]
Вот есть такой хороший макрос(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено misyachniy 26 сентября 2006 г. 11:07
В ответ на: Надеюсь привыкну... отправлено <font color=gray>Samsony</font> 26 сентября 2006 г. 11:01


/*======================================================================
* vbits.h - bit manipulation macros
*
* Based on code by Askold Volkov (http://www.inp.nsk.su/~volkov/home.html)
*----------------------------------------------------------------------
*
* $Name: $
*
* $Id: vbits.h,v 1.2 2004/09/11 08:15:58 real Exp $
*
* $Log: vbits.h,v $
* Revision 1.2 2004/09/11 08:15:58 real
* Indentation changed only.
*
* Revision 1.1.1.1 2004/09/05 09:56:51 real
* Initial release, based on code by Ascold Volkov.
*
*
*/


#ifndef H_VBITS_H
#define H_VBITS_H

/*----------------------------------------------------------------------
* BIT DEFINITION
*
* Bits must be defined in form
* #define BITNAME VAR, BITNO, LEVEL
* where
* VAR - SFR or variable where the bit placed
* BITNO - number of bit
* LEVEL - active level for this bit, H for high and L for low
*
* Example:
*
* #define MYINP PINB,2,L - input from bit 2 of port PINB, active Low
* #define MYOUT PORTD,5,H - output to bit 5 of PORTD, active High
*
* Use:
* bit_on(b) and bit_off(b) for setting output bit in active and passive state,
* bit_active(b) to check if input bit is in active state
*
*/


#define bit_setL(var,bit) (var)&=~(1<#define bit_setH(var,bit) (var)|=(1<#define bit_set_(var,bit,val) bit_set##val(var,bit)
#define bit_on(b) bit_set_(b)
#define bit_set bit_setH

#define bit_clrL(var,bit) (var)|=(1<#define bit_clrH(var,bit) (var)&=~(1<#define bit_clr_(var,bit,val) bit_clr##val(var,bit)
#define bit_off(b) bit_clr_(b)
#define bit_clr bit_clrH

#define bit_activeL(var,bit) (!((var)&(1<#define bit_activeH(var,bit) ((var)&(1<#define bit_active_(var,bit,val) bit_active##val(var,bit)
#define bit_active(b) bit_active_(b)
#define is_bit bit_activeH

#endif // ? H_VBITS_H


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

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание