Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
avr лаб1.doc
Скачиваний:
34
Добавлен:
15.04.2015
Размер:
103.42 Кб
Скачать

Алгоритм

Разработка любой программы начинается с разработки алгоритма.

Алгоритм - это последовательность действий, которую должен произвести микроконтроллер, чтобы достичь требуемого результата. Для простых задач алгоритм можно просто описать словами. Для более сложных задач алгоритм рисуется в графическом виде.

В нашем случае алгоритм таков: После операций начальной настройки портов микроконтроллер должен войти в непрерывный цикл, в про­цессе которого он должен опрашивать вход, подключенный к нашей кнопке, и в зависимости от ее состояния управлять светодиодом.

Операции начальной настройки:

  • установить начальное значение для вершины стека микроконтроллера;

  • настроить порт В на вывод информации;

  • подать на выход РВ.О сигнал логической единицы (потушить светодиод);

  • сконфигурировать порт D на ввод;

  • включить внутренние нагрузочные резисторы порта D. Операции, составляющее тело цикла:

  • прочитать состояние младшего разряда порта PD (PD.O);

если значение этого разряда равно единице, выключить светодиод; если значение разряда PD.O равно нулю, включить светодиод; перейти на начало цикла.

Программа на Ассемблере

Для создания программ мы используем версию Ассемблера, предло­женную разработчиком микроконтроллеров AVR - фирмой Atmel. А также воспользуемся программным комплексом «AVR Studio», разработанным той же фирмой и предназначенным для создания, редактирования, трансляции и отладки программ для AVR на Ассемблере. Подробнее о программе «AVR Studio» мы поговорим в последней главе книги.

А сейчас наша задача - научиться создавать программы.

Изучение языка будет происходить следующим образом:

  • Приводится готовый текст программы для каждой конкретной задачи;

  • Описываются и комментируются все его элементы.

Текст возможного варианта программы, реализующий поставленную выше задачу, приведен в листинге 1.1.

Программа на Ассемблере представляет собой набор команд и комментариев (иногда команды называют инструкциями). Каждая команда занимает одну отдельную строку. Их допускается переме­жать пустыми строками. Команда обязательно содержит оператор, который выглядит как имя выполняемой операции.

Некоторые команды состоят только из одного оператора. Другие же команды имеют один или два операнда (параметра). Операнды записываются в той же строке сразу после оператора, через пробел. Если операндов два, их записывают через запятую. Так, в строке 6 программы записана команда загрузки константы в регистр общего назначения (РОН).

Она состоит из оператора idi и двух операндов temp и RAMED.

В случае необходимости перед командой допускается ставить так называемую метку.

Она состоит из имени метки, заканчивающимся двоеточием. Метка служит для именования данной строки программы.

Затем это имя используется в различных командах для обращения к помеченной строке.

При выборе имени метки необходимо соблюдать следующие правила:

  • имя должно состоять из одного слова, содержащего только латинские буквы и цифры;

  • допускается также применять символ подчеркивания;

  • первым символом метки обязательно должна быть буква или символ подчеркивания.

Строка 16 программы содержит метку с именем main. Метка не обязательно должна стоять в строке с оператором. Допускается ставить метку в любой строке программы. Кроме команд и меток, программа содержит комментарии.

Комментарий - это специальная запись в теле про­граммы, предназначенная для человека. Компьютер в процессе трансляции программы игнорирует все ком­ментарии. Комментарий может занимать отдельную строку, а может стоять в той же строке, что и ко­манда. Начинается комментарий с символа «точка с запятой». Все, что находится после точки с запятой до конца текущей строки программы, считается ком­ментарием.

Если в уже готовой программе вы поставите точку с запятой в начале строки перед какой-либо командой, то данная строка для транслятора как бы исчезнет. С этого момента транслятор будет считать всю эту строку комментарием. Таким образом, можно временно отключать отдельные строки программы в процессе отладки (то есть при поиске ошибок в программе).

Кроме операторов, в языке Ассемблер применяются псевдооперато­ры или директивы. Если оператор - это некий эквивалент реальной команды микроконтроллера и в процессе трансляции заменяется соответствующим машинным кодом, который помещается в файл результата трансляции, то директива, хотя по форме и напоминает оператор, но не является командой процессора.

Директивы (псевдооператоры)- это специальные вспомогательные коман­ды для транслятора, определяющие режимы трансляции и реализующие различные вспомогательные функции

В данной конкретной версии Ассемблера директивы выделяются особым обра­зом. Имя каждой директивы начинается с точки. Смотри листинг 1.1, строки с 1 по 5.

При написании программ на Ассемблере принято соблюдать особую форму записи:

  • программа записывается в несколько колонок (см. листинг 1.1);

  • аналогичные элементы разных команд принято размещать друг под другом;

  • самая первая (левая) колонка зарезервирована для меток;

  • если метка отсутствует, место в колонке пустует.

  • следующая колонка предназначена для записи операторов

  • затем идет колонка для операндов.

  • оставшееся пространство (крайняя колонка справа) предна­значено для комментариев.

В некоторых случаях, например когда текст команды очень длинный, допускается нарушать этот порядок. Но по возможности нужно оформлять программу именно так. Оформленная подобным обра­зом программа более наглядна и гораздо лучше читается. Поэтому привыкайте писать программы правильно.

Итак, мы рассмотрели общие принципы построения программы на Ассемблере. Теперь пора приступать к подробному описанию конкретной программы, приведенной в листинге 1.1. И начнем мы с описания входящих в нее команд.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]