К битам регистров с адресами от 0 до 31 в компиляторе CodeVisionAVR можно обратится (и читать и записывать) проще.
Вот так: REGISTR.BIT
Пример: PINB.2 или PORTA.5
"avr123.nm.ru". Что же вы вводите людей в заблуждение. Регистры 0 – 31 – это рабочие регистры (working registers) и занимают они свое адресное пространство (к примеру, для mega8 - 0000 - $001F), а регистры порта – это регистры ввода вывода (I/O resisters) и у них свои адреса (к примеру, для mega8 - $0020 - $005F). Так что этот пример совсем не корректен. А ведь ваш сайт читают начинающие.
Для чего нужно начинающим давать сложные примеры типа: if((~PINC)&(1 << n)) {можно записать и вот так : if(!(PINC & (1 << n))) {. Можно было написать проще: if (PINC.1 = 1) {}. Начинающему это было бы более понятно. Зачем прививать людям отвращение с самого начала. К чему все эти загогулины, крючки, стрелочки. Для меня язык СИ не является актуальным, сам я пишу на ассемблере. Ваш сайт хотел почитать для самообразования, вполне возможно, что когда либо придется переходить на СИ, но почитав ваше произведение у меня пока не появилось желание писать на СИ.
Ассемблер для меня все - таки проще в понимании. Правда ассемблер предполагает хорошее знание железа (контроллера) и если вы знаете железо, то писать одно удовольствие. Не надо запоминать огромное количество команд и правила правописания. При хороших комментариях вы и через год не забудете что написали. Основные минусы – большой объем писанины и не переносимость программ под другие контроллеры. Первое лечится готовыми процедурами (своими или чужими) методом копирования и вставки. Второе не лечится ни как, да и не надо. Часто ли здесь на форуме люди меняли марки контроллеров и приспосабливали к ним свои старые программы? Раньше (в годы моей молодости) все крутые программисты писали на ассемблере. Программы были компактные и быстрые. Когда память стала расти, то программисты перестали заботиться о размерах программ, и началась эра языка СИ. Я не отрицаю того, что писать на СИ проще и быстрее. Один оператор на СИ может заменить кучу строк ассемблерного кода. Одно плохо нет хороших примеров от простого к сложному, как к примеру было для языка Паскаль, Бейсик, Foxpro (я программировал на всех этих языках). Сайт 123-го не является учебником для начинающего – можете мне поверить как человеку изучившего самостоятельно несколько языков программирования и имеющего опыт работать с литературой. Я не собираюсь описывать недостатки сайта, кому нравится, учитесь там.
Пару слов о симуляторе VMLAB. В эру 486–х машин были программы для трассировки печатных плат. В этих программах приходилось в ручную вводить все соединения компонентов схемы типа: контакт1 R1 – контакт1 VT1. Так вот VMLAB предлагает нам делать тоже самое, когда на дворе эра двух ядерных компьютеров. Ладно, если схема состоит из трех деталей, а если их 33 или 133. Получается, что пишешь программу, а потом еще сиди пиши соединения для VMLAB. Чушь это собачья. Если уж вы написали программу, то не тратьте время на VMLAB, лучше прогоните ее в симуляторе AVRStudio. Классная вещь. Видны все регистры, порты, прерывания и т.д., а потом все в железо и проверка в живую. К примеру mega8 разрешает перепрошить память 10000 раза, а это значит, что в течении года можно ежедневно перепрошивать флешку 27 раз. Если очень хочется посмотреть на компьютере, то лучше Протеус, хотя в тоже работает не корректно. Только проверка в живую на железе даст вам истинный результат. Не бойтесь, что либо спалить. В радиолюбительском деле без этого не бывает. Помните, не ошибается тот, кто ни чего не делает.
Мне еще одно не понятно. Очень многие соединяют свои микроконтроллеры с компьютером через USART. Ни как не пойму для чего. Контроллер это тот же маленький компьютер и в принципе должен работать автономно, особенно в роботах. Зачем его к чему то привязывать. У 123-го есть пример «электронный вольтметр, измеритель вибрации». Он пишет: «Всегда полезно иметь возможность вывести отладочную либо еще какую информацию через адаптер rs232 на ПК - для этого активируем передатчик USART» . Если тебе так хочется выводить значения напряжения на компьютер, ну сделай ты схему на дискретных элементах и подсоединяйся к ПК (COM, LPT, звуковуха) и не мучайся с написанием программы (схем полно в инете). В примере нет описания динамической индикации, хотя этот вопрос чаще встречается у начинающих. Еще раз – зачем привязывать контроллер к компьютеру – лишая его основного достоинства – автономная работа.
Я по профессии инженер электронщик, занимаюсь ремонтом компьютерной и офисной техники, до этого работал программистом. Радиолюбитель со школьной скамьи. Все что написал, мое личное мнение, ни кому не навязывается. Прошу без обид.