Белов, А.В. Микроконтроллеры 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. Переключающийся светодиод Постановка задачи Как уже говорилось, предыдущая задача настолько проста, что реше ние ее средствами микропроцессорной техники лишено всякого смысла. Усложним немного задачу. Заставим переключаться светодиод при нажатии кнопки. Новая задача может звучать так: «Разработать устройство управления одним светодиодным инди катором при помощи одной кнопки. При каждом нажатии кнопки светодиод должен поочередно включаться и отключаться. При пер вом нажатии кнопки светодиод должен включиться, при следующем отключиться и т. д.».
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==