Алгоритм программы решения задачи представлен на рис. 5.1. В начале программы размещаются операторы, организующие требуемую структуру данных, а затем операторы решения задачи.
Запись кода в порт С
$3f
$6d
$06
$7d
$5b
$07
$4f
$7f
$66
$6f
Рекомендуется выбирать максимально возможный из доступных адресов SRAM
К начальному адресу
прибавляяется результат
вычитания или ноль
Рекомендуется выбирать максимально возможный из доступных адресов SRAM
Определение имен констант для хранения адресов кодов
Нет
Начало
Задание стека
задание адреса начала зарезервированных ячеек
Присвоение имен ячейкам SRAM
Настройка портов
Задание
уменьшаемого и вычитаемого
Задание
семисегментных кодов
Произвести
вычитание
Да
Результату
присвоить значение нуля
Тумблер
включен?
Определение
адреса ячейки с кодом результата
Из ячейки
выдать код
на индикацию
Рис. 5.1. Алгоритм программы для примера 5.1
Пример текста программы
Полученный алгоритм реализуется программой № 1. Один блок алгоритма может реализовываться несколькими командами.
sub r20,r18 ; вычесть вычитаемое результат остается в r20
rjmp vv
;******* Результату присвоить значение нуля *******
m2:
ldi r20,0 ;в r20 записать ноль
;******* Определение адреса ячейки с кодом результата *******
vv:
push zl ;сохранить zl в стеке
add zl,r20 ;сложить zl с результатом
ld r0,z ;семисегментный код результата переслать в r0
pop zl ;извлечь zl из стека
;******* Из ячейки выдать код на индикацию *******
out portc,r0 ;запись кода в порт С
rjmp m1
НАБОР И ОТЛАДКА ПРОГРАММ
Набор программы
Для ввода программы используется программа AvrStudio.
Для запуска программы запустите файл AvrStudio.exe. Появится основное диалоговое окно программы.
В верхней части программы находится меню, в нем надо выбрать Project–>New.
В появившемся окне выберите имя проекта (Project name),
место на диске, куда сохранять проект (Location),
а также тип проекта(Project type), щелкнув мышью на AVR assembler, затем щелкнув на кнопке OK.
Появится окно проектов (Project :), в котором находится дерево файлов. В него входят файлы, которые будут компилироваться, с расширением .asm (Assembler Files), а также дополнительные файлы библиотек (Other Files).
На ветви Assembler Files необходимо щелкнуть правой кнопкой мыши появится меню, в нем необходимо выбрать пункт Create New File.
В появившемся окне выбрать имя файла (Name), обязательно с расширением .asm и нажать кнопку OK.
В открывшемся окне проектов имя файла появится в дереве файлов отдельной ветвью. Его нужно перетащить, удерживая на нем правую кнопку мыши на ветвь Assembler Files. После этого, щелкнув правой клавишей мыши снова вызвать меню и выбрать пункт Параметры проекта (Project Settings). В появившемся окне AVR Assembler Options в пункте формат выходного файла (Output file format:) выбрать Intel Intellec 8/ MDS (Intel Hex), нажать OK.
Затем снова вернуться в окно проектов и, щелкнув правой кнопкой мыши на ветви другие файлы (Other Files) вызвать меню и выбрать пункт добавить файл (Add File), найти файл 8535def.inc и подключить его к проекту.
Необходимо отметить, что этот файл должен находиться в той же папке, что и asm файл, который создается, поэтому его лучше скопировать заранее из папки Programm files\ Atmel \ AVR Studio \ Appnotes., иначе это вызовет ошибку компиляции. Если все сделано правильно, то окно проектов должно выглядеть следующим образом:
Теперь щелкаем два раза на asm файле и в открывшемся окне набираем программу.
После того как программа набрана, нажимаем F7 и производим её компиляцию, при этом создается файл с расширением hex, который затем надо будет записать в микроконтроллер.
После компиляции появится окно Project Output, в котором указано, какой файл ассемблируется, используемый файл библиотеки, количество слов в программе и сообщение об отсутствии ошибок Assembly complete with no errors. Если есть ошибки, то в этом окне указывается тип ошибки, номер строки с ошибкой и в конце – общее число ошибок. Для их исправления необходимо вернуться к редактируемому файлу и их исправить, а затем снова откомпилировать программу.
AvrStudio позволяет не только компилировать программы, но и отлаживать их на этапе разработки. При этом AvrStudio эмулирует работу микроконтроллера, всех портов ввода/вывода, счетчиков/таймеров, прерываний, ШИМ и АЦП. Эмуляция работы программы позволяет рассмотреть её работу, как если бы она была записана в микроконтроллер.
Необходимо отметить, что можно эмулировать работу только программ, не содержащих ошибок. Поэтому перед эмуляцией AvrStudio произведет компиляцию программы и если есть ошибки то эмулировать (отладить) программу не удастся.
Отладка программы
Для отладки программы в папку сasm файломнеобходимоскопировать файл AT90S8535_Std.aio,который находится в папке Programm files\ Atmel \ AVR Studio \ IOSetup.
В меню Project выбрать пункт Build and run или нажать Ctrl + F7. Появится окно опции эмулятора (Simulation Options).
В пункте устройство (Device) нужно выбрать микроконтроллер AT90S8535, в пункте частота (Frequency), частоту 8 МГц, нажать кнопку OK.
После этого появится окно, в котором набиралась программа, но начало программы будет отмечено желтой стрелкой – это начало программы, выше идут директивы компилятора. При эмуляции работы программы необходимо видеть состояния регистров, портов ввода/вывода, процессора. В главном меню программы выбираем пункт просмотр (View), затем пункт регистры (Registers), далее пункты процессор(Processor), просмотр ввода/вывода (New IO View).
В меню View имеются и другие пункты, которые можно использовать, но в данном руководстве они не рассматриваются. Для наблюдения работы микроконтроллера в большинстве случаев достаточно только этих окон. Таким образом, после всех этих действий получится окно примерно такого вида:
Теперь можно приступить к запуску программы. AvrStudio позволяет запустить программу в реальном времени, в пошаговом режиме, до указателя.
В главном меню в пункте отладка (Debug), находятся все варианты запуска программы.
Reset – сброс на начало программы (желтая стрелка указателя показывает на начало),
Go – запуск в реальном времени (программа будет выполнятся до тех пор, пока не будет выбран пункт Break),
Step over – пошаговый режим (программа выполняется построчно, при этом останавливается после каждой команды, стрелка указывает на текущую команду),
Run to cursor – выполнять до курсора (программа выполняется до места отмеченного курсором в окне с редактируемой программой).
Во время выполнения программы можно наблюдать за состоянием регистров после каждой команды, тем самым проверяется правильность операций, производимых микроконтроллером.