Цитата(kd_Rash @ Nov 27 2007, 14:16)

потому что знал, что так можно,
но как - не знал ... до этого момента
Тогда вот вам еще в копилку - чтобы не высчитывать каждый раз сумму по всему буферу, ее можно считать при занесении значения в буфер:
Код
WORD wAdcSum;
wAdcSum -= *pAdcBuff
wAdcSum += (*pAdcBuff = ADC);
pAdcBuff++;
if(pAdcBuff == (awAdcBuff + 16))
pAdcBuff = awAdcBuff;
// там, где нужен результат:
wAdcResult = wAdcSum / 16;
А еще можно заменить константу 16 на (sizeof(awAdcBuff) / sizeof(awAdcBuff[0])) - это позволит задавать размер буфера только в одном месте - при объявлении. А еще - можно этот sizeof() обернуть в удобный макрос:
Код
#define ELEMENTS(Array) (sizeof(Array) / sizeof(Array[0]))
WORD awAdcBuff[16];
WORD wAdcResult;
WORD wAdcSum;
WORD* pAdcBuff = awAdcBuff;
wAdcSum -= *pAdcBuff
wAdcSum += (*pAdcBuff = ADC);
pAdcBuff++;
if(pAdcBuff == (awAdcBuff + ELEMENTS(awAdcBuff) ))
pAdcBuff = awAdcBuff;
// там, где нужен результат:
wAdcResult = wAdcSum / ELEMENTS(awAdcBuff);
так будет совсем красиво.