ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
18748 Топик полностью
Сергей Борщ (17.12.2004 21:19, просмотров: 1) ответил Бав на вроде проверка несложная,хотя тебе для твоей задачи видней.
Чего сложного? 
#define BufferSize   16
uint8_t Buffer[BufferSize], Head, Tail;
void insert(uint8_t Byte) {
 uint8_t Tmp = (Head + 1) & (BufferSize - 1);
 Buffer[Tmp] = Byte;
 Head = Tmp;
};

uint8_t read(uint8_t Offset) {
 uint8_t Tmp = (Head - Offset) & (BufferSize - 1);
 return(Buffer[ Tmp ]);
}
Чтение самого свежего:
 Tmp = read(0);
Чтение "шестого по свежести":
 Tmp = read(5);
Только надо чтобы размер буфера был кратен степени двойки. Иначе вместо
 & (BufferSize - 1);
надо будет более сложную конструкцию писать:
 if (Tmp < 0) Tmp += BufferSize; 
}