Цитата(beer_warrior @ Aug 3 2006, 08:46)

Короче, я так смотрю, ветка одна из наиболее посещаемых, значит таки народу это надо.
Текущие работы я раскидал и завтра отправляюсь греть задницу в славный город Севастополь. Под шум волн я все это дело допишу и по возвращении (дней через 10), начинаю выкладывать.
Хотелось бы ещё по директивам препроцессора с нормальным обяснением услышать.
Ассемблер точно нужен!!!! Начинал с аврстудии и ща не жалею.
Считаю что для начала програмирования на Си нужны переопределения
для лучшей читабельности и понимании кода, а также что-то вроде стандарта.
Хорошо было-бы с нормальными коментариями. Очень нравятся мне макросы работы с битами
написаные Аскольдом Волковым.
/*======================================================================
* 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(

and bit_off(

for setting output bit in active and passive state,
* bit_active(

to check if input bit is in active state
*
*/
#define bit_setL(var,bit) (var)&=~(1<<bit)
#define bit_setH(var,bit) (var)|=(1<<bit)
#define bit_set_(var,bit,val) bit_set##val(var,bit)
#define bit_on(

bit_set_(

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

bit_clr_(

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

bit_active_(

#define is_bit bit_activeH
#endif // ? H_VBITS_H