Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
Шаг 5. Переходим непосредственно к разработке устройств и программ 239 этого сдвига единичный бит выйдет за пределы байта, создать новый единичный бит в крайней правой позиции. 4. Вывести содержимое рабочего регистра в порт РВ, предварительно проинвертировав его. 5. Закончить процедуру обработки прерывания. Программа на Ассемблере Текст возможного варианта программы на языке Ассемблер приведен в листинге 5.13. В программе встречаются несколько новых для нас опе раторов. Внимание. Используется новый для нас флаг — флаг глобального разрешения прерываний, который называется I. Мы уже упоминали этот флаг в Шаге 3. Флаг I, так же, как флаги С и Z, является одним из разрядов регистра SREG. Однако управление флагом I происходит совсем по-другому. На него не влияют ни арифметические, ни логические операции, а тем более операции сравнения. Для установки и сброса этого флага в системе команд предусмотрены две специальные команды (описаны ниже). Если флаг I сброшен, то все прерывания в микроконтроллере запрещены. Если флаг установлен, работа системы прерываний разрешается. Рассмотрим теперь по порядку все новые для нас операторы. .dseg _________________________________________________________ Оператор выбора сегмента памяти данных. До сих пор во всех преды дущих ассемблерных программах мы обязательно использовали оператор . cseg, который позволял нам выбирать программный сегмент памяти. Пора научиться работать и с другими сегментами. Следующий по значе нию после программного сегмента — это сегмент памяти данных, то есть сегмент ОЗУ. В программе (листинг 5.13) в строке 6 производится выбор именно этого сегмента. .byte _________________________________________________________ Оператор резервирования памяти. Это один из операторов, которые действуют в сегменте памяти данных. Оператор позволяет зарезерви ровать один или несколько байтов (ячеек ОЗУ) для того, чтобы затем использовать их в программе. Вы спросите: зачем это нужно? Основная цель резервирования — учет и распределение памяти. Если программист будет произвольно, по своему усмотрению, выби рать адреса ячеек ОЗУ для той либо иной задачи, то ему придется вни
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==