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

Шаг 5. Переходим непосредственно к разработке устройств и программ 197 Что касается настройки портов РВ и PD, то в строках 7, 8 регистрам PORTB и DDRB присваивается значение 0х7Е А в строках 9,10 в регистр PORTD записывается 0х7Ғ, а в регистр DDRD — ноль. Если вы помните, те же значения мы присваивали тем же самым регистрам в программе на Ассемблере. Точнее, небольшое отличие все же есть. В программе на Ассемблере в регистр PORTD мы записывали ОхҒҒ (в двоичном варианте 0Ь 11111111). В программе на СИ в тот же регистр мы записываем 0x7F (ObOlllllll). Эти два числа отличаются лишь зна ­ чением старшего бита. Но для данного порта это несущественно, так как его старший разряд незадействован. Поэтому в каждой программе мы делаем так, как это удобнее. После инициализации всех регистров начинается основной цикл про ­ граммы (строка 31). Основной цикл — это обязательный элемент любой программы для микроконтроллера. Поэтому мастер всегда создает заго ­ товку этого цикла. То есть создает цикл, тело которого пока не содержит не одной команды. В том месте, где программист должен расположить команды, состав ­ ляющие тело этого цикла, мастер помещает специальное сообщение, приглашающее вставить туда код программы. Оно гласит: Place your code here (Пожалуйста, вставьте ваш код). Мы последовали этому приглаше ­ нию и вставили требуемый код (строка 32). В нашем случае он состоит всего из одной команды. Эта команда присваивает регистру PORTB зна ­ чение регистра PORTD. Наша программа на языке СИ готова. Выполняясь многократно в бес ­ конечном цикле, команда присвоения постоянно переносит содержимое порта PD в порт РВ, реализуя тем самым наш алгоритм. 5.3. Переключающийся светодиод Постановка задачи Как уже говорилось, предыдущая задача настолько проста, что реше ­ ние ее средствами микропроцессорной техники лишено всякого смысла. Усложним немного задачу. Заставим переключаться светодиод при нажатии кнопки. Новая задача может звучать так: «Разработать устройство управления одним светодиодным инди ­ катором при помощи одной кнопки. При каждом нажатии кнопки светодиод должен поочередно включаться и отключаться. При пер ­ вом нажатии кнопки светодиод должен включиться, при следующем отключиться и т. д.».

RkJQdWJsaXNoZXIy MTExODQxMg==