Может сразу по красивому делать(+)?
(«Телесистемы»: Конференция 'Микроконтроллеры и их применение')

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

Отправлено misyachniy 04 марта 2005 г. 14:14
В ответ на: Пиши понятнее DDRB = 0B00000110 сразу все видно. отправлено Sergey(RD) 04 марта 2005 г. 13:29

Есть такой вот макрос:
Если поменялись ножки, то менять только #define и инициализацию DDR.


/*======================================================================
* 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_of(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: info@telesys.ru