Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

270 Микроконтроллеры AVR от азов программирования... Для проверки значения бита используется выражение temp&l. Оператор «&» выполняет операцию побитового «И» между значением переменной temp и числом 1 (0x01). При этом все старшие биты обну ­ ляются, и результат выражения становится равным значению младшего бита переменной temp. Оператор if в строке 16 проверяет результат выражения. Если он равен нулю (контакты очередного датчика замкнуты), управление пере ­ дается по метке m2, и цикл прекращается досрочно. В противном случае (контакты датчика разомкнуты) цикл выполняется дальше. В строке 17 производится логический сдвиг содержимого переменной temp. А затем цикл сканирования начинается сначала. Таким образом, за семь проходов цикла проверяются все семь датчиков. Если контакты всех датчиков окажутся незамкнутыми, то цикл for (строки 15 — 17) завершается естественным образом, а управление пере ­ ходит к строке 18. Здесь происходит выключение звука: регистру TCCR1 А присваивается нулевое значение. Затем в строке 19 управление передается в начало процедуры. Для передачи управления используется оператор безусловного перехода. Если цикл завершился досрочно переходом к строке 20 (по метке m2), начинается процесс формирования звука. Так как процесс сканирова ­ ния датчиков закончился досрочно, в переменной count находится номер датчика, контакты которого оказались замкнутыми. Теперь нам остается лишь извлечь коэффициент деления, соответствующий этому номеру датчика, и записать его в регистр совпадения таймера. На СИ это делается элементарно. Регистру OPCR1A просто присваи ­ вается значение соответствующего элемента массива tabkd (строка 20). В строке 21 производится включение звука. Как и в программе на Ассемблере, звук включается путем записи в регистр TCCR1A кода 0x40. На этом завершается тело основного цикла программы. Так как основ ­ ной цикл программы выполнен в виде бесконечного цикла, то после завершения его последней команды весь цикл повторяется сначала. 5.10. Музыкальная шкатулка Постановка задачи Все предыдущие примеры не имели практического значения. Их можно рассматривать как простейшие задачи для тренировки. Надеюсь, к данному моменту вы достигли такого уровня знаний, что вам по плечу настоящая программа, имеющая практическое значение.

RkJQdWJsaXNoZXIy MTExODQxMg==