Цитата(radiofill @ Aug 18 2008, 23:21)

Почему через таймер расточительно? а как же тогда? если задержка к примеру 30ms?
Если такие задержки требуются по ходу выполнения программы, то надо изменить алгоритм работы.
Если же только при старте, например инициализации LCD и т.п., то такие задержки можно делать хоть через таймер, хоть простым циклом.
Цитата(radiofill @ Aug 18 2008, 23:21)

Про модуль не совсем понял. Вы про то, что надо в начале написать чтото вроде:
#if !defined(LCD.h)
#define LCD.h
......
#endif
Это не поможет. Сам принцип раздельной компиляции исключает размещения "тела" функции в заголовочном файле. Исключение из этого правила - инлайновые функции, но тут уж надо следить, чтобы умный компилятор не проигнорировал квалификатор inline. И уж тем более не следует в заголовках объявлять переменные.
Цитата(radiofill @ Aug 18 2008, 23:21)

А насчёт двоичной записи- мне так проще было с флагами эксперементировать

Так можно дойти до имен переменных русскими словами. Проще и понятней? Но стандарт языка этого не допускает. Кстати может в CV это и пройдет...

Цитата(radiofill @ Aug 18 2008, 23:21)

... а книгу по ARMам я так и не нашёл(... Редькин не в счёт
Может хоть ссылка у кого есть? В частности хотелось бы понять как в AT90 Linux запихать и как потом с этим управляться
ARM тут не причем, надо читать книгу по самому языку C. Вы выше ссылку на K&R приводили, вот ее и почитайте.