Здравствуйте попытаюсь оправдаться. Пользовался рекомендациями
отсюда, потому именно такой порядок инициализации а не другой, вот только задержки не в микро- а в миллиекундах.
Пользуюсь WinAvr, но к сожалению не обнаружил ни util/delay.h(у меня таких библиотек не оказалось) ни других полезных функций для задержки, кроме тех которые описаны в avr/delay.h, то есть я увидил там только _delay_loop2() и _delay_loop1(), мне они показались непонятными и я содрал свою функцию с какого то обсуждения(к стати у меня их уже 3 и у всех разная реализация, даже не знаю кому верить).Поэтому хотел бы узнать где можно взять эти и другие полезные библиотечки.
Частота кварца по идее должна стоять 4, точно не уверен, но по моему там по умолчанию так стоит.
Полубиты решил записать функциями исключительно ради того чтоб меньше текста вылаживать на форум, до этого всё было тупо по порядку написано и без циклов, мне так же показалось это неудобным- вот и переписал немного.
Цитата(Сергей Борщ @ Jan 23 2008, 18:19)

Во-первых посмотрите листинг. 99%, что тело вашей задержки выкинуто оптимизатором. Объявите параметр ms как volatile или перепишите внутренний цикл так: while ( ms-- ) __no_operation(); (это если иар, если WinAVR - while ( ms-- ) __asm__ __volatile__ ("nop" : : );
во-вторых "переход в 4 битный режим, повтор" - лишнее.
Попробовал поправить цикл:
1)обьявил ms как volatile цыкл работает вечено
2)__asm__ __volatile__ ("nop" : : ); - компилятор почему то не знает
3)поставил asm("nop"); - компилятр не ругался но цыкл опять же работает вечно
4)"переход в 4 битный режим, повтор" - убрал, но скорее всего из за задержек пока это результата не дало
Я так понимаю нужно для начала найти цивилизованную delay_ms и delay_us(), которыми все успешно пользуются, подскажите где можно взять, а то почему то в моём WinAvr их нет.