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

Шаг 5. Переходим непосредственно к разработке устройств и программ 247 Так же, как и в предыдущих примерах, признаком достижения конеч ­ ной позиции служит появление единицы в флаге переноса (вспомните табл. 5.2). Проверка флага переноса производится в строке 59. Если значение флага равно нулю, строка 60 программы пропускается. Если же значение флага окажется равным единице, то команда в строке 60 записывает в регистр rab новое значение. После записи этого значения единица ока ­ жется в самом старшем разряде. Таким образом организуется движение единицы по кругу (дойдя до крайней правой позиции, единица появля ­ ется слева). В строке 61 процедура сдвига вправо завершается. Управление пере ­ дается по метке рЗ . То есть к процедуре вывода сдвинутого значения в порт. Процедура сдвига влево (строки 62 — 64) работает аналогично пред ­ ыдущей процедуре. Отличие состоит лишь в том, что здесь применяется другая команда сдвига (строка 62). Кроме того, при достижении крайней позиции регистру присваивается другое начальное значение. Теперь еди ­ ница окажется в самом младшем разряде. Таким образом организуется кольцевое движение, но в другую сторону. В строке 65 начинается процедура вывода содержимого rab в порт РВ. Процедура занимает строки 65 — 67. Точно такая же процедура применя ­ лась и в двух предыдущих версиях программы бегущих огней. В строках 68 — 70 происходит подготовка к завершению процедуры обработки прерывания. Сначала содержимое rab сохраняется в буфере ОЗУ (строка 68). Затем в строках 69, 70 восстанавливаются значения регистров temp и rab. И, наконец, в строке 71 процедура обработки пре ­ рывания завершается. Программа на языке СИ Как мы убедились на примере Ассемблера, для нашей новой задачи потребуются довольно значительные изменения программы. При разра ­ ботке программы средствами системы CodeVisionAVR в подобной ситу ­ ации целесообразнее воспользоваться мастером, при помощи которого удобно создать новую заготовку программы. Для создания новой заготовки программы удобно восстановить настройки из созданного ранее примера, подкорректировать их в соот ­ ветствии с новыми требованиями и записать под новым именем. Для этого зайдем в программу CodeVisionAVR и запустим мастер. Для запу ­ ска мастера достаточно нажать на панели инструментов кнопку j^| . После запуска мастера все его управляющие элементы будут нахо ­ диться в исходном состоянии. То есть иметь значения по умолчанию.

RkJQdWJsaXNoZXIy MTExODQxMg==